當(dāng)時(shí)是1958年11月,在一個為期6天的科學(xué)信息國際大會上,發(fā)明家漢斯·彼得·盧恩(Hans Peter Luhn)展示了其研制的一系列電氣機(jī)械設(shè)備。這些設(shè)備看起來普普通通,與當(dāng)時(shí)的其他計(jì)算機(jī)設(shè)備相似,四四方方,相當(dāng)實(shí)用的樣子,專門用于抓取和分類成堆的穿孔卡片,并把它們放入卡槽或卡箱中。
與其他計(jì)算機(jī)不同的是,盧恩的設(shè)備并非用來處理數(shù)字或計(jì)算,而是用來處理文字和語句的。其中一臺設(shè)備尤其引人注目,它使用了一種被盧恩稱為KWIC(KeyWord in Context的首字母縮寫,為“文中關(guān)鍵字”之意)的算法。輸入一大段文字(通常是500到5000個單詞的文章)后,KWIC系統(tǒng)可以自動地快速創(chuàng)建一套索引。
當(dāng)時(shí),即便對最有經(jīng)驗(yàn)的專家來說,編制索引、分類和組織書面信息也仍然是個艱苦的過程。而且很多領(lǐng)域的信息量增長飛快,無人能及。人們迫切需要一種更好的摘要和匯總方法。在華盛頓特區(qū)的圖書管理員和信息科學(xué)家們原本沉靜的集會上,KWIC系統(tǒng)的這場演示無異于是件驚天動地的大事,全美所有的相關(guān)報(bào)紙都在報(bào)道盧恩的這一驚人發(fā)明。
到20世紀(jì)60年代初期,KWIC已經(jīng)成為數(shù)百種計(jì)算索引系統(tǒng)的設(shè)計(jì)核心,包括化學(xué)文摘社(ChemicalAbstracts Service)、生物學(xué)文摘(Biological Abstracts)和美國科學(xué)信息研究所(Institute forScientific Information)等使用的系統(tǒng)。有一位專家曾將KWIC的偉大問世等同于“化學(xué)領(lǐng)域試管的發(fā)明”。
盧恩,這位IBM的高級工程師,還將KWIC集成到企業(yè)界的“智能系統(tǒng)”中,旨在識別并將相關(guān)信息傳遞給大型組織內(nèi)特定的個人。KWIC基本上就相當(dāng)于那個時(shí)代的搜索引擎,讓用戶能夠迅速找到所需的信息。
現(xiàn)在,計(jì)算機(jī)可以解讀信息,隨時(shí)提供餐館評價(jià)、體育比分和股票價(jià)格,而我們對此已經(jīng)習(xí)以為常。然而,在盧恩那個年代,計(jì)算機(jī)仍是很原始的。他試圖操縱文本的做法拓寬了人們對計(jì)算機(jī)及其能力的思路,而他的這種想法,時(shí)至今日仍是網(wǎng)上購物、自動翻譯以及遺傳研究等現(xiàn)代算法的基石。
當(dāng)然,在20世紀(jì)50年代,上述許多應(yīng)用還是無法想象的。在這里,我將探討是什么驅(qū)使盧恩為這些尚不存在的問題找到了答案——一種被稱為哈希函數(shù)的解決方案。
第二次世界大戰(zhàn)后的那幾年,也正是電子計(jì)算機(jī)成形的那幾年。戰(zhàn)爭期間建造的各種計(jì)算機(jī),為彈道學(xué)、原子武器和密碼學(xué)進(jìn)行了必不可少的計(jì)算。冷戰(zhàn)的緊張局勢確保了計(jì)算機(jī)發(fā)展所需的持續(xù)資金,其結(jié)果是計(jì)算機(jī)變得更快速,更準(zhǔn)確,更強(qiáng)大。但其主要用途——數(shù)字處理和存儲——卻變化甚微。
在這個新生的計(jì)算機(jī)世界里,盧恩展露出了鋒芒。他一生穿著考究,在1941年初抵IBM時(shí),相較計(jì)算機(jī)行業(yè)而言,他可能對紡織行業(yè)更熟悉一些。他的許多發(fā)明似乎都屬于更早的前數(shù)字時(shí)代,那個有著機(jī)械計(jì)算器和計(jì)算尺的年代。
20世紀(jì)50年代,數(shù)字計(jì)算機(jī)逐漸取代了他的電氣機(jī)械設(shè)備,然而他的思想,雖然由于用途變化歷經(jīng)了變更和重組,現(xiàn)在卻已滲透到了我們能想到的幾乎所有軟件之中。
盧恩1896年出生于德國巴門,他的父親約翰(Johann)是一位印刷大師。他顯然是一位對孩子們的杰作非常寬容的父親,有一次,盧恩和他的弟弟在家中的花園里建了一條微型鐵路,其中長達(dá)70米的軌道是熔掉了父親印刷機(jī)中的鉛后制成的。
高中畢業(yè)后,盧恩前往瑞士學(xué)習(xí)家族生意。但是第一次世界大戰(zhàn)以及在德軍中度過的一段歲月,中斷了他的印刷業(yè)生涯,戰(zhàn)后他開始從事紡織品貿(mào)易。盧恩于1924年來到美國,是為了尋找適合開紡織廠的廠址。
在紡織業(yè),盧恩就展現(xiàn)出了發(fā)明天賦。1927年,他發(fā)明了一種尺子形狀的裝置,可用于測量布料織數(shù)。時(shí)至今日,這種叫作紗條均勻度光學(xué)測定儀(Lunometer)的測定尺仍在由盧恩創(chuàng)立的工程咨詢公司H.P.Luhn &Associates進(jìn)行出售。
盧恩學(xué)什么都很快,涉獵了多個領(lǐng)域。他是一名專業(yè)的登山運(yùn)動員,一名廚藝精湛的美食家,也是一名風(fēng)景畫大師。在20世紀(jì)30年代,他的眾多發(fā)明專利包括折疊式雨衣、女士長筒襪塑形裝置、一款游戲桌和“雞尾酒神諭”,后者是一種雞尾酒調(diào)制指南,能告訴用戶如何用手頭上的材料調(diào)制各種雞尾酒。
但是盧恩真正的興趣在于信息(特別是文本)的存儲、通信和檢索,這也是他加入IBM的主要原因。盧恩被授予了“發(fā)明家”的稱號,成果頗豐,最終為IBM提供了70項(xiàng)專利。雖然他可以隨心所欲地選擇攻克任何他喜歡的問題,但他的許多發(fā)明都集中在使用包括電子計(jì)算機(jī)在內(nèi)的各種設(shè)備來處理信息。
比如,在1946年和1947年,盧恩曾致力于創(chuàng)建一種機(jī)器可讀的打字機(jī)打印文件。設(shè)備上有一條金屬條帶可插入打字機(jī),能夠?qū)⒂写判缘膱D案印在紙上,然后可用機(jī)器讀取這些磁性圖案。
不久之后,他開始與麻省理工學(xué)院的兩位化學(xué)家馬爾科姆·戴森(MalcolmDyson)和詹姆斯·佩里(James Perry)一起工作,研制一種可以使用穿孔卡片自動搜索化學(xué)化合物的機(jī)器。每張穿孔卡片上都編碼有一種特定化合物的信息。
用戶在機(jī)器中插入一張“提問卡片”,上面列出一組搜索條件,機(jī)器將對照這組條件對所有的化合物卡片進(jìn)行比對和分類。盧恩的這臺掃描機(jī)器是高度專業(yè)化的,但他仍然在尋找更通用的方法來自動處理信息。
人們對信息非常癡情。戰(zhàn)后的幾年間,科學(xué)和工程論文發(fā)表數(shù)量激增。許多專家擔(dān)心“信息超載”會壓垮研究人員和商務(wù)人員。范內(nèi)瓦·布什是美國龐大的戰(zhàn)時(shí)官方科學(xué)機(jī)構(gòu)的領(lǐng)袖,也是美國國家科學(xué)基金會的創(chuàng)建人之一,他也曾提出過一種寫字臺大小的電子機(jī)械設(shè)備Memex,用于存儲和關(guān)聯(lián)信息。
布什的想法未曾實(shí)現(xiàn),但盧恩的想法卻走進(jìn)了現(xiàn)實(shí)。1954年1月6日,他申請了一項(xiàng)美國專利:“用于驗(yàn)證號碼的計(jì)算機(jī)”。這種手持機(jī)械裝置旨在解決一項(xiàng)簡單的實(shí)際問題。當(dāng)時(shí),各種各樣的識別號碼(如信用卡號碼和社會保險(xiǎn)號碼)開始在人們的公共和私人生活中發(fā)揮重要作用。
但這些數(shù)字難以記憶,而且有可能被錯誤地轉(zhuǎn)錄或被人故意偽造。所以迫切需要一種能夠快速驗(yàn)證識別號碼是否有效的手段。
盧恩的掌上電腦實(shí)現(xiàn)了這一功能,這臺電腦使用了他開發(fā)的一種校驗(yàn)算法。對一串有10位數(shù)字的號碼,電腦將執(zhí)行以下操作步驟:
將每隔一位的數(shù)字翻倍
如果結(jié)果為10及以上的數(shù)字,則將該結(jié)果的各位數(shù)字加起來得到一位數(shù)字(例如“16”將變成1+ 6 = 7)
將新號碼的全部10個數(shù)字相加
乘以9
取這個結(jié)果的最后一個數(shù)字
這套方法生成了一個只有一位數(shù)字的“檢查”數(shù)。在盧恩最初的表述中,0表示原始數(shù)字是有效的。在后來的版本中,檢查數(shù)只作為最后一位數(shù)字附加到原始號碼上,以便可以輕松驗(yàn)證最后一位數(shù)字是否與盧恩機(jī)器生成的檢查數(shù)相符。這套計(jì)算序列現(xiàn)在被稱為模數(shù)10算法,至今仍被廣泛使用。分配給蜂窩電話的國際移動設(shè)備身份(IMEI)號碼就是以這種算法進(jìn)行驗(yàn)證的。
更重要的是,盧恩設(shè)備的這些原理和部件成為數(shù)字時(shí)代最重要的算法之一——哈希算法的基礎(chǔ)。這種被廣泛使用的算法,為我們提供了一種組織信息的強(qiáng)大手段,很容易被計(jì)算機(jī)找到。就像烹飪切碎的牛肉和土豆一樣,哈希算法用各種方法切割和混合數(shù)據(jù),這種數(shù)據(jù)混合如果能夠巧妙部署,將可以加速多種類型的計(jì)算機(jī)操作。
1953年初,盧恩曾撰寫一份IBM的內(nèi)部備忘錄,在文中他建議把信息放入“桶”內(nèi)以加快搜索速度。假設(shè)你想要在一個數(shù)據(jù)庫中查找一個電話號碼,并找出這個電話號碼的歸屬者,例如給定一個10位的數(shù)字號碼314-159-2652,計(jì)算機(jī)可以簡單地在列表中一次搜索一個數(shù)字,直到找到相關(guān)條目。然而,如果在一個有數(shù)百萬條數(shù)據(jù)的數(shù)據(jù)庫中進(jìn)行搜索,可能就需要好一陣子了。
盧恩的想法是將每個條目分配給一個有編號的數(shù)據(jù)桶,如下所示:將這串電話號碼的數(shù)字成對地進(jìn)行分組(此例則為:31,41,59,26,52)。然后將每對數(shù)字相加(得到4,5,14,8,7),再由每個個位數(shù)結(jié)果生成一個新的數(shù)字;
在這個例子里,有雙位數(shù)的情況下,僅取雙位數(shù)的個位數(shù)字(即得到45487)。然后原始電話號碼和與其對應(yīng)的名稱或地址就會被放入標(biāo)記為45487的數(shù)據(jù)桶里。
由電話號碼查找條目,需要先使用盧恩的方法來快速計(jì)算數(shù)據(jù)桶編號,然后從該數(shù)據(jù)桶中檢索出信息。即使每個桶包含多個條目,依次搜索單個桶也仍比搜索整個列表快得多。
幾十年來,計(jì)算機(jī)科學(xué)家和程序員們對盧恩的方法進(jìn)行了改進(jìn),并推出了新的用法。但基本的思想仍然是一致的:使用數(shù)學(xué)方法將數(shù)據(jù)組織成易于搜索的桶。由于組織和搜索數(shù)據(jù)是計(jì)算中普遍存在的問題,因此哈希算法對密碼學(xué)、圖形學(xué)、電信和生物學(xué)都是至關(guān)重要的。每當(dāng)你通過網(wǎng)絡(luò)發(fā)送一個信用卡號碼或使用文字處理器里的字典功能時(shí),哈希函數(shù)都在發(fā)揮作用。
盧恩的計(jì)算思想遠(yuǎn)遠(yuǎn)超出了簡單的查找。他認(rèn)為計(jì)算機(jī)可以是一種復(fù)雜的文本操縱器,能夠用于閱讀和理解書面語言,然后建立索引并組織信息,以解決科學(xué)和商業(yè)中的實(shí)際問題。
到1958年,他的化學(xué)卡片分類器已經(jīng)演變成了通用卡片掃描儀和9900專業(yè)索引分析儀,他曾在華盛頓特區(qū)的會議上對它們進(jìn)行展示。這些電子機(jī)械設(shè)備可以根據(jù)用戶的搜索條件,對打孔卡片進(jìn)行搜索和分類。
然而,盧恩真正引起轟動的發(fā)明是用于構(gòu)建用詞索引的計(jì)算方法KWIC。詞語索引是按字母順序排列的書或文稿中用到的關(guān)鍵詞列表,它就像是一個索引,但只列出文本中出現(xiàn)的實(shí)詞,而不是概念(并且排除了諸如a和the這樣無關(guān)緊要的詞匯)。
長期以來,詞語索引一直被應(yīng)用于神學(xué)和語言學(xué)領(lǐng)域。舉例來說,《圣經(jīng)》的詞語索引就會顯示使用了“l(fā)ove”(愛)這個詞的所有實(shí)例,包括各種引用、章節(jié)和詩句等。在全文自動檢索出現(xiàn)之前,構(gòu)建詞語索引是一項(xiàng)艱巨的工作,而且通常只會對《圣經(jīng)》或莎士比亞文集這樣的重要作品進(jìn)行。
盧恩的數(shù)據(jù)桶方案是針對數(shù)字進(jìn)行的,而他的KWIC詞語索引系統(tǒng)的目標(biāo)則是文本。兩者都使大量的信息能夠被容易地搜索到。舉一個非常簡單的例子,假設(shè)你想為以下4本書的英文名稱創(chuàng)建一
個詞語索引:《飄》(Gone with the Wind),《戰(zhàn)爭與和平》(War and Peace),《風(fēng)之影》(The Shadow of the Wind),《戰(zhàn)爭之影》(Shadows of War)。
這些書名的KWIC一致性列表會生成為:
Gone With the Wind
War and Peace
The Shadow of the Wind
Shadows of War
War and Peace
Shadows of War
Gone With the Wind
The Shadow of the Wind
KWIC算法按照所有可能的順序重新排列標(biāo)題中的單詞,然后再按字母順序?qū)⒚糠N可能列出。其結(jié)果是一個完整的關(guān)鍵詞列表(包括除介詞、連詞和冠詞以外的所有詞匯)。
科學(xué)界迅速采用了盧恩的KWIC系統(tǒng)。盧恩知道這一系統(tǒng)對商業(yè)用戶也非常有用。1958年,他為《IBM研究與發(fā)展雜志》撰寫了一篇題為《一種商業(yè)智能系統(tǒng)》的文章,其中他提出了一種可以自動生成文章摘要并從摘要中提取“行動要點(diǎn)”,然后將結(jié)果分發(fā)給組織內(nèi)相應(yīng)人員的系統(tǒng)。
盧恩認(rèn)為解決信息超載問題意味著要設(shè)計(jì)一種快速進(jìn)行信息分類的方法,讓人們免受無關(guān)材料的負(fù)擔(dān)。
《紐約時(shí)報(bào)》在盧恩1964年的訃告中這樣描述了他的自動摘要系統(tǒng):
“盧恩先生在一次演示中,將《科學(xué)美國人》雜志中一篇有2326個單詞的關(guān)于神經(jīng)系統(tǒng)荷爾蒙的文章,以磁帶的形式插入到一臺IBM計(jì)算機(jī)中,并按下一個按鈕。3分鐘后,計(jì)算機(jī)的自動打字機(jī)打出了4個句子,這4個句子給出了文章的要點(diǎn),也就是說,機(jī)器已經(jīng)自動生成了摘要。”
盧恩的自動摘要程序首先會計(jì)算一篇文章中所有單詞出現(xiàn)的頻率,在舍去非常常見的單詞之后,系統(tǒng)會自動鎖定高頻詞匯集中出現(xiàn)的一些句子。這樣的句子會被系統(tǒng)認(rèn)定為文章整體內(nèi)容的代表,因此會被放入摘要中。
這是一種純粹的統(tǒng)計(jì)方法,而非試圖去理解文章中的詞匯或它們之間的關(guān)系。但是,就像KWIC系統(tǒng)展示的這樣,計(jì)算機(jī)能夠富有成效地將文本組織成人們更易理解的形式。
盧恩1961年從IBM退休,3年后因白血病離開人世,未能目睹互聯(lián)網(wǎng)和網(wǎng)頁帶來的深刻變革。除了在一些信息專家、紡織品制造商和歷史學(xué)家的有限圈子外,他的名字早已被人遺忘。但是,盧恩的思想是永恒的。今天,哈希算法在管理和保護(hù)我們的數(shù)字生活方面扮演著重要的角色。
當(dāng)你在網(wǎng)站上輸入密碼時(shí),服務(wù)器可能會存儲密碼的哈希版本。當(dāng)你使用安全連接訪問網(wǎng)絡(luò)(網(wǎng)址以“https”開頭)或使比特幣買東西時(shí),哈希算法也發(fā)揮著作用。對于Dropbox和谷歌Drive等云服務(wù)來說,哈希算法使得存儲和共享文件的效率更高。在遺傳學(xué)和其他數(shù)據(jù)密集型研究中,哈希算法則大大減少了篩選大量數(shù)據(jù)所需的計(jì)算時(shí)間。
哈希算法已經(jīng)將計(jì)算機(jī)變成可以用字母和單詞進(jìn)行推理的文本工具。谷歌翻譯、谷歌N-gram、谷歌關(guān)鍵字廣告和谷歌搜索都致力于以某種方式確定文本的含義。網(wǎng)絡(luò)上的信息爆炸已經(jīng)使自動閱讀和理解對商業(yè)、科學(xué)、和每個人來說都至關(guān)重要。哈希算法的發(fā)展與文本相聯(lián)系,體現(xiàn)了盧恩對文字、句子、關(guān)鍵詞、摘要、索引和文摘的思考。
這是盧恩留給我們的遺產(chǎn):他向我們展示了電腦和計(jì)算不僅僅是數(shù)學(xué)、統(tǒng)計(jì)和邏輯的天下,而且也是語言、語言學(xué)和文學(xué)的疆土。在他那個時(shí)代,這是一種關(guān)于機(jī)器的革命性的想法。
技術(shù)史學(xué)家邁克爾·馬奧尼(MichaelMahoney)稱計(jì)算機(jī)是 “一臺千變?nèi)f化的機(jī)器”:它們一機(jī)千面,靜待打造,用途多樣。即便是現(xiàn)在,我們也往往把計(jì)算機(jī)狹義地看作是一個每秒能夠執(zhí)行多項(xiàng)計(jì)算和操作的大型數(shù)字計(jì)算器。漢斯·彼得·盧恩對計(jì)算機(jī)的看法則更有遠(yuǎn)見。在展望計(jì)算機(jī)的多樣性時(shí),他幫助我們開拓了諸多前景光明的全新探索領(lǐng)域。
編輯:jq
-
機(jī)械
+關(guān)注
關(guān)注
8文章
1626瀏覽量
40780 -
電氣
+關(guān)注
關(guān)注
18文章
1173瀏覽量
53322 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7544瀏覽量
88654
原文標(biāo)題:漢斯?彼得?盧恩與哈希算法的誕生
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
漢得利全方位展示最新技術(shù)
華納云:Chord算法如何管理節(jié)點(diǎn)間的聯(lián)系?
開源物聯(lián)網(wǎng)技術(shù)--哈希算法MD5加密功能技術(shù)分享
![開源物聯(lián)網(wǎng)技術(shù)--<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>MD5加密功能技術(shù)分享](https://file1.elecfans.com//web2/M00/08/0B/wKgaombtOz-ASVxHAABR-lJVFg0463.jpg)
科沃斯機(jī)器人大模型算法通過國家備案
《計(jì)算》閱讀體驗(yàn)】畢達(dá)哥拉斯的困惑 筆記
Wastebook使奧盧市成為芬蘭智能廢物管理之都
![Wastebook使奧<b class='flag-5'>盧</b>市成為芬蘭智能廢物管理之都](https://file1.elecfans.com//web2/M00/E6/B2/wKgaomZEc_2AZdh4AAFdZKj7dAc769.png)
利恩斯(LNS)推出微型單軸IEPE傳感器B01CM5
簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
簡儀同步水聲及振動采集系統(tǒng)解決方案
![<b class='flag-5'>簡</b>儀同步水聲及振動采集系統(tǒng)解決方案](https://file1.elecfans.com/web2/M00/C7/C0/wKgZomYWMTSAbnL3AAAr_JCpv4A581.png)
評論