PageRank 算法:互联网的“人气投票”

今天我们要聊的是一个改变了世界的算法------PageRank

它的名字里虽然有个"Page",但它不仅仅是指"网页 (Web Page)",更是以它的发明者之一、Google 的创始人 拉里·佩奇 (Larry Page) 的名字命名的。

正是这个算法,让 Google 在当年众多的搜索引擎中脱颖而出,成为了今天的巨头。

如果你完全不懂算法,没关系。想象一下,你正在竞选**"班级最受欢迎人物"**。

1. 核心思想:谁给我投票?

在 PageRank 出现之前,搜索引擎判断一个网页重不重要,主要是看**"关键词出现了多少次"**。

这就像是选班长,谁嗓门大、谁喊口号喊得多,谁就赢。这显然不合理,容易被作弊。

PageRank 引入了一个全新的逻辑:看谁给你投票!

在互联网上,一个链接 (Link) 就相当于一张选票

  • 如果网页 A 链接到了网页 B,就相当于 A 投了 B 一票。

但是,PageRank 的精髓在于:不是所有的票都一样值钱。


2. 两个关键规则

规则一:票数越多越好 (数量)

这很好理解。如果有很多网页都链接向你(给你投票),说明你很受欢迎,你的排名就应该靠前。

规则二:大佬的票更值钱 (质量)

这是 PageRank 最天才的地方。

  • 场景 A:隔壁班的小透明张三投了你一票。
  • 场景 B:全校公认的校草/校花投了你一票。

显然,场景 B 的这一票含金量更高!

在网页世界里也是一样:

  • 如果一个不知名的小博客链接了你,你的权重增加一点点。
  • 如果 Wikipedia (维基百科) 或者 Yahoo 链接了你,你的权重会暴涨。

总结一句话:一个网页的权重,取决于链接它的那些网页的权重。


3. 它是怎么算的?(举个栗子)

假设互联网上只有 4 个网页:A, B, C, D

为了演示,我们设定它们的链接关系如下:

  • A 链接 -> B, C, D (A 很大方,谁都投)
  • B 链接 -> A (B 只喜欢 A)
  • C 链接 -> A, B (C 喜欢 A 和 B)
  • D 链接 -> A, B, C (D 喜欢大家,除了自己)

初始状态 :大家权重一样,都是 1 分

第 1 轮结算 (简化版,不带阻尼系数)

  • A 的得分
    • B 全给它 (1/1) + C 给一半 (1/2) + D 给三分之一 (1/3)
    • 1 + 0.5 + 0.33 ≈ 1.83
  • B 的得分
    • A 给三分之一 (1/3) + C 给一半 (1/2) + D 给三分之一 (1/3)
    • 0.33 + 0.5 + 0.33 ≈ 1.17
  • C 的得分
    • A 给三分之一 (1/3) + D 给三分之一 (1/3)
    • 0.33 + 0.33 ≈ 0.67
  • D 的得分
    • A 给三分之一 (1/3)
    • 0.33 ≈ 0.33

(注:1.83+1.17+0.67+0.33 = 4.0,总分守恒)

第 2 轮结算 (用第 1 轮的分数继续算)

这时候,B 的权重变成了 1.17,它投给 A 的那一票更值钱了!

  • A 的得分
    • B(1.17)全给 + C(0.67)给一半 + D(0.33)给三分之一
    • 1.17 + 0.335 + 0.11 ≈ 1.615
  • B 的得分
    • A(1.83)给三分之一 + C(0.67)给一半 + D(0.33)给三分之一
    • 0.61 + 0.335 + 0.11 ≈ 1.055
  • C 的得分
    • A(1.83)给三分之一 + D(0.33)给三分之一
    • 0.61 + 0.11 ≈ 0.72
  • D 的得分
    • A(1.83)给三分之一
    • 0.61 ≈ 0.61

