浅析布尔代数、图论及矩阵在互联网搜索中的应用

 

摘要

本文主要阐述了矩阵在互联网搜索中的应用,对互联网搜索引擎的基本原理进行了解析。所阐述的内容包含了互联网搜索引擎索引构造技术、网络爬虫技术及PageRank算法,涉及的数学知识涵盖了布尔代数、图论和矩阵论。

0 引言

随着科技的进步,网上冲浪已进入了千家万户。在我们畅游网络世界中,以google、百度、AOL等为代表的搜索引擎也成为广大网民经常使用的工具。通过输入关键字,搜索引擎往往能够在相对较前的位置显示我们需要查找的网页。在构建搜索引擎的过程中,搜索引擎所处理的主要涉及三方面的内容:1.索引的构建——用于在海量资源中找到符合关键字的网页;2.网络爬虫技术——用于构造海量网页资源库;3.排序技术(即本文将阐述的PageRank算法)——用于将最可能符合用户要求的网页排列在搜索结果的前部。在下面的章节中,将主要简单介绍这三方面的内容。

1 索引的构建——布尔代数的应用

在现实世界的互联网搜索中,往往能够在相当短的时间内查询到所需要的搜索结果。比如,在google中搜索“京东”,在0.17秒内便能够搜索到171,000,000条结果。搜索引擎能够在如此短的时间内查询到如此多的结果,依靠两方面的技术,一是分布式计算技术,该技术解决了大数据高速并行运算的难题,另外则是布尔索引构建技术。

这里的布尔索引与数据库中的位图索引概念相似。以数据库位图索引为例,如下图所示:

Values

R0

R1

R2

R3

R4

Yellow

1

0

0

1

0

Red

0

0

1

0

0

Blue

0

1

0

0

1

假设在一张数据表中存在5行数据,我们对在数据库索引的创建过程中,分别对这5行数据的值进行解析。从上图可以看到,这5行数据分别代表了黄色、红色、蓝色,这样经过解析并代码化,第一行数据则可以转换为100,。同理,第二行可以转换为001、第三行可以转换为010,第四行、第五行以此类推。如果我们想要获取数据表中代表黄色的数据项,仅需要查找索引为100的数据即可。而假设我们想要查询黄色||红色的数据,由110 = 100 || 010可知我们仅需要寻找索引第一、二位均为1的数据即可。

类比到互联网搜索引擎,引擎对资源库中的所有关键词构造索引。以关键字“原子能”为例,“原子能”对应的索引为0100010000000……,则在第二、第六个网页中包含这个关键字。如果“应用”对应的索引为0111100000000……,那么当同时搜索“原子能”与“应用”时,我们将两个索引相与,可得0100000000000……,即第二个网页为所需查询的网页。

在当今的主要搜多引擎都是对所有词进行索引,也因此对于搜索引擎,索引的数量是海量的。对于如此大量的索引存储与计算将是一个难题,现代搜索引擎主要依赖于分布式计算,在这里不做赘述。

2 网络爬虫的实现——图论的应用

依据上一章节的内容,搜索引擎已经能够实现从海量资源库中获取关联网页,那么海量资源库是如何构建的呢?这主要依赖于网络爬虫,而网络爬虫的基本模型是图论。

图论在日常生活中的应用有很多,分为有向图与无向图,而其最直观的应用就是地图了。将上海及周边的长三角城市作为图的节点,高速公路作为连接节点的各条边。

在实际问题中,我们通常会求解这样一个问题:我们从上海出发,如何依次访问图上长三角的城市。解决此问题,一种方式称为“深度优先搜索(DFS)”,另一种方式成为“广度优先搜索(BFS)”。

深度优先搜索(DFS)所遵循的搜索策略是尽可能“深”的搜索一个图。在深度优先搜索中,对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续探测下去。当顶点v的所有边都已经被探寻过后,搜索将回溯到发现顶点v有起始点的那些边。这一过程一直进行到已发现从源顶点可达的所有顶点时为止。如果还存在未被发现的顶点,则选择其中一个作为源顶点,并重复以上过程。整个过程反复进行,直到所有的顶点都已被发现时为止。

广度优先搜索(BFS)是在给定图和一个特定的源顶点s的情况下,系统的探索图中的边,以期发现可从s到达的所有顶点。

我们将互联网视作一张大图,这样每一个网页就可以看做图上的节点,而超链接则可以视作图上的边,互联网就与图论相结合了。以一个爬虫为例,爬虫从诸如雅虎、新浪等门户网站为原点s,访问、下载并分析这家网站的邮件等网页,有能找到其他相连的网页。让计算机不停的计算下去,在理论上就能下载整个互联网。在爬虫抓取网页的过程中,也有极大可能会遇到抓取到相同网页的情况。现代搜索引擎是这样解决的:构建一个HASH表,在HASH表中记录已经被抓取过的网页。

