在千峰老师的《大规模分布式系统架构与设计实战》一书中的有一个从赌钱游戏看PageRank算法,以下简称PR算法
首先我们来说下PR算法,PR(A)=(PR(B)/L(B)+PR(C)/L(C)+...+PR(X)/L(X))*q+1-q
其中q为逃脱因子,暂且不去理解它(取q=1),此时有公式PR(A)=PR(B)/L(B)+PR(C)/L(C)+...+PR(X)/L(X),说白了网页A的PR值等于他的所有入站链接的PR值得和。
但是网页的PR值我们没法孤立出来进行求算,你想啊,比如现在我想算网页A的PR值,那么我得知道链接到A的那些网页的PR值以及他们的L值,而要想知道这些网页的PR和L值,又得算...这就使得我们的求算没有尽头。所以我们得考虑换种方案。
我们可以对于所有的网页,计算它们的出站链接的PR值,就是说计算所有网络中存在的链接的PR值,然后我们以这些链接链接到的网页作为标准分类,最终求得每个网页的PR值。
举例,比如现在我们有3个网页A,B,C,他们互相都有链接,一共有六个链接。按照上面的方案,对于网页A,有出站链接A->B(PR值为PR(A)/2),有出站链接A->C(PR值为PR(A)/2);
对于网页B,有出站链接B->A(PR值为PR(B)/2),有出站链接B->C(PR值为PR(B)/2);
对于网页C,有出站链接C->A(PR值为PR(C)/2),有出站链接C->B(PR值为PR(C)/2);
网络中一共存在6个链接,他们的PR值也已经算出,此时进行统计可以看到,网页A的入站链接有2个,B->A(PR值为PR(B)/2),C->A(PR值为PR(C)/2),则PR(A)=PR(B)/2+PR(C)/2;
以此类推,PR(B)=PR(A)/2+PR(C)/2;PR(C)=PR(A)/2+PR(B)/2;
自此,我们就找到了每个网页PR值的算法,然后我们仅仅需要为PR(A),PR(B),PR(C)赋值,然后进行多轮迭代,就可求出最终的每个网页的PR值。
在PR值得求算过程中,PR值一直在网页之间流动,因此多轮计算后回收敛。
类似这种“并行计算+数据算法”的经典搭配,并且这种“海量数据并行计算,迭代多轮后收敛”的分析过程十分常见。
附件中是书中的源代码
分享到:
相关推荐
在这个“北大分布式系统概念与设计大作业”中,学生将面临一个实际的挑战:实现PageRank算法,并确保系统具备容错恢复功能。 PageRank是Google早期用于网页排名的一种算法,它的核心思想是通过分析网页之间的链接...
分布式系统概念与设计大作业基于Java实现的分布式PageRank 源代码
它将PageRank算法的链接分析优势与分布式计算的强大性能相结合,有效地解决了大规模网络数据中可疑URL挖掘问题。通过迭代计算URL危险值,不仅能够实现高效率的分析,而且具有低信息需求量的特点。随着网络攻击手段的...
3. 分布式计算模型:了解各种分布式计算模型,如MapReduce模型,用于大规模数据处理;还有Bulk Synchronous Parallel (BSP) 和Asynchronous Model等。 4. 分布式调度与任务分配:学习如何有效地分配任务到各个节点...
总结,分布式系统是构建现代大规模互联网应用的基础,理解和掌握其技术原理与实践案例对于任何IT从业者都至关重要。这份《分布式系统常用技术及案例分析》.pdf文档将是你学习和进阶的宝贵资源,它涵盖了从基本概念到...
因此,本文提出了一种分布式架构的主题网络爬虫的设计与研究,旨在通过分布式系统提高网络爬虫抓取特定领域信息的效率。 分布式架构是计算机科学中的一个关键概念,它允许多个计算资源协同工作,共同完成一项任务。...
分布式立体化教材系统设计是建立在网络之上的计算机软件系统,该系统利用分布式系统的优势进行资源整合和合理分配,设计与实现立体化教材系统,实现用户对资源的综合利用。资源负载由单节点转移到多节点,提高系统的...
基于Java的分布式PageRank计算系统 项目简介 本项目是一个基于Java的分布式系统,旨在利用多台机器并行计算PageRank算法,以对维基百科编辑管理人员进行排名。系统通过加载真实数据集,实现多机器间的数据同步和...
"大数据系统与大规模数据分析教程" 大数据运算系统是指处理大规模数据集的计算系统,能够对大量数据进行快速处理和分析。本教程将介绍大数据运算系统的基本概念和技术,包括图计算系统、异步图运算系统、PageRank...
综合以上信息,这个毕设项目涵盖了大数据处理、推荐系统设计、网络爬虫技术(可能用于获取微博数据)、分布式计算、PageRank算法实现以及数据库管理等多个IT领域的知识。学生需要结合这些技术,构建一个能够处理大...
本项目“基于Spark+PageRank算法构建仿微博用户好友的分布式推荐系统”就是这样一个例子,它将大数据处理框架Spark与经典的PageRank算法相结合,旨在实现大规模社交网络中的用户好友推荐。 首先,Spark是Apache ...
不过,对于大规模网络,可能需要考虑使用更高效的矩阵运算库如`scipy.sparse`或分布式计算框架如Apache Spark。 **应用场景** PageRank不仅仅用于搜索引擎排名,还可以用于推荐系统、社会网络分析、学术论文影响力...
分布式计算技术是现代计算机科学中的一个重要领域,它涉及如何通过多台计算机的协作来处理大规模的数据和执行复杂的计算任务。本教材源代码集合为学习者提供了深入理解分布式计算原理和实践操作的宝贵资源。 分布式...
4. **分布式排序算法**:如SortShuffle,用于大规模数据的分布式排序,是许多大数据处理框架的基础。 5. **分布式图算法**:如PageRank,用于分析网络结构,常应用于搜索引擎的网页排名。 ### 系统 1. **Hadoop**...
1. **分布式文件系统**:如Hadoop的HDFS,用于存储分布在不同节点上的大规模数据,保证数据的可靠性与可访问性。 2. **计算框架**:如MapReduce,提供了一种处理和生成大规模数据集的编程模型,分为Map阶段(数据...
这些头部互联网公司的技术架构设计合集揭示了他们在应对高并发、大数据处理、分布式系统、云计算、数据库管理、安全性以及用户交互等方面的创新实践。通过研究这些资料,我们可以借鉴并学习到如何构建适应未来发展...
2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Spark...
### 大规模网页模块识别与信息提取系统设计与实现 #### 摘要与背景 本研究关注于大规模网页模块的识别与信息提取系统的设计与实现。随着互联网的迅猛发展,网页数量急剧增加,如何有效地从这些网页中抽取有价值的...
总之,分布式PageRank算法展示了如何通过分布式系统的设计原则和工具处理大规模数据问题。它不仅在搜索引擎优化中发挥着重要作用,也为其他分布式计算任务提供了宝贵的思路和经验。理解并掌握这些概念和设计方法,...