使用OpenMP实现并分析PageRank算法

Introduction

Background

PageRank是Google创始人Larry Page和Sergey Brin在1996年创造的算法,起源于他们在斯坦福的一个关于开发有效搜索引擎的项目。
他们把万维网(World Wide Web)看作是一个巨大的文件集,在这个集中,文件与文件间有着复杂的超链接结构。因此万维网也可以抽象成一个巨大的有向图,节点代表各网页,而有向边则代表网页之间的超链接。如何通过节点在图中的位置来计算逼近它对应的重要性,是PageRank算法的主要目的。
在详细讨论pageRank算法以前,需要先阐述一些有关的基础概念与定义。首先,如何把万维网抽象成一个有向图对PageRank算法至关重要。因为,万维网的link structure可以确定每个节点在整个网络中的相对位置,而这个相对位置则为后续计算它的重要性提供了信息。
我们用节点(vertex)来代表网页,有向边(edge)来代表网页间的链接关系。由于网页之间的链接边(或 link)有两个方向,因此分别命名为forward link(outedge) 和 backlink(inedge)。下图示意了一个,由5个网页组成的网络的link structure:
图1:W.W.W as a directed graph

Principle

基于万维网link structure的这个结构特性,PageRank算法的核心思想应运而生。
既然网页之间相互链接,那么对于一个网页而言,每一个指向它的链接(inedge)都可以类似成一个学术引用,代表了它的重要性。但是与学术引用不同,网页并没有质量控制和发表成本等门槛。因此,如果只单用inedge的数量来表示重要性的话,所得出的重要性指标会很容易被操控篡改。仅仅是靠低成本地制造大量垃圾网页,使它们指向某一特定网页,便可以增加此网页的引用数量。
基于这个考虑,除了使用引用数目(inedge的数目)这个局部指标以外,还应该使用万维网的全局信息。因为涉及万维网巨大的整体结构,这部分信息难以被简单篡改,使得计算出的重要性更为robust。
由观察得知,一个网页的重要与否,取决于以下两个因素:

  • 与学术引用类似,此网页是否有许多入链接,即是否很多网页都指向它
  • 指向它的网页中,是否存在非常重要的网页。例如:某网页也许只有一个入链接,但此入链接是源自Wiki这样的权威网页
    PageRank正是综合地考虑了网页的入链接数目这个局部指标,以及入链接网页重要性这个全局指标,来逼近一个网页的真实重要性。为了达到这一综合,此算法使用了重要性传递(rank propagation through links)这一思想,让rank依照万维网的结构动态流动直到稳定,所得的最终结果便是网页最后的重要性(或 Rank)。
    ##PageRank Algorithm
    ###basics
    PageRank的定义
    R ( u ) = c ∑ v ∈ B u R ( v ) N v R(u)=c\sum_{v\in{B_u}}\frac{R(v)}{N_v} R(u)=cvBuNvR(v)
    u : u: u:某一个网页
    R : R: R:此网页对应的PageRank值(此公式算出的PageRank为naive版本)
    c : c: c:归一化系数
    B u : B_u: Bu:指向网页u的网页集合
    N u = ∣ F u ∣ N_u=|F_u| Nu=Fu
    F u : F_u: Fu:网页u指向的网页集合
    图2

如上图中:
B 2 = { 1 , 3 } B_2=\{1, 3\}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值