本科生推翻姚期智40年前的猜想,雜湊表的平均查詢時間竟與填滿程度無關

机器之心發表於2025-02-11
1985 年,著名電腦科學家、圖靈獎得主姚期智提出了一個與雜湊表有關的猜想。現在,40 年過去了,一名本科生卻成功推翻了這個猜想。而這項成就卻源自一個始於 2021 年秋的故事。

量子雜誌近日報導了這個故事,機器之心編譯了該文章以饗讀者。
image.png
原文地址:https://www.quantamagazine.org/undergraduate-upends-a-40-year-old-data-science-conjecture-20250210/

2021 年秋季的某天,羅格斯大學的一位本科生 Andrew Krapivin 遇到了一篇論文,而這篇論文將改變他的一生。不過那時候,Krapivin 倒沒有多想。兩年之後,當他終於有空細讀這篇論文時(他說當時只是為了好玩),他還沒意識到:他的工作將讓人重新審視電腦科學領域一種被廣泛使用的工具。

這篇論文題為「Tiny Pointers」,即微型指標。這是一種類似箭頭的東西,指向的是計算機記憶體中的一段資訊或一個元素。Krapivin 很快就發現了一種有望進一步降低指標記憶體使用量的方法。但首先,他需要一種更好的方法來組織指標指向的資料。
image.png
  • 論文標題:Tiny Pointers
  • 論文地址:https://arxiv.org/pdf/2111.12800

他的方法是使用一種常用於儲存資料的方法,即雜湊表(hash table)。在探索研究的過程中,Krapivin 最終發現了一種新的雜湊表。並且這種新雜湊表的工作速度更快 —— 用更少的時間和步數便能找到指定元素。

不過,Krapivin 之前的教授 Martín Farach-Colton 起初對這個新設計深感懷疑,畢竟雜湊表似乎早已被人研究透了,很難再取得新進展。

但直覺上的看法並不一定總是對的。為了確認這個新設計的有效性,Farach-Colton 邀請了卡內基梅隆大學的 William Kuszmaul 檢查 Krapivin 的新發明。

Kuszmaul 深感振奮。他記得自己當時對 Krapivin 說:「你不只是想出了一個很酷的雜湊表,你實際上徹底推翻了一個已有 40 年的猜想!」

image.png

Andrew Krapivin 顛覆了人們對雜湊表的普遍看法 —— 即便他一開始並沒有這樣的打算。雜湊表是電腦科學中被研究得最透徹的工具之一。

本科生推翻存在 40 年的猜想

Krapivin 推翻的是著名電腦科學家、圖靈獎得主姚期智在 1985 年提出的一項研究。

他們的研究過程是這樣的。1 月份,劍橋大學研究生 Krapivin、任職於紐約大學的 Farach-Colton 以及 Kuszmaul 共同發表了一篇文章。

這篇文章重新探討了開放定址雜湊表(open-addressed hash table)的最優搜尋複雜度,以便在檢索時能以儘可能少的探測次數找到元素。文章提出了兩種新的雜湊表插入策略 —— 彈性雜湊(elastic hashing)和漏斗雜湊(funnel hashing),並證明了,即使不隨時間重新排列元素,也可以構建一種雜湊表,其預期的搜尋複雜度(無論是攤銷複雜度還是最壞情況)遠超以往認為可能的水平。
image.png
  • 論文標題:Optimal Bounds for Open Addressing Without Reordering
  • 論文地址:https://arxiv.org/pdf/2501.02305

在論文摘要部分,他們強調了這項研究推翻了姚期智在其開創性論文《Uniform Hashing is Optimal》中留下的核心猜想,並給出了相關的下界證明。

眾所周知,雜湊表在計算領域已變得無處不在,主要在於其簡單性和易用性。它透過將資料對映到一個固定大小的陣列中,從而實現快速的插入、刪除和查詢操作。雜湊表的核心思想是利用雜湊函式(Hash Function)將資料的鍵(Key)轉換為陣列的索引(Index),從而快速定位資料儲存的位置。

最早的雜湊表可以追溯到 20 世紀 50 年代初,自那時起,電腦科學家一直在研究和使用它們。研究人員希望弄清楚這些操作的速度極限。例如,新的搜尋或插入可能有多快?
image.png
Martín Farach-Colton 幫助 Krapivin 證明了新雜湊表與一個長期存在的猜想相矛盾

