每天学一个算法--PageRank

📘 教案 21:PageRank(完整数学与算法机制)


一、问题背景

在一个包含大量网页的网络中,每个网页之间通过超链接相互连接。问题是:

如何评价一个网页的重要性?


直观但错误的思路

最简单的方法:

  • 被链接次数越多 → 越重要

但问题是:

  • 垃圾网页互相链接
  • 权重无法区分

核心改进思想

一个网页的重要性,取决于"指向它的网页的重要性"


二、图模型表示


将网页系统抽象为有向图:

G = (V, E)

  • 节点:网页
  • 边:超链接(A → B)

定义

设:

PR(v) = \\text{节点 v 的重要性}


三、PageRank 基本公式


核心递推关系:

PR(v) = \\sum_{u \\in In(v)} \\frac{PR(u)}{L(u)}


含义

  • (In(v)):所有指向 v 的节点
  • (L(u)):节点 u 的出度(它指向多少个页面)

解释

每个页面将自己的"权重"平均分给它指向的页面


四、随机游走模型(关键理解)


PageRank 可以解释为:

一个"随机用户"在网页之间不断点击链接


规则:

  • 在当前页面,随机选择一个链接跳转
  • 不断重复

那么:

页面被访问的概率 = PageRank 值


五、问题:收敛性与死循环


存在问题:


1️⃣ 无出边节点(Dead End)

例如:

text 复制代码
A → B
B → (无)

👉 权重会消失


2️⃣ 小圈子(Spider Trap)

text 复制代码
A → B → C → A

👉 权重被困住


六、引入阻尼因子(Damping Factor)


改进公式:

PR(v) = \\frac{1-d}{N} + d \\sum_{u \\in In(v)} \\frac{PR(u)}{L(u)}


参数说明

  • (d):阻尼系数(通常 0.85)
  • (N):节点总数

含义

用户行为:

  • 85%:点击链接
  • 15%:随机跳转

👉 解决:

  • 死节点
  • 小圈子

七、矩阵形式(严格表达)


设:

PR = M \\cdot PR

其中:

  • (M):转移矩阵

加入阻尼后:

PR = d M PR + \\frac{1-d}{N} \\mathbf{1}


👉 本质:

求一个"稳定分布"(特征向量问题)


八、求解方法(迭代法)


初始化:

PR\^{(0)} = \\left\[\\frac{1}{N}, \\dots, \\frac{1}{N}\\right

]


迭代:

PR\^{(k+1)} = d M PR\^{(k)} + \\frac{1-d}{N}


直到:

\|\|PR\^{(k+1)} - PR\^{(k)}\|\| \< \\epsilon


九、算法复杂度


每轮计算:

O(E)


总复杂度:

O(E \\cdot k)

(k 为迭代次数)


十、核心性质


1. 全局依赖

每个节点的值依赖全图


2. 递归定义

类似:

text 复制代码
重要性 = 别人对你的评价

3. 收敛性

在阻尼因子存在时:

必然收敛


十一、工程实现关键点


1️⃣ 稀疏矩阵优化

图通常很稀疏:

👉 用邻接表存储


2️⃣ 并行计算

每轮更新独立:

👉 可分布式计算


3️⃣ MapReduce / Spark 实现


十二、与其他算法的关系


算法 类型
BFS 局部搜索
Dijkstra 最短路径
PageRank 全局评分

👉 PageRank 是:

图上的"全局迭代优化算法"


十三、本质总结(严肃表达)


PageRank 通过构建随机游走模型,将网页重要性转化为稳态概率分布问题,并通过迭代计算得到全局一致的节点评分。


🔥 这一节的层级非常重要

你现在已经进入:

text 复制代码
图算法 → 概率模型 → 线性代数 → 工程计算
相关推荐
子琦啊2 小时前
【算法复习】滑动窗口(同向区间指针)
算法
啊我不会诶2 小时前
【自用复习】牛客每日一题2026.4.18 最大稳定数值
算法·深度优先
笨笨饿2 小时前
66_C语言与微控制器底层开发
linux·c语言·网络·数据结构·算法·机器人·个人开发
yong99902 小时前
双连杆机械臂阻抗控制仿真
算法·仿真
李可以量化3 小时前
Python之如何做出交易日历(上)
人工智能·算法·qmt·量化 qmt ptrade
会编程的土豆3 小时前
【数据结构与算法】新二叉树
数据结构·算法·二叉树
jerryinwuhan3 小时前
基于结构可控性的给水管网传感器布点选择算法
数据库·算法
南宫萧幕3 小时前
车辆控制基础:从 EKF 状态估计到非线性 MPC 轨迹跟踪的闭环实现
算法·matlab·汽车·控制·pid
点PY3 小时前
《高质量的实时直接体绘制算法》论文精读
算法