作者 | 程序员小吴 从初学者的角度学习算法,以动画的形式呈现解题的思路。

来源 | 五分钟学算法

佩奇排名介绍

佩奇排名是根据页面之间的链接结构计算页面的值的一种算法。下面我们通过动画来理解进行计算的具体流程。

假设一个正方形表示一个 WEB 页面,一个箭头表示一个页面之间的链接。

此图表明下面 3 页包含指向上面 1 页的链接

在佩奇排名算法中,网页指向的链接越多,页面被确定为越重要。

因此,在这里,确定首页最重要。

确定首页最重要

实际上,每个页面的重要性都是通过计算来量化的。

基本的计算方法思想

1.未链接的页面分数为 1

未链接的页面分数为 1

2.有链接的页面得分为正在链接的页面的总得分

有链接的页面得分为正在链接的页面的总得分

3.当有多个网页的链接时,链接分数均匀分布

链接分数均匀分布

4.来自高度链接网页的链接具有很高的价值


该图中心页面有三个独立页面指向它的链接,所以它的分数是 3 。

首页有一个很大的分数,因为链接是从分数为 3 的页面指向它的。


在动画中的六个页面中,判断最上面的页面是最重要的页面----这是佩奇排名的基本思想。

基本的计算方法思想的循环问题



如果按照顺序来计算每个页面的分数时,那么就会出现问题:以这种方式计算,它将无限循环,并且在循环中的页面得分在任何地方都会很高。



循环的问题可以通过“随机游走模型”的计算方法来解决。

随机游走模型

以小猪佩奇浏览网页为例。

小猪佩奇开始访问「五分钟学算法」中有趣的页面,那么从这个左下角页面开始。



它们跟随一个链接并移动到另外的一个页面,看了一些之后,发现不敢兴趣了,这样就停止了浏览。

然后,又一天,它在小吴的推荐下,在完全不同的页面进行浏览,跟随一个链接并移动到另外的一个页面,一旦失去兴趣就停止浏览。



像这样,重复从某个页面开始浏览,移动几页后便停止的操作,如果从互联网空间一侧进行观察,就像网页浏览的人:重复移动页面几次后传送到一个完全不同的页面。

量化随机游走模型

假设 1 - α 代表选择当前页面中的一个链接的概率。

α代表该人将传送到其他页面的概率。



现在用随机游走模型 处理上述的循环问题。


如果总页面访问次数达到1000次之后,使用百分比进行表示:那么这个值就表示“在某个时间点查看页面的概率”。


更实用的计算方法

如图所示,现在来尝试计算复杂的链接网络中每个页面的分数。


现在均匀设置分数,使总分加起来为 1 。而后根据网页浏览者的移动,来计算每个页面的概率。

移动 n次时出现在 A 中的概率表示未 PAn,移动 n 次时出现在 B 中的概率表示未 PBn

举一个例子,在移动 1 次之后求在 A 的概率 PA 1


在 C 选择移动的概率是 1-α

其中,移动到 A 的一种场景是,C 中的佩奇选择了移动而不是传送。另外,这里选择了 A 而不是 B 作为目的地。

并且,根据上面的当有多个网页的链接时,链接分数均匀分布这条规则,从 A 或 B 选择 A 的概率是 0.5 。


因此,从 C 移动到 A 的概率是 PC0 ✖️ (1-α) ✖️ 0.5

A 被选为传送目标的概率是 0.25

A 被选为传送目标的概率是 0.25 ,根据前面的理论:在 A、B、C、D 中小佩奇选择传送的概率为 α。因此,通过传送移动到 A 的概率为 α ✖️ 0.25。  
所以,移动一次后在 A 的概率为       
PA1 = PC0 ✖️ ( 1 - α ) ✖️ 0.5  +  α ✖️ 0.25

其中 PC0 = 0.25 , α = 0.15,代入计算后 PA1 = 0.14375

这样,通过计算后 B 、 C 、D 页的概率也更新了。

B 、 C 、D 页的概率也更新了

上面在移动 1 次之后这四个页面的概率更新情况,根据上述相同的方法计算 2 次后小佩奇浏览在每个页面的概率。

移动 2 次后

同样的,经过大量的移动,在每个页面上的概率逐渐趋于固定值。当数值固定是,计算也就完成了。


End

佩奇排名就是这样一种通过访问概率代替链接的权重来计算的机制。

征稿

推荐阅读

  • 用“AI”给吴秀波测面相,发现……

  • 任正非:人工智能就是计算机和统计学

  • 程序员一毕业就年薪 110 万竟然是靠……

  • 程序员锁死服务器失踪,公司解散 600 万项目彻底黄了!

  • 关于云原生,这是最详细的技术知识

  • 一年省下1000亿? 原来零售玩的是闷声发大财

  • 不难!月薪 50K大牛,悉心整理程序员必备技能!

  • 用Python全自动下载漂亮小姐姐的抖音视频!

  • 用Python做一款俄罗斯方块游戏

