日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引

發(fā)布時(shí)間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?數(shù)學(xué)之美系列五 -- 簡(jiǎn)單之美:布爾代數(shù)和搜索引擎的索引


[
建立一個(gè)搜索引擎大致需要做這樣幾件事:自動(dòng)下載盡可能多的網(wǎng)頁(yè);建立快速有效的索引;根據(jù)相關(guān)性對(duì)網(wǎng)頁(yè)進(jìn)行公平準(zhǔn)確的排序。我們?cè)诮榻B Google Page Rank (網(wǎng)頁(yè)排名) 時(shí)已經(jīng)談到了一些排序的問(wèn)題,這里我們談?wù)勊饕龁?wèn)題,以后我們還會(huì)談如何度量網(wǎng)頁(yè)的相關(guān)性,和進(jìn)行網(wǎng)頁(yè)自動(dòng)下載。]

世界上不可能有比二進(jìn)制更簡(jiǎn)單的計(jì)數(shù)方法了,也不可能有比布爾運(yùn)算更簡(jiǎn)單的運(yùn)算了。盡管今天每個(gè)搜索引擎都宣稱自己如何聰明、多么智能化,其實(shí)從根本上講都沒(méi)有逃出布爾運(yùn)算的框框。

布爾George Boole) 是十九世紀(jì)英國(guó)一位小學(xué)數(shù)學(xué)老師。他生前沒(méi)有人認(rèn)為他是數(shù)學(xué)家。布爾在工作之余,喜歡閱讀數(shù)學(xué)論著、思考數(shù)學(xué)問(wèn)題。1854 思維規(guī)律An Investigation of the Laws of Thought, on which are founded the Mathematical Theories of Logic and Probabilities)一書(shū),第一次向人們展示了如何用數(shù)學(xué)的方法解決邏輯問(wèn)題。

布爾代數(shù)簡(jiǎn)單得不能再簡(jiǎn)單了。運(yùn)算的元素只有兩個(gè)1 TRUE ) 0FALSE,假)?;镜倪\(yùn)算只有AND)、” (OR) NOT) 三種(后來(lái)發(fā)現(xiàn),這三種運(yùn)算都可以轉(zhuǎn)換成”“AND-NOT一種運(yùn)算)。全部運(yùn)算只用下列幾張真值表就能完全地描述清楚。
AND | 1 0
-----------------------
1 | 1 0
0 | 0 0
這張表說(shuō)明如果 AND 運(yùn)算的兩個(gè)元素有一個(gè)是 0,則運(yùn)算結(jié)果總是 0。如果兩個(gè)元素都是 1,運(yùn)算結(jié)果是 1。例如,太陽(yáng)從西邊升起這個(gè)判斷是假的(0),“水可以流動(dòng)這個(gè)判斷是真的(1),那么,太陽(yáng)從西邊升起并且水可以流動(dòng)就是假的(0)。
OR | 1 0
-----------------------
1 | 1 1
0 | 1 0
這張表說(shuō)明如果OR運(yùn)算的兩個(gè)元素有一個(gè)是 1,則運(yùn)算結(jié)果總是 1。如果兩個(gè)元素都是 0,運(yùn)算結(jié)果是 0。比如說(shuō),張三是比賽第一名這個(gè)結(jié)論是假的(0),李四是比賽第一名是真的(1),那么張三或者李四是第一名就是真的(1)。
NOT |
--------------
1 | 0
0 | 1
這張表說(shuō)明 NOT 運(yùn)算把 1 變成 0,把 0 變成 1。比如,如果象牙是白的是真的(1),那么象牙不是白的必定是假的(0)。


讀者也許會(huì)問(wèn)這么簡(jiǎn)單的理論能解決什么實(shí)際問(wèn)題。布爾同時(shí)代的數(shù)學(xué)家們也有同樣的問(wèn)題。事實(shí)上在布爾代數(shù)提出后80 多年里,它確實(shí)沒(méi)有什么像樣的應(yīng)用,直到 1938 年香農(nóng)在他的碩士論文中指出用布爾代數(shù)來(lái)實(shí)現(xiàn)開(kāi)關(guān)電路,才使得布爾代數(shù)成為數(shù)字電路的基礎(chǔ)。所有的數(shù)學(xué)和邏輯運(yùn)算,加、減、乘、除、乘方、開(kāi)方等等,全部能轉(zhuǎn)換成二值的布爾運(yùn)算。

現(xiàn)在我們看看文獻(xiàn)檢索和布爾運(yùn)算的關(guān)系。對(duì)于一個(gè)用戶輸入的關(guān)鍵詞,搜索引擎要判斷每篇文獻(xiàn)是否含有這個(gè)關(guān)鍵詞,如果一篇文獻(xiàn)含有它,我們相應(yīng)地給這篇文獻(xiàn)一個(gè)邏輯值 -- 真(TRUE, 1),否則,給一個(gè)邏輯值 -- 假(FALSE, 0)。比如我們要找有關(guān)原子能應(yīng)用的文獻(xiàn),但并不想知道如何造原子彈。我們可以這樣寫(xiě)一個(gè)查詢語(yǔ)句原子能 AND 應(yīng)用 AND (NOT 原子彈)”,表示符合要求的文獻(xiàn)必須同時(shí)滿足三個(gè)條件:
-
包含原子能
-
包含應(yīng)用
-
不包含原子彈
一篇文獻(xiàn)對(duì)于上面每一個(gè)條件,都有一個(gè)True 或者False 的答案,根據(jù)上述真值表就能算出每篇文獻(xiàn)是否是要找的。

