如何創建布隆過濾器以從O(n)時間複雜度的整數流中移除重複元素O(1)空間複雜度? 如果可能的話,如果有人能指出我正確的方向,我將不勝感激。布隆過濾器從O(n)中的整數流中移除重複項
1
A
回答
4
我相當肯定,它只是:
對於每一個元素:
- 檢查它是否在布隆過濾器中存在,如果這樣做,很可能重複
- 將其插入布隆過濾器
現在有兩個問題:
- 存在誤報的可能性
- 它不是真正的O(1)空間(但有些人可能會這麼說),因爲大小需要在某種程度上取決於(唯一)元素的數量,否則,隨着我們增加元素的數量,錯誤率將顯着增加。
我不相信任何這些問題都可以避免給定的限制 - 都是使用(只)布隆過濾器的組成部分。
如果我們不是在處理流,而是在處理一個列表,我們可以通過記錄bloom過濾器拾取的所有元素並再次遍歷列表來檢查候選列表,從而消除誤報以確保它們是實際的重複項目。這仍然是O(n)時間,但顯然不是O(1)空間。
1
Google Guava提供了bloom過濾器實現。
請注意,bloom濾波器本身是不夠的。如果布隆過濾器聲稱數字不在其中,那麼它不在其中。但如果它聲稱這個數字已經在其中,那麼就有可能是錯的。所以你需要在那裏有另一個數據結構,並確保使用bloomfilter來減少數據結構中的查找次數。
相關問題
- 1. 數組中的重複項 - 可能在o(n)中解決?
- 2. 如何修改我的方法來搜索並刪除O(N)或O(N * log N)中的重複項?
- 3. 使用布隆過濾器
- 4. 組合布隆過濾器
- 5. 布隆過濾器設計
- 6. 如何從O(n)運行時間的答案中刪除重複項?
- 7. 將素數過濾代碼-O(n^2)改爲O(n)並刪除數組中的冗餘元素
- 8. Java I/O流過濾器的示例
- 9. 根據列中的重複項從數據中刪除整行
- 10. 計算布隆過濾器中的正確比特數
- 11. 提取cassandra的布隆過濾器
- 12. 刪除流中的重複項(方案)
- 13. 使用過濾器函數刪除Flex 4 XMLList中的重複項
- 14. 過濾VBA中的重複項
- 15. 過濾表中的重複項
- 16. Excel中過濾重複的項目值
- 17. 過濾列表中的重複項
- 18. 在布隆過濾器中使用散列函數
- 19. 移除視圖中的重複項目
- 20. 從在C/C++在O(n)的時間的陣列中刪除重複
- 21. MySQL按位操作,布隆過濾器
- 22. 使用awk刪除2個過濾文件中的重複項
- 23. VBA - 刪除過濾列中的重複項
- 24. Lucene過濾器刪除重複屬性
- 25. Django的查詢過濾器排除重複項目
- 26. 在mysql中過濾沒有重複項
- 27. PHP從數組中刪除重複項
- 28. 從數據庫中刪除重複項
- 29. 重構Rails中的複雜過濾器
- 30. SQL中的過濾器重複連接
也許這可能會幫助你:http://stackoverflow.com/a/1542837/895932 – justhalf