搜索引擎的结果取决于两组信息:网页的质量信息,这个查询与每个网页的相关性信息。这里,我们介绍前一个。

1.PageRank算法原理

  算法的原理很简单,在互联网上,如果一个网页被很多其他网页所链接,说明它收到普遍的承认和信赖,那么它的排名就高。比如我们要找李开复博士,有100个人举手说自己是李开复,那么谁是真的呢?如果大家都说创新工厂的那个是真的,那么他就是真的。这就是所谓的民主表决。但是,那么多网页,我们不可能一样对待。有些可靠的链接,相应的权重就要大一点。但是麻烦来了,一开始的时候,我们怎么给网页设置初始权重呢?这有点类似“先有鸡还是先有蛋”的问题。破解这个问题的是谷歌的创始人之一:布林。他把问题变成一个二维矩阵相乘的问题,用迭代的方法解决这个问题。他们先假设所有网页的排名相同,然后算出哥哥网页第一次迭代排名,然后根据这个第一次的排名算第二次的....他们从理论上证明了无论初始值如何,这个算法保证网页的排名的估计值能收敛到排名的真实值。且算法不需要人工干预。由于互联网上的网页量很大,在计算矩阵乘法时,谷歌利用稀疏矩阵减少了计算量。并利用MapReduce实现并行计算自动化。

  网页排名算法的高明之处在于它把整个互联网当作一个整体来对待。这无意识中符合了系统论的观点。而当时大部分人只注意了网页内容和查询语句,忽略了网页之间的关系,就算发现了,也只是摸到一些皮毛,没有从根本上解决问题。这个算法对当时的搜索结果影响非常大。当时一般的搜索引擎,前十个只有三四个是相关的。而Google能达到七八条。现在的搜索引擎基本都能达到这一点。

2.延伸阅读:PageRank的计算方法

  假定向量

  

  为第一、第二、...第N个网页的排名。矩阵

  

  

  为网页之间连接的数目,amn代表第m个网页指向第n个网页的链接数。A已知,B未知,也是我们要计算的。

  假定Bi是第i次迭代的结果,那么Bi = A·Bi-1      (10.3)

  初试假设:所有网页的排名都是1/N,即

  

  

  对初试B0不断迭代,我们可以最终得到Bi,且收敛。当Bi和Bi-1的差距非常小时,我们可以停止迭代。

  此外,由于网页之间链接数量相比互联网的规模非常稀疏,因此计算网页的排名也需要对零概率或者小概率事件进行平滑处理。公式如下:

  

  其中N是互联网网页数量,是一个很小的常数,I是单位矩阵。

3.小节

  虽然今天的Google搜索比最初复杂、完善了很多,但PageRank算法依然是至关重要的。它在文献检索中的贡献是相当大的。

