建建建设网站,百度一下百度一下百度一下,苏州注册公司多少钱,做景观私活的网站互联网上有数百亿个网页#xff0c;可以分为这么几类#xff1a;不含有用信息的#xff0c;比如垃圾邮件#xff1b;少数人比较感兴趣的#xff0c;但范围不是很广的#xff0c;比如个人博客、婚礼公告或家庭像册#xff1b;很多人感兴趣的并且十分有用的#xff0c;比…互联网上有数百亿个网页可以分为这么几类不含有用信息的比如垃圾邮件少数人比较感兴趣的但范围不是很广的比如个人博客、婚礼公告或家庭像册很多人感兴趣的并且十分有用的比如社交网站、新闻网站或某个公司的网站。
如此大量的网页对搜索引擎来说是个问题因为搜索结果可能会有百万个甚至千万个。比如你想访问“知乎”但是不知道它具体的URL这时你会在搜索框里输入“知乎”两个字假设搜索结果有几百万条那么最热门的那一条或者说“最正确”的那一条该如何来确定呢
一个比较有效的方法是数inlinks以知乎为例数有多少个链接指向它。PageRank就是基于这种链接分析(link analysis)的算法。 PageRank计算过程示例
假设有三个网页他们的结构如下
对于网页C来说它的PageRank表示为PR(C)则有。因为对于C来说它的inlinks来自于A和B。而A有两个指向外部的链接指向C的占其中的二分之一。同理对于
A来说有 PR(A)PR(C)PR(B)PR(A)2
假设每个网页的初始值为$\frac{1}{3}$,则经过几次迭代后PageRank会收敛到某个值。过程如下
初始值 PR(A)13,PR(B)13,PR(C)13
第一次迭代 PR(A)PR(C)0.33,PR(B)PR(A)20.17,PR(C)PR(A)2PR(B)0.3320.330.5
。注意利用上一次迭代的值进行计算
第二次迭代 PR(A)0.5,PR(B)0.17,PR(C)0.3320.170.33
第三次迭代 PR(A)0.33,PR(B)0.25,PR(C)0.42
第四次迭代 PR(A)0.42,PR(B)0.21,PR(C)0.42
第n次迭代...
经过更多次的迭代后PR值收敛在 PR(A)0.4,PR(B)0.2,PR(C)0.4
PageRank的矩阵表示及计算过程 以下是python示例
import numpy as np# 确定网页图的结构
m int(input(网页的总个数))
map_page [[-1 for i in range(m)] for j in range(m)]
map_page[0][1] 1
map_page[0][2] 1
map_page[1][3] 1
map_page[2][0] 1
map_page[2][1] 1
map_page[2][3] 1
map_page[3][2] 1Pr np.ones((m,))/m
print(原始页面重要性初始化\n)
print(Pr)n int(input(经过多少次迭代))
for k in range(n):new_Pr [0 for i in range(m)]d [0 for i in range(m)]for i in range(m):for j in range(len(map_page[i])):# 统计第i个节点的出度if map_page[i][j] 1:d[i] 1for i in range(m):for j in range(len(map_page[i])):if map_page[j][i] 1:new_Pr[i] Pr[j]/d[j]print(f经过{k1}次迭代以后的结果为\n)Pr new_Pr.copy()print(Pr)print(f经过{n}次迭代以后的结果为\n)
print(Pr)