Dot-Net
搜尋中的重要資料結構
我有興趣自學不同的資料結構,我目前對此知之甚少。我的計劃是實施一些關鍵結構,以便我了解它們是如何工作的。我正在尋找有關重要資料結構的建議。
我主要對與搜尋應用程序(例如 Google / Lucene)相關的資料結構以及延遲計算和預計算之間的一般權衡感興趣。我還對分佈式資料結構感興趣——可以在成百上千台伺服器上擴展的資料結構——以及機率資料結構——有助於找到近似答案但不需要總是正確的資料結構。
維基百科有一個資料結構列表。我目前正在考慮:
- 雜湊表
- B+-樹
- R-樹
- KD樹
- 基數樹
- 布隆過濾器
有更好的選擇嗎?
最後,用像 F# 這樣的語言實現這些結構是否有任何(主要)問題?
很有野心。我投票支持你的問題只是因為它的範圍。
麻省理工學院有一個線上算法和資料結構課程。配套書是經典之作。我不確定它是否解決了分佈式和機率特性,但它們會給你一個很好的基礎知識。
我會將紅黑樹、雜湊表、patricia trie 和跳過列表添加到您的議程中。
祝你好運。
如果你打算用函式式語言來處理這類事情,你應該看看Chris Okasaki 的Purely Functional Data Structures。基本教訓是:您熟悉的命令式程式資料結構可能不是函式式程式的最佳選擇。我希望有很多類似的材料可供Google搜尋。