我目前正在實現一個算法,其中一個特定的步驟需要我以下面的方式計算子集。整數列表的子集計算
想象一下,我有整數集(可能是數百萬)。其中,各組可能包含大約1000元:
Set1: [1, 3, 7]
Set2: [1, 5, 8, 10]
Set3: [1, 3, 11, 14, 15]
...,
Set1000000: [1, 7, 10, 19]
想象一個特定的輸入設置:
InputSet: [1, 7]
我現在要迅速計算出此InputSet是一個子集。在這種特殊情況下,它應該返回Set1和Set1000000。
現在,蠻力它需要太多的時間。我也可以通過Map/Reduce進行並行處理,但我正在尋找更智能的解決方案。而且,在某種程度上,它應該是內存有效的。我已經使用BloomFilters快速消除了輸入集永遠不會成爲子集的集合,從而優化了計算。
任何聰明的技巧,我錯過了?
謝謝!
什麼語言?你有樣品代碼嗎? – fge
語言並不重要(儘管Java將是首選)。尋找更多的概念性解決方案。 – user1943042
如果這是Java,'Set'已經有'.containsAll()',我想你已經試過了?或者你真的想避免內建解決方案?此外,你的集合是否總是排序? – fge