早期的文獻(xiàn)檢索查詢系統(tǒng)大多基于數(shù)據(jù)庫(kù),嚴(yán)格要求查詢語(yǔ)句符合布爾運(yùn)算。今天的搜索引擎相比之下要聰明的多,它自動(dòng)把用戶的查詢語(yǔ)句轉(zhuǎn)換成布爾運(yùn)算的算式。當(dāng)然在查詢時(shí),不能將每篇文獻(xiàn)掃描一遍,來(lái)看看它是否滿足上面三個(gè)條件,因此需要建立一個(gè)索引。

最簡(jiǎn)單索引的結(jié)構(gòu)是用一個(gè)很長(zhǎng)的二進(jìn)制數(shù)表示一個(gè)關(guān)鍵字是否出現(xiàn)在每篇文獻(xiàn)中。有多少篇文獻(xiàn),就有多少位數(shù),每一位對(duì)應(yīng)一篇文獻(xiàn),1 代表相應(yīng)的文獻(xiàn)有這個(gè)關(guān)鍵字,0 代表沒(méi)有。比如關(guān)鍵字原子能對(duì)應(yīng)的二進(jìn)制數(shù)是0100100001100001...,表示第二、第五、第九、第十、第十六篇文獻(xiàn)包含著個(gè)關(guān)鍵字。注意,這個(gè)二進(jìn)制數(shù)非常之長(zhǎng)。同樣,我們假定應(yīng)用對(duì)應(yīng)的二進(jìn)制數(shù)是 0010100110000001...。那么要找到同時(shí)包含原子能應(yīng)用的文獻(xiàn)時(shí),只要將這兩個(gè)二進(jìn)制數(shù)進(jìn)行布爾運(yùn)算 AND。根據(jù)上面的真值表,我們知道運(yùn)算結(jié)果是0000100000000001...。表示第五篇,第十六篇文獻(xiàn)滿足要求。

注意,計(jì)算機(jī)作布爾運(yùn)算是非常非常快的?,F(xiàn)在最便宜的微機(jī)都可以一次進(jìn)行三十二位布爾運(yùn)算,一秒鐘進(jìn)行十億次以上。當(dāng)然,由于這些二進(jìn)制數(shù)中絕大部分位數(shù)都是零,我們只需要記錄那些等于1的位數(shù)即可。于是,搜索引擎的索引就變成了一張大表:表的每一行對(duì)應(yīng)一個(gè)關(guān)鍵詞,而每一個(gè)關(guān)鍵詞后面跟著一組數(shù)字,是包含該關(guān)鍵詞的文獻(xiàn)序號(hào)。

對(duì)于互聯(lián)網(wǎng)的搜索引擎來(lái)講,每一個(gè)網(wǎng)頁(yè)就是一個(gè)文獻(xiàn)?;ヂ?lián)網(wǎng)的網(wǎng)頁(yè)數(shù)量是巨大的,網(wǎng)絡(luò)中所用的詞也非常非常多。因此這個(gè)索引是巨大的,在萬(wàn)億字節(jié)這個(gè)量級(jí)。早期的搜索引擎(比如 Alta Vista 以前的所有搜索引擎),由于受計(jì)算機(jī)速度和容量的限制,只能對(duì)重要的關(guān)鍵的主題詞建立索引。至今很多學(xué)術(shù)雜志還要求作者提供 3-5 個(gè)關(guān)鍵詞。這樣所有不常見(jiàn)的詞和太常見(jiàn)的虛詞就找不到了?,F(xiàn)在,為了保證對(duì)任何搜索都能提供相關(guān)的網(wǎng)頁(yè),所有的搜索引擎都是對(duì)所有的詞進(jìn)行索引。為了網(wǎng)頁(yè)排名方便,索引中還需存有大量附加信息,諸如每個(gè)詞出現(xiàn)的位置、次數(shù)等等。因此,整個(gè)索引就變得非常之大,以至于不可能用一臺(tái)計(jì)算機(jī)存下。大家普遍的做法就是根據(jù)網(wǎng)頁(yè)的序號(hào)將索引分成很多份(Shards),分別存儲(chǔ)在不同的服務(wù)器中。每當(dāng)接受一個(gè)查詢時(shí),這個(gè)查詢就被分送到許許多多服務(wù)器中,這些服務(wù)器同時(shí)并行處理用戶請(qǐng)求,并把結(jié)果送到主服務(wù)器進(jìn)行合并處理,最后將結(jié)果返回給用戶。

不管索引如何復(fù)雜,查找的基本操作仍然是布爾運(yùn)算。布爾運(yùn)算把邏輯和數(shù)學(xué)聯(lián)系起來(lái)了。它的最大好處是容易實(shí)現(xiàn),速度快,這對(duì)于海量的信息查找是至關(guān)重要的。它的不足是只能給出是與否的判斷,而不能給出量化的度量。因此,所有搜索引擎在內(nèi)部檢索完畢后,都要對(duì)符合要求的網(wǎng)頁(yè)根據(jù)相關(guān)性排序,然后才返回給用戶。

?

總結(jié)

以上是生活随笔為你收集整理的数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。