紹介
- 2021年秋、Rutgers University の学部生 Andrew Krapivin は、彼の人生を変えることになる論文に出会った。
- その論文は、コンピュータメモリ内で情報を指し示す「小さなポインタ」に関するものだった。
- Krapivin は、ポインタをより小さくしてメモリ消費を減らす方法を考案した。
新しいハッシュテーブルの発見
- Krapivin は、データを保存する一般的な方法であるハッシュテーブルを使って実験を行った。
- 実験の過程で、Krapivin は従来よりも高速に動作する新しい種類のハッシュテーブルを発明した。
- この発見は、40年来のデータサイエンスの推測を覆す結果をもたらした。
ハッシュテーブルの重要性
- ハッシュテーブルは、コンピュータサイエンスで最も古いデータ構造の1つであり、データ保存の効率性を提供する。
- ハッシュテーブルは、要素の検索、削除、挿入という3つの機能を実行できるよう設計されている。
Yao の推測とその反証
- 1985年、コンピュータサイエンティスト Andrew Yao は、特定の性質を持つハッシュテーブルで最悪の場合に要素を見つける方法についての推測を提示した。
- Krapivin の新しいハッシュテーブルは Yao の推測を反証し、最悪の場合のクエリと挿入に必要な時間が
(log x)² に比例することを証明した。
平均クエリ時間に関する新たな発見
- Krapivin と彼のチームは、非貪欲なハッシュテーブルでは平均クエリ時間が
x に依存しないことを示した。
- これは、ハッシュテーブルの充満度に関係なく、一定の平均クエリ時間を達成できることを意味する。
結論
- この研究はハッシュテーブルへの理解を深め、実用的な応用につながる可能性がある。
- データ構造に対するこのような理解は、将来の実践的な改善に向けた基盤となり得る。
1件のコメント
Hacker Newsの意見
KrapivinはYaoの予想を知らないままブレークスルーを成し遂げた
素晴らしい結果だが、コンピュータサイエンスの予想と呼ぶべきだと思う
この実装を持つGitHubリポジトリを知っている人がいるのか気になる
すごいが、この記事の「有名人化」スタイルは少し居心地が悪い
新しいハッシュテーブルでは、最悪の場合のクエリと挿入に必要な時間は
(log x)²に比例するこの記事を読むのはMonty-Hall問題の説明を読むようなものだ
最近の良いテストだ
「Tiny pointers」の簡単な実装を持っている人がいるのか気になる
<i>Scooby Doo</i>の悪役がいつも言っていたように:
論文をざっと読んだところ、彼らが使った主な違いは、ハッシュテーブルの挿入アルゴリズムが最初の空きスロットを貪欲に埋める代わりに、より遠くまで探索することだ
興味深い理論的結果だが、実際には必要以上に大きなテーブルを割り当てる現在の「トリック」のほうが良い解決策になりそうだ