0

在wikipedia上有一个 Googles' PageRank 的实现:

% Parameter M adjacency matrix where M_i,j represents the link from 'j' to 'i', such that for all 'j' sum(i, M_i,j) = 1
% Parameter d damping factor
% Parameter v_quadratic_error quadratic error for v
% Return v, a vector of ranks such that v_i is the i-th rank from [0, 1]

function [v] = rank(M, d, v_quadratic_error)

N = size(M, 2); % N is equal to half the size of M
v = rand(N, 1);
v = v ./ norm(v, 2);
last_v = ones(N, 1) * inf;
M_hat = (d .* M) + (((1 - d) / N) .* ones(N, N));

while(norm(v - last_v, 2) > v_quadratic_error)
        last_v = v;
        v = M_hat * v;
        v = v ./ norm(v, 2);
end

endfunction

我无法弄清楚 quadratic_error 的用途。它没有在维基百科上描述,也没有在文章的算法规范中描述。

4

1 回答 1

1

看起来这是一个收敛测试。当L 2与 之间的差不超过 的值while时,循环结束。vlast_vv_quadratic_error

这里有一点解释。首先,注意它M_hat是一个矩阵并且v是一个向量。while循环替换为v乘积M_hat * v(标准化为单位向量)。当v一次迭代引起的变化足够小时,循环结束。这就是“收敛”在这种情况下的含义。

这似乎是用于查找与矩阵的主要特征值相对应的特征向量的标准幂迭代M_hat循环(在这种情况下为)。在不了解整体算法的更多信息(我不打算研究)的情况下,我不能说为什么这个计算是有用的。

于 2012-12-20T03:09:03.940 回答