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

相关推荐
小白菜又菜2 小时前
Leetcode 1523. Count Odd Numbers in an Interval Range
算法·leetcode
你们补药再卷啦2 小时前
人工智能算法概览
人工智能·算法
cnxy1882 小时前
围棋对弈Python程序开发完整指南:步骤3 - 气(Liberties)的计算算法设计
python·算法·深度优先
AndrewHZ2 小时前
【图像处理基石】什么是光栅化?
图像处理·人工智能·算法·计算机视觉·3d·图形渲染·光栅化
小白菜又菜2 小时前
Leetcode 944. Delete Columns to Make Sorted
算法·leetcode
我找到地球的支点啦3 小时前
Matlab系列(006) 一利用matlab保存txt文件和读取txt文件
开发语言·算法·matlab
Dev7z3 小时前
基于Matlab实现GRACE卫星重力数据的全球水储量变化估算与分析
人工智能·算法·matlab
爱喝热水的呀哈喽4 小时前
11题目汇总
算法
三斗米4 小时前
Transformer入门:一文读懂《Attention Is All You Need》
算法·架构