该项目的目标是还原出能够解决spider trap和dead end的完整的page rank算法,并且实现Block-Stripe Update算法。
读入的文件应当描述网页之间的互相链接关系,下称描述文件。描述文件应当满足以下条件:
- 按照utf-8编码;
- 分为n行,n为总记录个数。每行表示一条相互链接关系记录,格式为:
[SOURCE WEB ID]<TAB>[TARGET WEB INDEX]
; [SOURCE WEB ID]
相同的记录在描述文件中应当连续排列,中间没有被其他记录分割;- 同样的记录不能重复出现。
例如,对第2点而言:
30 1412
表示编号为30的网页中含有一个指向编号为1412的网页的链接。
对第3点而言:
...
30 1412
30 1411
40 1411
...
是一个合法的描述文件片段,而
...
30 1412
40 1411
30 1411
...
不是一个合法的描述文件片段,因为[SOURCE WEB ID]
为30的记录没有连续罗列,而是被[SOURCE WEB ID]
为40的记录分割了。
对第4点而言:
...
30 1412
30 1411
30 1412
...
不是一个合法的描述文件片段,因为出现了重复的30 1412
记录。
程序不会对描述文件是否合法进行验证,因此,若使用了不符合上述规则的描述文件,则可能得到错误的结果,或是令程序崩溃。
样例输入文件为Wikipedia dataset(WikiData.txt)。
可执行文件应输出每个网页的分值,共为m行,m为被报告的网页个数,在本项目中m=100,表示分值最高的前100个网页将会被按照分值从高到低的顺序被依次写入文件中。每行表示一个网页的分值,格式为:
[NodeID]<TAB> [Score]
例如:
30 0.3
表示编号为30的网页的pagerank分值为0.3.
输出文件名为result.txt
在目录下使用make命令可以编译出可执行文件,make run命令可以编译并运行可执行文件。
make run命令可以添加参数,以指示使用哪个数据集,数据集需要放在dataset文件夹中。例如,使用mydata.txt作为输入,可以在工程根目录下使用:
make run DataFile=mydata.txt