关注微信公众号:数学建模BOOM,回复“page”,获取本文的matlab代码文件。
以下示例演示如何使用 PageRank 算法对多个网站进行排名。
在 PageRank 算法的每一步中,每个网页的得分都会根据以下公式更新:
r = (1-P)/n + P*(A'*(r./d) + s/n);
创建一个图形,用于说明每个节点如何将其 PageRank 得分赋予图形中的其他节点。
s = {'a' 'a' 'a' 'b' 'b' 'c' 'd' 'd' 'd'};t = {'b' 'c' 'd' 'd' 'a' 'b' 'c' 'a' 'b'};
G = digraph(s,t);labels = {'a/3' 'a/3' 'a/3' 'b/2' 'b/2' 'c' 'd/3' 'd/3' 'd/3'};
p = plot(G,'Layout','layered','EdgeLabel',labels);
highlight(p,[1 1 1],[2 3 4],'EdgeColor','g')
highlight(p,[2 2],[1 4],'EdgeColor','r')
highlight(p,3,2,'EdgeColor','m')
title('PageRank Score Transfer Between Nodes')
创建并绘制一个有向图,其中包含六个表示虚假网站的节点。
s = [1 1 2 2 3 3 3 4 5];
t = [2 5 3 4 4 5 6 1 1];
names = {'http://www.example.com/alpha', 'http://www.example.com/beta', ...
'http://www.example.com/gamma', 'http://www.example.com/delta', ...
'http://www.example.com/epsilon', 'http://www.example.com/zeta'};
G = digraph(s,t,[],names)
plot(G,'Layout','layered', ...
'NodeLabel',{'alpha','beta','gamma','delta','epsilon','zeta'})
计算该图形的 PageRank 中心度得分。使用 0.85 的点进概率(或称为阻尼因子)。查看每个网页的 PageRank 得分和级别信息。
pr = centrality(G,'pagerank','FollowProbability',0.85)
G.Nodes.PageRank = pr;
G.Nodes.InDegree = indegree(G);
G.Nodes.OutDegree = outdegree(G);
G.Nodes
加载 mathworks100.mat 中的数据,并查看邻接矩阵 A。
load mathworks100.mat
spy(A)
G = digraph(A,U)
plot(G,'NodeLabel',{},'NodeColor',[0.93 0.78 0],'Layout','force');
title('Websites linked to https://www.mathworks.com')
本文转自mathwork帮助中心