試圖瞭解線性探測邏輯。正在搜索不存在O(n)的值的哈希表? (線性探測)
使用開放尋址作爲散列表,你怎麼能確認一個元素不在表中。
例如,假設你有一個10桶散列表。 假設你散列一個密鑰並插入它。現在,如果元素A和B將被插入並散列並減少到相同的桶,那麼如果使用線性探測器,則元素A和B可能彼此相鄰。
現在,僅僅因爲存儲桶是空的,似乎並不意味着地圖中不存在元素。例如您首先刪除元素A後搜索元素B.首先你會得到一個空桶,你期待B的存在,但是你需要再去探索一次,你會發現B,它確實存在。如果這個邏輯是正確的,那麼你不需要搜索整個表來確認一個密鑰是否不存在?即每次O(n)表演。
我說的是,你不需要通過整個地圖來真正確認它不存在嗎?
使用散列映射的單獨鏈接方法,該問題不存在。
編輯: 我的意思是在看這幅畫 http://upload.wikimedia.org/wikipedia/commons/b/bf/Hash_table_5_0_1_1_1_1_0_SP.svg
如果約翰·史密斯被刪除,我們試圖找到桑德拉·迪伊。
或者對於線性尋址,您的意思是移動元素以避免出現孔洞。即如果約翰·史密斯被刪除,如果152到154的元素被移回一個地方?它在描述中並沒有真正看到,但這可能會有一定意義。除了如上所述特德貝克加速到154而不是153。需要多一點工作,比我想象的多一點。
可能只是在每個存儲桶中使用簡單的鏈接列表。
找到一個很好的散列表教程。 http://research.cs.vt.edu/AVresearch/hashing/ – Matt 2011-06-14 22:56:07