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 依然是那个奠定基石的经典思想!🕸️

相关推荐
2401_846341651 分钟前
C++动态链接库开发
开发语言·c++·算法
ZPC821010 分钟前
【无标题】
人工智能·pytorch·算法·机器人
2301_7644413312 分钟前
使用python构建的STAR实验ΛΛ̄自旋关联完整仿真
开发语言·python·算法
Rainy Blue88315 分钟前
前缀和与差分(蓝桥杯高频考点)
数据结构·算法·蓝桥杯
Dfreedom.15 分钟前
机器学习经典算法全景解析与演进脉络(无监督学习篇)
人工智能·学习·算法·机器学习·无监督学习
421!21 分钟前
ESP32学习笔记之GPIO
开发语言·笔记·单片机·嵌入式硬件·学习·算法·fpga开发
智算菩萨29 分钟前
【How Far Are We From AGI】4 AGI的“生理系统“——从算法架构到算力基座的工程革命
论文阅读·人工智能·深度学习·算法·ai·架构·agi
福赖32 分钟前
《算法:生产车间》
算法
空空潍40 分钟前
LeetCode力扣 hot100一刷完结
算法·leetcode
leaves falling43 分钟前
搜索插入位置(第一个≥target的位置)
算法