MATLAB课程老师布置的作业题。
关于PageRank的描述网上很多,就直接贴代码了。
首先是基本的方法,在有悬挂节点时就不成立
[n,n]=size(A);
x=ones(n,1);
sigma=0.001;
for i=1:n
P(i,:)=A(i,:)/sum(A(i,:));
end
r=0;
while((abs(r-x))>=sigma)
Pm=P'*x;
r=x;
for i=1:n
x(i)=sum(Pm(i,:));
end
end
改进:
[n,n]=size(A);
x=ones(n,1);
sigma=0.001;
for i=1:n
if sum(A(i,:))
P(i,:)=A(i,:)/sum(A(i,:));
else
P(i,:)=A(i,:);
end
end
r=0;
while((abs(r-x))>=sigma)
Pm=P'*x;
r=x;
for i=1:n
x(i)=sum(Pm(i,:));
end
end对邻接矩阵中的全0行进行判断。