答案通常取決於在雜湊表中找到一個空位所需的時間。而這通常又取決於雜湊表的填充程度。

填充程度可以用百分比表示,比如 50% 或 90%,但在研究中,雜湊表往往接近完全填滿。

為了更精確地描述這種高填充狀態,研究者們可能會使用一個整數(記作 x)來表示雜湊表接近 100% 滿的程度。如果 x 是 100,那麼雜湊表是 99% 滿的;如果 x 是 1,000,那麼雜湊表是 99.9% 滿的。

這種衡量填充程度的方法為評估執行查詢或插入等操作所需的時間提供了一種便捷的方式。

此前,研究人員得出這樣一個結論,對於某些常見的雜湊表,執行最壞情況下插入操作所需的預期時間與 x 成正比。Kuszmaul 表示:「如果你的雜湊表是 99% 滿的,那麼你需要檢視大約 100 個不同的位置才能找到一個空閒槽位,這種情況是合理的。」

著名電腦科學家姚期智在這篇論文中提出,在具有特定屬性的雜湊表中,查詢單個元素或空位的最佳方法是隨機地遍歷潛在的位置 —— 這種方法被稱為均勻探測(uniform probing)。他還指出,在最壞的情況下(即尋找最後一個空閒位置時),你無法做得比 x 更好。
image.png
  • 論文標題:Uniform Hashing Is Optimal
  • 論文地址:https://dl.acm.org/doi/pdf/10.1145/3828.3836

40 年來,大多數電腦科學家都認為姚期智的猜想是正確的。

Krapivin 沒有囿於傳統的想法,原因很簡單:他不知道這個傳統的想法。他說:「我在不知道姚期智猜想的情況下做到了這一點。」這讓 Tapline 聯合創始人兼 CEO 不禁在 𝕏 上感嘆說:「無知也是一種福氣。」
image.png
Krapivin 在微型指標方面進行的探索最終得到了一種新的雜湊表 —— 一種不依賴於均勻探測的雜湊表。

對於這種新的雜湊表,最壞情況查詢和插入所需的時間與 (log x)² 成正比 —— 比 x 快得多。這個結果直接與姚期智的猜想相矛盾。Farach-Colton 和 Kuszmaul 幫助 Krapivin 證明了 (log x)² 是姚期智所寫的常見雜湊表類別的最佳、不可超越的界限。

卡內基梅隆大學的 Guy Blelloch 讚道:「這個結果非常美妙,因為它重新審視並解決了這樣一個經典問題。」

滑鐵盧大學的 Sepehr Assadi 表示:「他們不僅證否了 [姚期智猜想],還找到了該問題的最佳答案。我們原本可能還要再等 40 年才能知道這個正確答案。」
image.png
Krapivin 在劍橋大學的國王學院橋上。他的新雜湊表可以超出研究者預料的速度更快地查詢和儲存資料。

除了證否姚期智的猜想外,這篇論文還包含許多更驚人的結果。這與一個相關但略有不同的情況有關:1985 年,姚期智不僅研究了查詢的最壞情況時間,還研究了所有可能查詢的平均時間。他證明:具有某些屬性的雜湊表(包括被標記為「貪婪」的雜湊表,這意味著新元素必須放在第一個可用位置)的平均時間永遠不會比 log x 好。

Farach-Colton、Krapivin 和 Kuszmaul 想看看對於非貪婪雜湊表,這個限制是否同樣適用。

最終,他們表明這個限制不適用。證明過程很簡單,他們提供了一個反例,即一個平均查詢時間遠遠好於 log x 的非貪婪雜湊表。事實上,它根本與 x 無關。

Farach-Colton 說:「你會得到一個數值,而這個數值就是一個常量,與雜湊表的填滿程度沒有關係。」也就是說,無論這個雜湊表的填滿程度如何,平均查詢時間都是一個常量。

這一事實大出人們意料 —— 甚至連這幾位作者自己也沒有想到。

Conway 說,該團隊得到的結果可能不會帶來任何直接的應用,但這並不重要。「更好地理解這些型別的資料結構很重要。你不知道這樣的結果何時會造就一些東西,從而讓你創造更好的實踐。」

相關文章