第 3 轮结算

  • A 的得分
    • B(1.055)全给 + C(0.72)给一半 + D(0.61)给三分之一
    • 1.055 + 0.36 + 0.20 ≈ 1.615 (趋于稳定)
  • B 的得分
    • A(1.615)给三分之一 + C(0.72)给一半 + D(0.61)给三分之一
    • 0.54 + 0.36 + 0.20 ≈ 1.10
  • C 的得分
    • A(1.615)给三分之一 + D(0.61)给三分之一
    • 0.54 + 0.20 ≈ 0.74
  • D 的得分
    • A(1.615)给三分之一
    • 0.54 ≈ 0.54

结论

你会发现,经过几轮迭代,A 始终是老大 (因为大家都投它),B 是老二 (因为老大 A 和老三 C 都投它)。

PageRank 算法就是这样一轮一轮地算,直到大家的权重都稳定下来。


4. 随机浏览者 (Random Surfer) 与 阻尼系数

你可能会问:"如果有一群网页互相链接,形成一个小圈子,权重岂不是会无限循环累加?"

或者:"如果一个网页只有进去的链接,没有出去的链接(黑洞),权重岂不是只进不出?"

为了解决这个问题,PageRank 引入了一个**"随机浏览者"**模型。

想象一个人在上网,他大部分时间是顺着链接点点点。

但是,他也有可能突然厌烦了 ,关掉当前页面,随机输入一个新网址飞走了。

这个"飞走"的概率,通常设定为 0.15 (也就是 15% 的概率飞走,85% 的概率继续点链接)。

这个 0.85 就叫做阻尼系数 (Damping Factor)

它保证了即使是小圈子或者黑洞,权重也会通过"随机跳转"分配给整个互联网的其他角落,避免了死循环。


5. PageRank 的优缺点

✅ 优点 (为什么它伟大?)

  1. 抗作弊:你很难伪造大量"高质量"的外部链接(大佬不会随便理你)。单纯堆砌关键词没用了。
  2. 全局视角:它利用了整个互联网的结构信息,而不是只看单个网页的内容。

❌ 缺点 (也要注意)

  1. 计算量大:互联网有几百亿个网页,算一次矩阵乘法非常耗时(虽然现在有各种优化)。
  2. 对新网页不友好:新网页刚诞生,没人链接它,就算内容再好,PageRank 也会很低(需要时间积累)。

6. 总结

PageRank 就是互联网世界的**"人脉评估系统"**:

  • 链接 = 投票
  • 权重 = 影响力
  • 你的人脉越广、给你背书的大佬越牛,你的地位就越高。

虽然现在的搜索引擎算法已经非常复杂(加入了用户行为、内容质量、AI 语义理解等),但 PageRank 依然是那个奠定基石的经典思想!🕸️

相关推荐
企业对冲系统官11 小时前
基差风险管理系统集成说明与接口规范
大数据·运维·python·算法·区块链·github
程序员-King.11 小时前
day134—快慢指针—环形链表(LeetCode-141)
算法·leetcode·链表·快慢指针
Swift社区11 小时前
LeetCode 376 摆动序列
算法·leetcode·职场和发展
高洁0111 小时前
AIGC技术与进展(1)
深度学习·算法·机器学习·transformer·知识图谱
未来之窗软件服务11 小时前
计算机等级考试——二叉树考点和坑——东方仙盟
算法·二叉树·计算机软考·仙盟创梦ide·东方仙盟
张张努力变强12 小时前
C++类和对象(一):inline函数、nullptr、类的定义深度解析
开发语言·前端·jvm·数据结构·c++·算法
且去填词12 小时前
深入理解 GMP 模型:Go 高并发的基石
开发语言·后端·学习·算法·面试·golang·go
Hcoco_me12 小时前
大模型面试题76:强化学习中on-policy和off-policy的区别是什么?
人工智能·深度学习·算法·transformer·vllm
企业对冲系统官12 小时前
大宗商品风险对冲系统统计分析功能的技术实现
运维·python·算法·区块链·github·pygame
ValhallaCoder12 小时前
Day48-单调栈
数据结构·python·算法·单调栈