标签:des http io os ar java for 文件 sp
PageRank算法是Google的核心搜索算法,在所有链接型文档搜索中有极大用处,而且在我们的各种关联系统中都有好的用法,比如专家评分系统,微博搜索/排名,SNS系统等。
PageRank算法的依据或思想:
1,被重要的网页链接的越多(外链) ,此网页就越重要
2,此网页对外的链接越少越重要
这两个依据不能是独立的,是需要一起考虑的。但是问题来了,我们怎样判断本网页的外链是很重要的呢?循环判断?那不死循环了?
解决办法是:给定阀值,让循环在此临界处停止。
首先,我们准备了7个测试网页,这几个网页的链接情况如下:
i\j | test1 | test2 | test3 | test4 | test5 | test6 | test7 |
test1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
test2 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
test3 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
test4 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
test5 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
test6 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
test7 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
表格的意思是 test1链接到 test2,test3 ....依次类推 ,我们大致的根据上面两个原则可以猜一下,哪个将会是排名第一的网页?哪个最不重要?
貌似是test4和test6?
下面我们看看怎样用java实现PageRank算法。
首先创建html实体表示类,代码如下:
核心算法代码如下:
直接运行算法类,得到的结果如下:
D:\workspace\Test\WebRoot\htmldoc\test4.html : 1.102472450686259
D:\workspace\Test\WebRoot\htmldoc\test5.html : 1.068131842865856
D:\workspace\Test\WebRoot\htmldoc\test2.html : 1.0249590169406457
D:\workspace\Test\WebRoot\htmldoc\test3.html : 1.0046891014946187
D:\workspace\Test\WebRoot\htmldoc\test1.html : 0.9943895104008613
D:\workspace\Test\WebRoot\htmldoc\test7.html : 0.9051236225340915
D:\workspace\Test\WebRoot\htmldoc\test6.html : 0.9002344550746025
此算法可以无限改造,以满足自身要求。
另外说一句:这个table咋编辑成这幅德行了?改都改不回来。
By 阿飞哥 转载请说明
标签:des http io os ar java for 文件 sp
原文地址:http://www.cnblogs.com/hankliu/p/4013754.html