对于网络爬虫,具体使用深度优先算法还是广度优先算法也是制作网络爬虫程序经常遇到的问题。就理论而言,在不考虑时间因素、互联网静态不变的前提下,这两种算法抓取全部网页的时间大致相同。就显示而言,我们则需要根据实际情况选择较优的算法。而我们的目标也转变为了“如何在有限的时间内最多的爬下最重要的网页”。如果我们做制作的爬虫非常小,那么门户网站的首页自然而然便是最重要的网页。依次类推,门户网站上直接能够链接到达网页则为相对较次要些的网页。综上所述,在软硬件资源相对有限的情况下,广度优先搜索是网络爬虫算法一个不错的选择。而深度优先搜索在网络爬虫中的应用更多的服务器整体爬取网页的情况。在服务器爬取网页的过程中,由于下载服务器和网站的通讯服务器建立连接需要时间,所以下载服务器往往是一个网站下载完毕之后再下载第二个网站,而非并行的下载所有网站。这一点和深度优先搜索是很类似的。

在现代搜索引擎中,爬虫的算法不会是纯粹的广度优先搜索,也不会是纯粹的深度优先搜索。现代搜索引擎由一个被称之为“调度系统”的逻辑解决网络爬虫爬取网页优先级的问题,在应用中,也往往体现了将广度优先搜索与深度优先搜索混合使用的意味。

3 PageRank算法——矩阵的应用

通过以上两个章节介绍的技术,我们已经可以顺利的建立搜索引擎的资源库及根据关键字获取所要查找的页面集合。但问题接踵而来,我们查找到的页面集合成千上网、页面质量参差不齐,如何能够让我们第一眼看到我们所期望的网页成了搜索引擎应当解决的问题。

在20世纪90年代,雅虎公司、DEC公司等科技企业都对此作出了努力,但效果不尽人意。真正的跨时代的数学模型由google的创始人佩奇和布林提出,该算法被称作PageRank算法。PageRank算法的核心为民主表决。在互联网上,如果一个网页被很多其他的网页所链接且其他网页的质量本身就很高,说明它收到普遍的承认和信赖,那么它的排名就应该靠前。

我们假设有四张网页,他们的联通关系可以用如下的有向图表示:

 

我们可以看到,一个用户从A跳转到B、C、D的概率各为1/3。设一共有N个网页,则可以组织这样一个N维矩阵:其中i行j列的值表示用户从页面j转到页面i的概率。这样一个矩阵叫做转移矩阵,矩阵表示如下:


设各个网页的初始投票权相同,这样就可以得到向量v:


由于M的第一行即是A、B、C、D转向A的概率,那么我们用M*V即可得到网页的排名:


我们初始了各个网页的排名为1/4,但这仅仅是初始值,实际网页本身的排名并不相等。因此,我们就将新的向量Mv进行迭代,令Vi = M * Vi-1 。可以证明v最终将是收敛的,当Vi无限接近于v即Vi与Vi-1差异非常小时,我们就认为Vi是搜索结果的最终排名。

 真实的互联网非常稀疏,将其化为转移矩阵,其结果也将是稀疏矩阵。从矩阵论知识可以推断,极度稀疏的转移矩阵迭代相乘可能会使得向量v变得非常不平滑,即一些节点拥有很大的rank,而大多数节点rank值接近0。为了解决这一问题,我们需要对矩阵进行平滑处理。平滑处理的基本思想是加入“心灵转移”。所谓心灵转移,就是我们认为在任何一个页面浏览的用户都有可能以一个极小的概率瞬间转移到另外一个随机页面。

在加入“心灵转移”后,向量的迭代公式变为:

Vi = (1 - b)MVi-1 + e*(b/N)

其中b为一个较小的常数,e为N维单位向量。这样,我们就将原来不平滑的结果平滑化了。

在网络搜索引擎的后续发展中,还出现了Topic-Sensitive PageRank算法,其思想主体与PageRank算法是相同的,只不过通过cookie或注册信息将用户感兴趣的内容权重提高,这样便解决了个性化搜索排序的问题。

4 总结

在互联网技术飞速发展的今天,数学手段越来越多的被用于解决算法优化、算法设计等复杂的问题。本总主要浅析了布尔代数、图论及矩阵在互联网搜索引擎中的运用,这三个知识点也基本涵盖了互联网搜索引擎建立的主要思想。布尔代数的逻辑运算能够很好的解决数据索引构建的问题,图论的算法对数据挖掘路径提供了较为高效的思想,而矩阵的引入则将算法模型化,利用数学模型关联的数学知识,有依据的解决相关问题。这些特点能够为今后的工作提供指导依据,如在冶金行业,PageRank算法就是解决制程优选的很好思路,运用矩阵将制程模型化,依据排序推选出最优的制程路径。总之,数学手段加入行业知识,其解决问题的潜在重要性将是不言而喻的。

【引用】:

1.《数学之美》吴军 著 人民邮电出版社;

2.《算法导论》Thomas H. Cormen等著 机械工业出版社;

3.《海量数据库解决方案》李华植 著 电子工业出版社;

4. 《浅析PageRank算法》张洋 著。

原文地址:https://www.cnblogs.com/tonychan/p/3165981.html