費(fèi)曼讀書法專門解決“專業(yè)”的問(wèn)題钞瀑,神乎其神卓舵,怎能不摩拳擦掌弊仪、躍躍欲試归露?我便挑了自己不擅長(zhǎng)的計(jì)算機(jī)科學(xué)方面的書來(lái)嘗試~
選擇書目:《改變未來(lái)九大算法》
目標(biāo)主題:Google搜索引擎原理
計(jì)算機(jī)科學(xué)行業(yè)洲脂,對(duì)于大多數(shù)外行來(lái)說(shuō),堪比天書剧包。確實(shí)恐锦,計(jì)算機(jī)科學(xué)的思維很獨(dú)特,代碼語(yǔ)言和我們平常所用也不同疆液,但能夠搞懂計(jì)算機(jī)思維方式一铅,也是打開新世界的體驗(yàn)!你會(huì)發(fā)現(xiàn)堕油,原來(lái)覺(jué)得很神奇方便的東西潘飘,是這樣構(gòu)思而成的,不禁覺(jué)得妙哉掉缺!
接下來(lái)卜录,帶你跟著我全盤復(fù)刻這種體驗(yàn),只要你愿意讀眶明,我的這篇文章就能讓你搞懂搜索引擎基本原理<瓒尽(以下不摘錄原文,均為我的問(wèn)題搜囱、理解丑瞧、轉(zhuǎn)述)
我們都有使用搜索引擎的經(jīng)歷,所以這一點(diǎn)你應(yīng)該好理解:搜索引擎的排名決定了它的質(zhì)量蜀肘。(根據(jù)你搜索的關(guān)鍵詞绊汹,如果關(guān)聯(lián)度越高的結(jié)果排名越靠前,你自然會(huì)覺(jué)得這個(gè)引擎是好用的扮宠。百度正式因?yàn)榕琶谝坏诙目偸菑V告而被詬簿拇佟)
Google的市場(chǎng)份額最大也是因其排名算法最優(yōu),所以涵卵,我們現(xiàn)在來(lái)看看網(wǎng)頁(yè)排名算法究竟是如何做的浴栽。
第一個(gè)認(rèn)知板塊:概念「索引」
這個(gè)你并不陌生,幾乎每本書都有索引〗钨耍現(xiàn)在典鸡,有一本書中的索引是一個(gè)詞+出現(xiàn)位置,如:abandon 1 2坏晦,即abandon這個(gè)詞在第一頁(yè)和第二頁(yè)出現(xiàn)過(guò)萝玷。那么網(wǎng)頁(yè)也是如此嫁乘,我們來(lái)舉個(gè)例子。
(所有的網(wǎng)頁(yè)和書頁(yè)一樣球碉,我們都是通過(guò)索引來(lái)找到相應(yīng)的網(wǎng)頁(yè)的)
假設(shè)蜓斧,現(xiàn)在有3個(gè)網(wǎng)頁(yè),是如何建立索引的呢睁冬?(如圖1)
第1個(gè)問(wèn)題:看到這里時(shí)我很奇怪挎春,為什么建立好的索引里a是3、cat是1和3豆拨,后面皆圖1表格所示直奋?
嗯,費(fèi)曼讀書法說(shuō)我得努力往下看施禾,然后回看脚线。所以我繼續(xù)看,答案也許在后面弥搞,結(jié)果我懂了邮绿!再次回看果然符合,原來(lái)攀例,這里是個(gè)坑船逮!——翻譯得背這個(gè)鍋。
我給大家解釋一下肛度,請(qǐng)參照?qǐng)D1,網(wǎng)頁(yè)的內(nèi)容應(yīng)該是:
網(wǎng)頁(yè)1: the cat sat on the mat
網(wǎng)頁(yè)2: the dog stood on the mat
網(wǎng)頁(yè)3: the cat stood while a dog sat
所以【a 3】的索引即為a這個(gè)詞出現(xiàn)在第3個(gè)網(wǎng)頁(yè)中投慈,【cat 1 3】是指的cat出現(xiàn)在網(wǎng)頁(yè)1和網(wǎng)頁(yè)3中承耿。你說(shuō)這里既然是講索引,翻譯干嘛要把舉例翻譯成中文拔泵骸<哟(請(qǐng)?jiān)谖曳g的英文句子中找)簡(jiǎn)直是坑讀者啊,不過(guò)被我發(fā)現(xiàn)了哈哈~
繼續(xù)讀……
第二個(gè)認(rèn)知板塊:詞的位置
上面的舉例中抱既,我們知道了索引里如何記錄某個(gè)詞出現(xiàn)在哪些個(gè)網(wǎng)頁(yè)职烧,所以當(dāng)你搜索“cat”時(shí),就會(huì)出現(xiàn)第1個(gè)和第3個(gè)網(wǎng)頁(yè)防泵。
接著問(wèn)題來(lái)了蚀之,當(dāng)我們輸入關(guān)鍵詞【cat sat】時(shí),結(jié)果是什么捷泞?
沒(méi)錯(cuò)足删,網(wǎng)頁(yè)1和網(wǎng)頁(yè)3都有“cat”和“sat”這兩個(gè)詞,所以都會(huì)出現(xiàn)锁右。但是這里有個(gè)問(wèn)題了失受,目前這兩個(gè)網(wǎng)頁(yè)對(duì)于計(jì)算機(jī)來(lái)說(shuō)讶泰,都是符合條件的結(jié)果,哪個(gè)應(yīng)該排在前面呢拂到?(由于這里是拿3個(gè)網(wǎng)頁(yè)舉例痪署,現(xiàn)實(shí)有成千上萬(wàn)億個(gè)網(wǎng)頁(yè))
第2個(gè)問(wèn)題:為什么要注明詞的位置?
重讀了這個(gè)部分之后兄旬,又反復(fù)解讀例圖狼犯,我就明白了。
你搜索輸入的是【cat sat】辖试,問(wèn)題在于:
1. 包含這兩個(gè)詞
2. 兩個(gè)詞需要按照這個(gè)順序排列辜王?(sat cat 呢?)
3. 兩個(gè)詞要緊鄰罐孝?(cat stood while a dog sat 呢呐馆?)
所以,這個(gè)索引要進(jìn)一步豐富:記錄詞的位置莲兢。(如圖2)
如圖汹来,圖中將這個(gè)三個(gè)網(wǎng)頁(yè)和建立的索引一一對(duì)應(yīng)起來(lái)看,就好理解了改艇∈瞻啵【cat 1-2 3-2】意思即為,cat這個(gè)詞出現(xiàn)在第個(gè)網(wǎng)頁(yè)的第2個(gè)位置谒兄,第3個(gè)網(wǎng)頁(yè)的第2個(gè)位置摔桦,依次類推其他。
(“-”后面表示詞在該網(wǎng)頁(yè)內(nèi)的位置
所以承疲,當(dāng)你在輸入【cat sat】時(shí)邻耕,
第1個(gè)網(wǎng)頁(yè)中:cat是【1-2】,sat是【1-3】燕鸽,證明這個(gè)網(wǎng)頁(yè)里cat和sat 是緊鄰的兄世;
第3個(gè)網(wǎng)頁(yè)中:cat是【3-2】,sat是【3-7】啊研,中間隔了4個(gè)單詞御滩。
所以網(wǎng)頁(yè)1自然更加符合你的搜索結(jié)果。
這里就說(shuō)明了党远,為什么又要進(jìn)一步豐富索引削解,要表示詞的位置了。因?yàn)閷?duì)于計(jì)算機(jī)來(lái)說(shuō)沟娱,它并不會(huì)像我們一樣判斷結(jié)果是否符合钠绍,它只會(huì)做篩選,那么如果只有第一種網(wǎng)頁(yè)的索引時(shí)花沉,只能判斷【是否存在】柳爽,而通過(guò)詞的位置媳握,就能夠進(jìn)一步判斷【關(guān)鍵詞的相鄰情況和順序】。
到這里磷脯,你看懂了嗎蛾找?如果是,相信你也會(huì)和我一樣覺(jué)得有趣了赵誓。搜索引擎的原理當(dāng)然不止于此打毛,后面在此基礎(chǔ)上有進(jìn)一步的復(fù)雜原理,一直讀下去越覺(jué)得精妙俩功,不禁感嘆一開始怎么就有人能夠想到這種解決辦法呢幻枉!
如今,誰(shuí)掌握了最優(yōu)算法就掌握了核心競(jìng)爭(zhēng)力诡蜓,這是算法的天下熬甫,不打算了解一下?