`
javayestome
  • 浏览: 1005603 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于web直径的计算问题的解答:

阅读更多

今天看到博客中有一位网友提出了问题,如下:

梁老师,您好。我是通过走进搜索引擎这本书知道您的,这本书我也读了好几遍,就是在这个web直径的公式证明一直无法解决。找到您的博客,所说的方法就是利用可达性矩阵幂次方去做,但是水平有限,梁老师能不能给我一个证明过程,或者是推荐网上的证明页面。 ps:我也利用谷歌搜偶国外的,都没找到这个公式证明。我的邮箱是695950380@qq.com。谢谢。

来源:http://blog.csdn.net/pennyliang/archive/2007/02/24/1513312.aspx#1492642

PagePage之间的可达关系可以用有向图来描述,我们举一个具体的例子(Page可以自己指向自己,因此可以包含自反关系,但为了简单起见,例子中不含这种自反关系)

写成矩阵形式如下

则直接可达,路径为1的关系有,<1,2>,<2,3>…,矩阵中元素和(含1的个数)=5

路径为2的关系有<1,3>,<1,5>,<2,2>…,矩阵中元素和=5

依次计算下去。

由于存在<2,3>,<3,2>这种情况,因此<1,4>的路径可以是3,5,7等等,这种情况只需要取最短的3即可(可能有更好的方法,我没有细致考虑,应该会有让计算快速收敛的更好方法)。同时如果不断求乘积的过程中,可达关系均为已经出现过的,或者均为0的情况下,则计算终止。

最后,计算总的路径数:

同时计算总的具有可达关系的关系数总和R(例如<4,5>不是可达,因此这个关系不计入在R中,<1,2>等类似关系计入在R中)

Web直径可以用R/P求得。

在实际处理中,可以采用一些方法来优化矩阵的计算,有文献表明目前的可以公开访问的互联网网页超过200亿。因此如果做计算的话200亿的规模过于巨大,可以进行一些采样。同时可以借助矩阵的稀疏性做一些优化。例如:

可以给每个节点做一个邻接表(每个节点拉出一个list,每个元素是它link到的page)

1->2 (->看做1跳可达,key=1value=2)

2->3,5

3->2,4

这样做A*A的过程可以转化为

1->2 and 2->3,4 >> 1=>3,4 =>看做2跳可达)

2->3,5 and 3->2,4 >> 2=>2,2=>4

3->2,4 and 2->3,5 >> 3=>5

余不例举,这样相当于仅存储有效边,在计算中连接表均为顺序存储,且key可以支持随机读取因此可以大大加速。同时还可以做分块话的处理,可以支持多机并行计算,不在深入,有机会会就这一方面主题作专题探讨。

另外,指出问题中的一个问题,Web直径的大小是测量出来的,并不是证明出来的,就好像万有引力定律的那个系数一样,也是测量出来的,并无办法证明,当然这可能有什么更深入的自然原理,可以证明,但就人类目前认识来说,类似的值均是测量测定的,还很难做出证明。

关于web直径的最早测定来源于: Albert, Jeong, and Barabasi 99. R. Albert, H. Jeong, and A.-L. Barabasi. Diameter of the World Wide Web, Nature 401:130-131, Sep 1999.

这篇论文中,作者通过计算拟合出这样的公式:web直径=0.35+2.06log(N),目前网页数量发展很快,新的计算和测定,据我了解,还没有进一步的数据,

推荐阅读:

http://www9.org/w9cdrom/160/160.html#AlbertJeongBarabasi

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics