PageRank算法实验报告一、算法介绍PageRank是Google专有的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。它由LarryPage和SergeyBrin在20世纪90年代后期发明。PageRank实现了将链接价值概念作为排名因素。PageRank的核心思想有2点:1.如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是pagerank值会相对较高;2.如果一个pagerank值很高的网页链接到一个其他的网页,那么被链接到的网页的pagerank值会相应地因此而提高。若页面表示有向图的顶点,有向边表示链接,w(i,j)=1表示页面i存在指向页面j的超链接,否则w(i,j)=0。如果页面A存在指向其他页面的超链接,就将A的PageRank的份额平均地分给其所指向的所有页面,一次类推。虽然PageRank会一直传递,但总的来说PageRank的计算是收敛的。实际应用中可以采用幂法来计算PageRank,假如总共有m个页面,计算如公式所示:r=A*x其中A=d*P+(1-d)*(e*e'/m)r表示当前迭代后的PageRank,它是一个m行的列向量,x是所有页面的PageRank初始值。P由有向图的邻接矩阵变化而来,P'为邻接矩阵的每个元素除以每行元素之和得到。e是m行的元素都为1的列向量。二、算法代码实现PageRank算法代码:clearG=[000101;100000;010000;011000;001000;001010];%设置邻接矩阵p=0.85;%阻尼系数d=sum(G);%求每列的和[n,n]=size(G);%网页数量,矩阵的维数D=diag(1./d);%产生对角向量e=ones(n,1);%生成都是1的行向量z=zeros(n,1);A=p*G*D+(1-p)/n*e*e';delta=0.0001;x=rand(n,1);%设置初始值为随机数whilemax(abs(x-z))delta;%设置精度z=x;x=A*x;end;disp(x)%输出每个节点的pagerank值三、心得体会在完成算法的过程中,我有以下几点体会:1、在动手实现的过程中,先将算法的思想和思路理解清楚,对于后续动手实现有很大帮助。2、在实现之前,对于每步要做什么要有概念,然后对于不会实现的部分代码先查找相应的用法,在进行整体编写。3、在实现算法后,在寻找数据验证算法的过程中比较困难。作为初学者,对于数据量大的数据的处理存在难度,但数据量的数据很难寻找,所以难以进行实例分析。