• 同步图计算实现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;

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

  • 相关阅读:
    2017ecjtu-summer training # 9 HDU 4544
    2017ecjtu-summer training #6 Gym 100952D
    HDU 1241 DFS
    集训队选拔赛 day4
    Educational Codeforces Round 67 (Rated for Div. 2)
    Codeforces Round #566 (Div. 2)
    Codeforces Round #567 (Div. 2)
    Codeforces Round #568 (Div. 2)
    Codeforces Round #569 (Div. 2)
    牛客练习赛48
  • 原文地址:https://www.cnblogs.com/shizhh/p/4517379.html
Copyright © 2020-2023  润新知