zoukankan      html  css  js  c++  java
  • 同步图计算实现pageRank算法

    pageRank算法是Google对网页重要性的打分算法。

    一个用户浏览一个网页时,有85%的可能性点击网页中的超链接,有15%的可能性转向任意的网页。pageRank算法就是模拟这种行为。

    Rv:定点V的pageRank

    Lv:定点V的出度(出边的条数)

    B(u):定点u的入邻居集合

    d:点击超链接的概率

    N:总定点个数

    当N非常大时,数据的精度可能不够,所以公式进行变换,两边同时扩大N倍。

    最后公式变为

    Rv:定点V的pageRank*N

    Lv:定点V的出度(出边的条数)

    B(u):定点u的入邻居集合

    d:点击超链接的概率

    N:总定点个数

    初始化:所有定点的pageRank=1;

    迭代:用上述公式迭代直至收敛。

    引用论文:

    “Pregel: a system for large-scale graph processing.”
    Grzegorz Malewicz, Matthew H. Austern, Aart J. C. Bik, et al.
    SIGMOD 2010.

    开源实现: Apache Giraph, Apache Hama

    顶点算法通常步骤:

    1、接收上个超步发出的消息

    2、计算当前定点的值

    3、向邻居发送消息

    double sum = 0.0;
    for (每一个入邻居) {
        sum += 入邻居传递的值;
    }
    pagerank = 0.15 + 0.85 * sum;

    终止条件是所有顶点的值都不再变化。

  • 相关阅读:
    JAVA日期与时间
    CSS的重点知识
    java使用深度优先遍历算法的算法题
    使用python命令行参数的例子
    JAVA中的BigInteger与BigDecimal类功能强大
    软件工程第一次作业
    ORACLE数据库知识点整理
    看懂PL/SQL执行计划
    Oracle Hints详解
    oracle创建用户、授权及角色管理
  • 原文地址:https://www.cnblogs.com/shizhh/p/4517379.html
Copyright © 2011-2022 走看看