看了《数学之美》第十章:PageRank,里面讲到
计算搜索结果的网页排名过程中需要用到网页本身的排名,这不成了“先有鸡还是先有蛋”的问题了吗?
破解这个怪圈的应该是布林。他把这个问题变成了一个二维矩阵相乘的问题,并用迭代的方法解决了这个问题。他们先假定所有网页的排名是相同的,并且根据这个初始值,算出各个网页的第一次迭代排名,然后再根据第一次迭代排名算出第二次的排名。他们两人从理论上证明了不论初始值如何选取,这种算法都能保证网页排名的估计值能收敛到排名的真实值。值得一提的是,这种算法不需要任何人工干预。
然后花了十几分钟写出了下面的链接权重分配代码,结果的确收敛。
# -*- coding: utf-8 -*-
from __future__ import division
T = 0.000000001
page_rank = [1.5, 1, 0.5, 0.5, 1.5]
page_links = [[0, 1, 1, 0, 0],
[1, 0, 1, 0, 1],
[1, 1, 0, 1, 1],
[0, 0, 1, 0, 1],
[0, 1, 1, 1