你知道“啥是佩奇”,却不一定了解佩奇排名算法相关推荐

  1. python画图小猪佩奇_python 画个小猪佩奇

    不知道大家小时候有没有学习过logo语言,就是操纵一只小王八,来画各种图案.博主小学微机课就学习了这个,最近发现python的turtle包就是logo语言,所以画个小猪佩奇和大家分享. 代码来自知乎 ...

  2. 佩奇:产品经理要一个佩奇,不知道啥是佩奇的开发该怎么办?

    继"小猪佩奇身上纹,从此哥是社会人"的梗火了一把后,小猪佩奇又火了.上次让你笑,这次让你哭. 下面刷爆朋友圈的<啥是佩奇>5分钟微电影,强烈推荐还没有看过的看一下. c ...

  3. 小猪佩奇python_python3 案例分享--小猪佩奇

    python3 案例分享--小猪佩奇: 主要分为10个部分:鼻子.头.耳朵.眼睛.腮.嘴巴.身体.手臂.脚和尾巴,最后main()主函数调用运行,下面看下具体代码. 按先后顺序来划分, 1.鼻子源码, ...

  4. python海龟绘图小猪佩奇_宝宝爱看小猪佩奇,很简单,让我们用python搞定它

    现在很多宝宝喜欢看小猪佩奇,今天就教大家用python的海龟画图画一个乖巧萌萌的小猪佩奇,引导对编程产生浓浓 的兴趣. 画图前引导 1.让我们打开百度,输入python进入python官网 2.在官网 ...

  5. 啥是佩奇?打造Android界佩奇

    一.前言 前段时间被"啥是佩奇"短片感动了一把,在网络上也掀起了一阵热潮,老爷子用自己的焊铁技术为孩子打造了别样的佩奇,今天用我那浅薄的知识打造Android佩奇. 二.思路: 1 ...

  6. 啥是佩奇?Python3大战小猪佩奇

    啥是佩奇最近火了 啥是佩奇?乍一听很好笑,但笑完之后又很心酸. 什么是佩奇,这个问题并不只有影片中的李玉宝奇怪,可能我们身边的父母和老人都有过这种类似的问题. 小时候,爸爸妈妈是我们的港湾. 长大后, ...

  7. python画图小猪佩奇_宝宝爱看小猪佩奇,很简单,让我们用python搞定它

    现在很多宝宝喜欢看小猪佩奇,今天就教大家用python的海龟画图画一个乖巧萌萌的小猪佩奇,引导对编程产生浓浓 的兴趣. 画图前引导 1.让我们打开百度,输入python进入python官网 2.在官网 ...

  8. 小猪佩奇python_python画个小猪佩奇

    #!/usr/bin/python #-*- coding: utf-8 -*-import turtleast def nose(x,y):#鼻子 t.pu() t.goto(x,y) t.pd() ...

  9. 用java画一个小猪佩奇_python 画个小猪佩奇

    #!/usr/bin/python#-*- coding: utf-8 -*- importturtle as tdef nose(x,y):#鼻子 t.pu() t.goto(x,y) t.pd() ...

最新文章

  1. 架构师成长系列 | 云原生时代的 DevOps 之道
  2. url充定向 html转义,html、javascript、url特殊字符的转义诠释及使用方法详解
  3. 【GPU】nvidia-smi输出内容释义及使用
  4. spring-retry小结
  5. python的高级特性3:神奇的__call__与返回函数
  6. 【已解决】报异常:java.lang.ArithmeticException: / by zero
  7. 监理延期 验收工程款制约三方
  8. MICAPS系统中云图数据转换为位图的实现(转)
  9. “私域”和“会员制”有什么区别?
  10. 酒店管理系统(功能结构图、用例图、状态图)
  11. 人类高质量程序员电脑配置(持续更新)
  12. uni.app开发物联网小程序
  13. 机器视觉之工业摄像机知识点(二)
  14. 勒索病毒2019年常见的后缀有ITLOCK/AOL/VC/phobos/ETH/x3m/qwex/H
  15. oracle数据库生僻字 问号,有关生僻字的文章推荐10篇
  16. Python爬取猫眼「碟中谍」全部评论
  17. Linux小白想成为007,先会用“John the Ripper工具”
  18. cc2530裸机编程系列笔记1--定时器Timer1模模式的程序设计
  19. 噁二唑和三唑衍生物(PXZ-OXD, 2PXZ-OXD,2PXZ-TAZ,PXZ-TAZ)
  20. 基于vlc的unity3d vr视频播放器开发,360度全景视频

热门文章

  1. TrayIcon 类 添加系统托盘不显示托盘图标
  2. JavaScript中正则表达式学习(一)
  3. 一张图带你了解 Spring Cloud 微服务架构!
  4. reset_index(drop=True)
  5. 操作系统知识点:全面
  6. 网格的铺设问题——骨牌
  7. php 网站内容采集器 Snoopy
  8. 2017-02-20 注册.Net Framework4.0
  9. 客户端如何连接 DataSnap Server 调用服务的方法
  10. [置顶] 单例模式lua实现