機器之心編譯自量子雜志
作者:Steve Nadis
1985 年,著名計算機科學家、圖靈獎得主姚期智提出了一個與哈希表有關的猜想。現在,40 年過去了,一名本科生卻成功推翻了這個猜想。而這項成就卻源自一個始于 2021 年秋的故事。
量子雜志近日報道了這個故事,機器之心編譯了該文章以饗讀者。
原文地址:
https://www.quantamagazine.org/undergraduate-upends-a-40-year-old-data-science-conjecture-20250210/
2021 年秋季的某天,羅格斯大學的一位本科生 Andrew Krapivin 遇到了一篇論文,而這篇論文將改變他的一生。不過那時候,Krapivin 倒沒有多想。兩年之后,當他終于有空細讀這篇論文時(他說當時只是為了好玩),他還沒意識到:他的工作將讓人重新審視計算機科學領域一種被廣泛使用的工具。
這篇論文題為「Tiny Pointers」,即微型指針。這是一種類似箭頭的東西,指向的是計算機內存中的一段信息或一個元素。Krapivin 很快就發現了一種有望進一步降低指針內存使用量的方法。但首先,他需要一種更好的方法來組織指針指向的數據。
論文標題:Tiny Pointers
論文地址:https://arxiv.org/pdf/2111.12800
他的方法是使用一種常用于存儲數據的方法,即哈希表(hash table)。在探索研究的過程中,Krapivin 最終發現了一種新的哈希表。并且這種新哈希表的工作速度更快 —— 用更少的時間和步數便能找到指定元素。
不過,Krapivin 之前的教授 Martín Farach-Colton 起初對這個新設計深感懷疑,畢竟哈希表似乎早已被人研究透了,很難再取得新進展。
但直覺上的看法并不一定總是對的。為了確認這個新設計的有效性,Farach-Colton 邀請了卡內基梅隆大學的 William Kuszmaul 檢查 Krapivin 的新發明。
Kuszmaul 深感振奮。他記得自己當時對 Krapivin 說:「你不只是想出了一個很酷的哈希表,你實際上徹底推翻了一個已有 40 年的猜想!」
本科生推翻存在 40 年的猜想
Krapivin 推翻的是著名計算機科學家、圖靈獎得主姚期智在 1985 年提出的一項研究。
他們的研究過程是這樣的。1 月份,劍橋大學研究生 Krapivin、任職于紐約大學的 Farach-Colton 以及 Kuszmaul 共同發表了一篇文章。
這篇文章重新探討了開放尋址哈希表(open-addressed hash table)的最優搜索復雜度,以便在檢索時能以盡可能少的探測次數找到元素。文章提出了兩種新的哈希表插入策略 —— 彈性哈希(elastic hashing)和漏斗哈希(funnel hashing),并證明了,即使不隨時間重新排列元素,也可以構建一種哈希表,其預期的搜索復雜度(無論是攤銷復雜度還是最壞情況)遠超以往認為可能的水平。
論文標題:Optimal Bounds for Open Addressing Without Reordering
論文地址:https://arxiv.org/pdf/2501.02305
在論文摘要部分,他們強調了這項研究推翻了姚期智在其開創性論文《Uniform Hashing is Optimal》中留下的核心猜想,并給出了相關的下界證明。
眾所周知,哈希表在計算領域已變得無處不在,主要在于其簡單性和易用性。它通過將數據映射到一個固定大小的數組中,從而實現快速的插入、刪除和查詢操作。哈希表的核心思想是利用哈希函數(Hash Function)將數據的鍵(Key)轉換為數組的索引(Index),從而快速定位數據存儲的位置。
最早的哈希表可以追溯到 20 世紀 50 年代初,自那時起,計算機科學家一直在研究和使用它們。研究人員希望弄清楚這些操作的速度極限。例如,新的搜索或插入可能有多快?
Martín Farach-Colton 幫助 Krapivin 證明了新哈希表與一個長期存在的猜想相矛盾
答案通常取決于在哈希表中找到一個空位所需的時間。而這通常又取決于哈希表的填充程度。
填充程度可以用百分比表示,比如 50% 或 90%,但在研究中,哈希表往往接近完全填滿。
為了更精確地描述這種高填充狀態,研究者們可能會使用一個整數(記作 x)來表示哈希表接近 100% 滿的程度。如果 x 是 100,那么哈希表是 99% 滿的;如果 x 是 1,000,那么哈希表是 99.9% 滿的。
這種衡量填充程度的方法為評估執行查詢或插入等操作所需的時間提供了一種便捷的方式。
此前,研究人員得出這樣一個結論,對于某些常見的哈希表,執行最壞情況下插入操作所需的預期時間與 x 成正比。Kuszmaul 表示:「如果你的哈希表是 99% 滿的,那么你需要查看大約 100 個不同的位置才能找到一個空閑槽位,這種情況是合理的。」
著名計算機科學家姚期智在這篇論文中提出,在具有特定屬性的哈希表中,查找單個元素或空位的最佳方法是隨機地遍歷潛在的位置 —— 這種方法被稱為均勻探測(uniform probing)。他還指出,在最壞的情況下(即尋找最后一個空閑位置時),你無法做得比 x 更好。
論文標題:Uniform Hashing Is Optimal
論文地址:https://dl.acm.org/doi/pdf/10.1145/3828.3836
40 年來,大多數計算機科學家都認為姚期智的猜想是正確的。
Krapivin 沒有囿于傳統的想法,原因很簡單:他不知道這個傳統的想法。他說:「我在不知道姚期智猜想的情況下做到了這一點。」這讓 Tapline 聯合創始人兼 CEO 不禁在 上感嘆說:「無知也是一種福氣。」
Krapivin 在微型指針方面進行的探索最終得到了一種新的哈希表 —— 一種不依賴于均勻探測的哈希表。
對于這種新的哈希表,最壞情況查詢和插入所需的時間與 (log x)2 成正比 —— 比 x 快得多。這個結果直接與姚期智的猜想相矛盾。Farach-Colton 和 Kuszmaul 幫助 Krapivin 證明了 (log x)2 是姚期智所寫的常見哈希表類別的最佳、不可超越的界限。
卡內基梅隆大學的 Guy Blelloch 贊道:「這個結果非常美妙,因為它重新審視并解決了這樣一個經典問題。」
滑鐵盧大學的 Sepehr Assadi 表示:「他們不僅證否了 [姚期智猜想],還找到了該問題的最佳答案。我們原本可能還要再等 40 年才能知道這個正確答案。」
Krapivin 在劍橋大學的國王學院橋上。他的新哈希表可以超出研究者預料的速度更快地查找和存儲數據。
除了證否姚期智的猜想外,這篇論文還包含許多更驚人的結果。這與一個相關但略有不同的情況有關:1985 年,姚期智不僅研究了查詢的最壞情況時間,還研究了所有可能查詢的平均時間。他證明:具有某些屬性的哈希表(包括被標記為「貪婪」的哈希表,這意味著新元素必須放在第一個可用位置)的平均時間永遠不會比 log x 好。
Farach-Colton、Krapivin 和 Kuszmaul 想看看對于非貪婪哈希表,這個限制是否同樣適用。
最終,他們表明這個限制不適用。證明過程很簡單,他們提供了一個反例,即一個平均查詢時間遠遠好于 log x 的非貪婪哈希表。事實上,它根本與 x 無關。
Farach-Colton 說:「你會得到一個數值,而這個數值就是一個常量,與哈希表的填滿程度沒有關系。」也就是說,無論這個哈希表的填滿程度如何,平均查詢時間都是一個常量。
這一事實大出人們意料 —— 甚至連這幾位作者自己也沒有想到。
Conway 說,該團隊得到的結果可能不會帶來任何直接的應用,但這并不重要。「更好地理解這些類型的數據結構很重要。你不知道這樣的結果何時會造就一些東西,從而讓你創造更好的實踐。」
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.