麻省理工學院 CSAIL 一項關于線性探測哈希表的新研究成果,有望讓計算機更有效地存儲和檢索數據。該成果由該校計算機科學博士生 William Kuszmaul 在內的三人研究小組取得,對 1954 年推出的“線性探測哈希表”進行了優化。
“線性探測哈希表”于 1954 年推出,是當今最古老、最簡單和最快的數據結構之一。數據結構提供了在計算機中組織和存儲數據的方法,而哈希表是最常用的方法之一。在線性探測哈希表中,可以存儲信息的位置是沿著一個線性陣列。
例如,假設一個數據庫被設計用來存儲 10000 人的身份證號碼,Kuszmaul 建議:“我們取你的身份證號碼x,然后計算 x 的哈希函數,h(x),它給你一個 1 到10000之間的隨機數。下一步是拿著這個隨機數 h(x),走到數組中的那個位置,把 x,即身份證號碼,放到那個位置”。
Kuszmaul 說,如果已經有東西占據了那個位置,你只需前進到下一個空閑位置并把它放在那里。這就是“線性探測”一詞的由來,因為你一直線性地向前移動,直到找到一個空位。
為了以后檢索那個社會安全號碼,x,你只要去指定的位置,h(x),如果它不在那里,你就向前走,直到你找到 x 或來到一個空閑位置,并得出結論說 x 不在你的數據庫中。
對于刪除一個項目,如社會安全號碼,有一個有點不同的協議。如果你在刪除信息后只是在哈希表中留下一個空位,那么當你后來試圖尋找其他東西時就會造成混亂,因為這個空位可能會錯誤地暗示你正在尋找的項目在數據庫中無處可尋。為了避免這個問題,Kuszmaul 解釋說,你可以去元素被移除的地方,在那里放一個叫做“墓碑”(tombstone)的小標記,表示這里曾經有一個元素,但現在已經消失了。
這個常規程序已經被遵循了半個多世紀。但在所有這些時間里,幾乎所有使用線性探測哈希表的人都認為,如果你允許它們變得太滿,長長的被占點會跑到一起形成"集群"。因此,找到一個空閑位置所需的時間會急劇上升--事實上是四倍--需要如此長的時間,以至于不切實際。因此,人們被訓練成在低容量下操作哈希表--這種做法會影響公司必須購買和維護的硬件數量,從而造成經濟損失。
該團隊還設計了一種新的策略,稱為“墓地散列”(graveyard hashing),其中包括人為地增加放置在陣列中的墓碑數量,直到它們占據了大約一半的空閑位置。然后,這些墓碑保留了可用于未來插入的空間。
Kuszmaul 說,這種方法與人們習慣上被指示的做法相反,"可以導致線性探測哈希表的最佳性能"?;蛘?,正如他和他的合作者在他們的論文中所堅持的那樣,"精心設計的墓碑的使用可以完全改變......線性探測的行為方式。"
版權與免責聲明:
凡本站注明“來源:智能制造網”的所有作品,均為浙江興旺寶明通網絡有限公司-智能制造網合法擁有版權或有權使用的作品,未經本站授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:智能制造網”。違反上述聲明者,本站將追究其相關法律責任。
本站轉載并注明自其它來源(非智能制造網)的作品,目的在于傳遞更多信息,并不代表本站贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。如其他媒體、平臺或個人從本站轉載時,必須保留本站注明的作品第一來源,并自負版權等法律責任。如擅自篡改為“稿件來源:智能制造網”,本站將依法追究責任。
鑒于本站稿件來源廣泛、數量較多,如涉及作品內容、版權等問題,請與本站聯系并提供相關證明材料:聯系電話:0571-89719789;郵箱:1271141964@qq.com。