第十章 PageRank——Google的民主表决式网页排名技术的更多相关文章

  1. PageRank——Google的民主表决算法

    1.搜索和民主表决:      当大多数人认为一件事为真的时候,那么这件事就是为真:即搜索时,其他网页对认为此网页好时,那么此网页排名应该靠前   2.PageRank思想:      i.起源:   ...

  2. [Google Guava] 4-函数式编程

    原文链接 译文链接 译者:沈义扬,校对:丁一 注意事项 截至JDK7,Java中也只能通过笨拙冗长的匿名类来达到近似函数式编程的效果.预计JDK8中会有所改变,但Guava现在就想给JDK5以上用户提 ...

  3. PageRank 算法-Google 如何给网页排名

    公号:码农充电站pro 主页:https://codeshellme.github.io 在互联网早期,随着网络上的网页逐渐增多,如何从海量网页中检索出我们想要的页面,变得非常的重要. 当时著名的雅虎 ...

  4. 15款免费的 HTML5/CSS3 响应式网页模板

    如果你想快速制作出一个优秀的网站,网站模板一定是必不可少的.网页设计师和开发人员也可以从网站模板入手,学习先进的布局方式和编码风格.下面这个列表为大家挑选了15款免费的 HTML5/CSS3 响应式网 ...

  5. FROONT – 超棒的可视化响应式网页设计工具

    FROONT 是一个基于 Web 的设计工具,在浏览器中运行,使得各类可视化设计的人员都能进行响应式的网页设计,即使是那些没有任何编码技能的设计师.FROONT 使得响应式网页设计能够可视化操作,能够 ...

  6. HTML5+CSS3的响应式网页设计:自动适应屏幕宽度

    这几天都在修改博客上面的样式.本来用的是d83.0的模板.自己又修改了许多地方,其中自己修改的一些地方在手机里面显示的效果不是很理想,于是想改成自适应的效果.对CSS3不是特别的熟练,只能去网上找找案 ...

  7. bootstrap响应式网页设计的9条基本原则!

    bootstrap响应式网页设计是针对多屏幕问题的一个很好的解决方案,但从印刷的视角来看有点困难.没有固定的页面尺寸,没有毫米或英寸,没有任何的物理限制,无从下手. 为了desktop和mobile单 ...

  8. BootStrap学习之先导篇——响应式网页

    Bootstrap学习之前,要知道响应式网页的原理. 1.什么是响应式网页? 一个页面,可以根据浏览设备的不同,以及特性的不同,而自动改变布局.大小等.使得在不同的设备上上都可以呈现优秀的界面. 优点 ...

  9. 学习笔记1--响应式网页+Bootstrap起步+全局CSS样式

    一.学习之前要了解一些背景知识: 在2g时代,3g时代,4g时代,早期的网页浏览设备,功能机,智能机.(本人最喜欢的透明肌,和古典黑莓机) 1.什么是响应式网页? Responsive Web Pag ...

随机推荐

  1. final阶段140字评论1

    1.约跑app         此次演讲增加了摄像头演示的功能,所以界面可以看得更清楚,演示的比上次完整,流畅,约跑这个项目感觉对于我们颇有使用价值,大家现在都热爱跑                 ...

  2. c语言冒泡排序

    在C语言中,常用的排序算法有:冒泡排序.快速排序.插入排序.选择排序.希尔排序.堆排序以及归并排序等等. 冒泡排序基本概念:  依次比较相邻的两个数,将小数放在前面,大数放在后面. #include ...

  3. .NET HttpClient扩展

    /// <summary> /// HttpClient扩展类 /// </summary> public static class HttpClientExtensions ...

  4. Android View的onTouchEvent和OnTouch区别

    还是以自定义的TestButton为例. 我们可以通过重写onTouchEvent方法来处理诸如down move up的消息: public class TestButton extends But ...

  5. Codeforces 703B (模拟) Mishka and trip

    题目:这里 题意:n个城市,每个城市有个魅力值vi,首先,有n条路将这n个城市连成一个环,1号城市连2号城市,2号连3号****n号连1号城市,每条路的魅力值是其连接的两个城市 的魅力值的乘积,这n个 ...

  6. PHP单引号和双引号对待变量的不同

    如果一个变量放在单引号中,会被当作字符串来处理,如果是放在双引号中,则会被当值一个变量来处理(此时可以用 {}扩起来,也可以不用). <?php $txt = "hello, this ...

  7. MySQL数据库设置远程访问权限方法总结

    1,设置访问单个数据库权限 mysql>grant all privileges on test.* to 'root'@'%'; 说明:设置用户名为root,密码为空,可访问数据库test 2 ...

  8. Sharepoint创建List

    (一)在一个环境下创建site 首先在sharepoint 2013 Central Administration中run administration --Application Managemen ...

  9. css总集

    1 font-style normal 正常显示 italic 斜体 百分比 字体大小 font-size 像素 字体大小 font-family 字体名称 设置字体名称 letter-spacing ...

  10. DIV弹出和关闭新DIV

    代码用HTML+JS实现: 代码(用HTML+JS实现): <!doctype html> <html lang="UTF-8"> <head> ...