|
网站菜单
|
日记 - 搜索引擎是怎么工作的
搜索引擎,一种搜索互联网链接的服务,本文章介绍了其背后的数学原理。 早期的互联网有一个问题,网页太多了。 在互联网刚刚发展的时候,网页数量还比较少,人们可以通过目录网站或者人工整理找到需要的信息。但是随着网页数量快速增长,人工分类已经不可能完成。 那么搜索引擎应该如何给网页排序? 我们先假设互联网只有四个网页: 网页 A、网页 B、网页 C、网页 D。 搜索引擎怎么判断哪个网页应该排在前面? 很容易想到一个方法: 统计一个网页被多少其他网页链接。 如果很多网页都链接到某个网页,那么这个网页应该比较重要。 举个例子 A → B C → B D → B 在这个简单的互联网中,网页 B 收到了三个链接,看起来非常重要。 但是问题来了: 如果一个普通网站链接到 B,和一个世界知名网站链接到 B,它们的价值一样吗? 显然不一样。 一个来自权威网站的链接,应该比一个无人访问的小网站的链接更有价值。 因此,Google 创始人提出了 PageRank 算法。 它的核心思想是,一个网页的重要程度,取决于链接它的网页的重要程度。 也就是说重要的网站引用权重更高, 但很容易想到一种特殊情况, 假设 B 指向 A,所以 A 很重要。 C 指向 B,所以 B 很重要。 A 指向 C,所以 C 很重要。 那么到底谁最重要? A 因为 B 重要,所以 A 重要。 B 因为 C 重要,所以 B 重要。 C 因为 A 重要,所以 C 重要。 这显然是循环,很奇怪,对吧?那么怎么办?还能怎么办?转换为数学问题。 让我们把本来就不够直观的互联网,变成更加不直观的数学。 为了无趣起见,我们删掉一个网页。现在我们有。 A、B、C。 建立一个矩阵: M = 0 1/2 1 1 0 0 0 1/2 0 矩阵的每一列表示一个网页会把多少权重传递给其他网页。 比如说第二列: 1/2 0 1/2 表示网页 B 的权重会被分配, 一半给 A, 一半给 C。 如果 B 本身很重要,那么 A 和 C 就会得到更多的重要性。 所以网页的重要程度可以表示为一个向量, x = A 的重要程度 B 的重要程度 C 的重要程度 然后不断进行计算: 新的重要程度 = 矩阵 × 原来的重要程度。 也就是Mx 计算一次, 代表网页之间互相传递一次权重。 计算很多次 代表这个网络中的影响不断传播。 最终,这个系统会趋向一个稳定状态, 一个网页的重要程度不会再发生变化。 数学上,这就是 M x = λ x 也就是特征值问题 其中x 是特征向量。 它表示稳定的网页排名。 λ 是特征值, 它表示这个系统变化的比例。 所以,Google 最终解决的问题是在一个巨大的互联网链接矩阵中,寻找一个稳定的重要性分布。 这个问题在数学上就是求矩阵的特征向量,这就是线性代数的魅力。 从一个现实问题开始经过抽象再转换就可以把看似混乱的互联网转换为成了一个可以计算的系统,这也是现代搜索引擎能够工作的数学基础之一 评论: (0) 没有评论 |