费曼读书法专门解决“专业”的问题,神乎其神,怎能不摩拳擦掌、跃跃欲试?我便挑了自己不擅长的计算机科学方面的书来尝试~
选择书目:《改变未来九大算法》
目标主题:Google搜索引擎原理
计算机科学行业,对于大多数外行来说,堪比天书。确实,计算机科学的思维很独特,代码语言和我们平常所用也不同,但能够搞懂计算机思维方式,也是打开新世界的体验!你会发现,原来觉得很神奇方便的东西,是这样构思而成的,不禁觉得妙哉!
接下来,带你跟着我全盘复刻这种体验,只要你愿意读,我的这篇文章就能让你搞懂搜索引擎基本原理!(以下不摘录原文,均为我的问题、理解、转述)
我们都有使用搜索引擎的经历,所以这一点你应该好理解:搜索引擎的排名决定了它的质量。(根据你搜索的关键词,如果关联度越高的结果排名越靠前,你自然会觉得这个引擎是好用的。百度正式因为排名第一第二的总是广告而被诟病)
Google的市场份额最大也是因其排名算法最优,所以,我们现在来看看网页排名算法究竟是如何做的。
第一个认知板块:概念「索引」
这个你并不陌生,几乎每本书都有索引。现在,有一本书中的索引是一个词+出现位置,如:abandon 1 2,即abandon这个词在第一页和第二页出现过。那么网页也是如此,我们来举个例子。
(所有的网页和书页一样,我们都是通过索引来找到相应的网页的)
假设,现在有3个网页,是如何建立索引的呢?(如图1)
第1个问题:看到这里时我很奇怪,为什么建立好的索引里a是3、cat是1和3,后面皆图1表格所示?
嗯,费曼读书法说我得努力往下看,然后回看。所以我继续看,答案也许在后面,结果我懂了!再次回看果然符合,原来,这里是个坑!——翻译得背这个锅。
我给大家解释一下,请参照图1,网页的内容应该是:
网页1: the cat sat on the mat
网页2: the dog stood on the mat
网页3: the cat stood while a dog sat
所以【a 3】的索引即为a这个词出现在第3个网页中,【cat 1 3】是指的cat出现在网页1和网页3中。你说这里既然是讲索引,翻译干嘛要把举例翻译成中文啊!(请在我翻译的英文句子中找)简直是坑读者啊,不过被我发现了哈哈~
继续读……
第二个认知板块:词的位置
上面的举例中,我们知道了索引里如何记录某个词出现在哪些个网页,所以当你搜索“cat”时,就会出现第1个和第3个网页。
接着问题来了,当我们输入关键词【cat sat】时,结果是什么?
没错,网页1和网页3都有“cat”和“sat”这两个词,所以都会出现。但是这里有个问题了,目前这两个网页对于计算机来说,都是符合条件的结果,哪个应该排在前面呢?(由于这里是拿3个网页举例,现实有成千上万亿个网页)
第2个问题:为什么要注明词的位置?
重读了这个部分之后,又反复解读例图,我就明白了。
你搜索输入的是【cat sat】,问题在于:
1. 包含这两个词
2. 两个词需要按照这个顺序排列?(sat cat 呢?)
3. 两个词要紧邻?(cat stood while a dog sat 呢?)
所以,这个索引要进一步丰富:记录词的位置。(如图2)
如图,图中将这个三个网页和建立的索引一一对应起来看,就好理解了。【cat 1-2 3-2】意思即为,cat这个词出现在第个网页的第2个位置,第3个网页的第2个位置,依次类推其他。
(“-”后面表示词在该网页内的位置
所以,当你在输入【cat sat】时,
第1个网页中:cat是【1-2】,sat是【1-3】,证明这个网页里cat和sat 是紧邻的;
第3个网页中:cat是【3-2】,sat是【3-7】,中间隔了4个单词。
所以网页1自然更加符合你的搜索结果。
这里就说明了,为什么又要进一步丰富索引,要表示词的位置了。因为对于计算机来说,它并不会像我们一样判断结果是否符合,它只会做筛选,那么如果只有第一种网页的索引时,只能判断【是否存在】,而通过词的位置,就能够进一步判断【关键词的相邻情况和顺序】。
到这里,你看懂了吗?如果是,相信你也会和我一样觉得有趣了。搜索引擎的原理当然不止于此,后面在此基础上有进一步的复杂原理,一直读下去越觉得精妙,不禁感叹一开始怎么就有人能够想到这种解决办法呢!
如今,谁掌握了最优算法就掌握了核心竞争力,这是算法的天下,不打算了解一下?