现在的位置: 首页 > 综合 > 正文

第1周书面作业

2016年08月28日 ⁄ 综合 ⁄ 共 1334字 ⁄ 字号 评论关闭

1 参考根据幻灯片中第9页所给出的“4网页模型” ,现假设有A,B,C,D,E五个网页,其中 
1)A网页有链接指向B,C,D,E 
2)B网页有链接指向A,D 
3)C网页有链接指向A,D 
4)D网页有链接指向C 
5)E网页有链接指向A,C 
A 请写出这个网页链接结构的Google矩阵,目测你认为哪个页面的重要性(PR值)最高? 
B(本题可选)手动或编程计算这5个页面的PR值,可以使用任何你熟悉的编程语言,欢迎在论坛上晒自己的程序和结果 

C(本题可选)指出当页面较多的时候,计算PR的主要困难在什么地方,Map-Reduce是怎么解决这个难题的? 


A、Google矩阵: { { 0, 0.5, 0.5, 0, 0.5 },
                            { 0.25, 0, 0, 0, 0 },

                            { 0.25, 0, 0, 1, 0.5 },
                            { 0.25, 0.5, 0.5, 0, 0 },

                           { 0.25, 0, 0, 0, 0 } }

                           目测C的的重要性最高,横向取值最高

B、public class PageRankTest {

public static void main(String[] args) {
double[][] S_PageRank = { { 0, 0.5, 0.5, 0, 0.5 },
{ 0.25, 0, 0, 0, 0 }, { 0.25, 0, 0, 1, 0.5 },
{ 0.25, 0.5, 0.5, 0, 0 }, { 0.25, 0, 0, 0, 0 } };
double[][] q_PageRank = { { 1 }, { 1 }, { 1 }, { 1 }, { 1 } };
double[][] U_PageRank = { { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1, 1 } };
double a = 0.85;
Matrix S = new Matrix(S_PageRank);
Matrix U = new Matrix(U_PageRank);
Matrix q = new Matrix(q_PageRank);
Matrix G = new Matrix(5, 5);
// 计算出G
G = S.times(a).plus(U.times((1 - a) / S.getRowDimension()));
Matrix temp = q;
q = G.times(q);
for (int j = 0; j < q.getRowDimension();) {
if (Math.abs(temp.get(j, 0) - q.get(j, 0)) <= 1e-6) {
if (j == 4) {
q.print(22, 20);
}
j++;
} else {
temp = q;
q = G.times(q);
j = 0;
}
}
}

}

答案:

  1.21039926628885430000

  0.40720967740706520000

  1.68063666997949720000

  1.29454470891752170000

  0.40720967740706520000


C:计算PR的主要困难:计算大量网页PR值,计算量太大,无法用一台计算机计算出来。

  Map-Reduce是怎么解决这个难题的:将大量的计算任务分散到各个节点计算,然后进行汇总,然后循环多次上述过程,得到最后的结果。

抱歉!评论已关闭.