进入到图算法很多人最先接触的算法就是PageRank,PageRank是谷歌最开始创造并应用的,当初主要是为了用来评估构成网络中的每一个节点的重要性。
在正式介绍PageRank算法之前,我们先了解下网络图(The web graph)。网络图的特征就是:有向图,存在强连通区。在网络图中,网页作为图中的节点,超链接作为图中的边。
In(V)={w| w can reach V}
Out(V)={w| V can reach w}
对于上图来说
In(A)={A,B,C,E,G}
Out(A)={A,B,C,D,F}
在有向图中有2中类型,每一种图都可以通过这2种类型进行表示:
1. 强连接 :在有向图中,每个节点可以到达图中的任意一个节点。
In(A)=Out(A)={A,B,C,D,E}
2.有向无环图(DAG:directed acydic graph):图中不存在环,也就是如果从A可以到达B,那么B不能到达A。
强连通分量(strongly connected component)是节点S的集合,具备下面2个特征:
1.在S中的每一对节点都可以互相连通彼此;
2.在这种特性下,S是最大的集合,没有别的集合能够把S包含进去。
每一个节点都是一个SCC
在上述图中强连通分量:{A,B,C,G},{D},{E},{F}
定理:在每一个有向图中,在强连通分量上是一个有向无环图。
对于上图:
In(A)={A,B,C,D,E}
Out(A)={A,B,D,E,F,G,H}
上图就是一个巨大的强连通分量,不会存在第二个SCC。
在进行详细介绍PageRank的时候,先来思考下如下问题:
当一个页面有很多超链接的时候,是进来的链接重要还是出去的链接重要?显而易见,是进来的链接重要,那么问题又来了,进来的每一个链接的重要性都是一样的,还是说有所不同,如果不同怎么去衡量。在这里我们采用从更可信的地方出来的链接会更重要。同时网页的重要打分评估也是一个循环递归问题。
PageRank采用流式模型:
重要页面的投票会具有更高的权重。
如果页面的权重为,有条出边,那么每一个链接有拥有