簡體   English   中英

優化集合和組合

[英]Optimizing Sets and Combinations

我有一堆,A1,A2,A3,... AN。 每個集合包含N個元素(最多可以說1000個),值從0到2000。

A1{1,2,3,4}
A2{2,4,3,5}
A3(1,2,5,6)

現在對於大小為k(例如3)的A1的組合為C1(1,2,3),C2(1,2,4),C3(2,3,4)對於A1到AN,我需要弄清楚如果A1中的所有組合也存在於A2與AN的組合中。

也就是說,A1的組合C3將匹配A2中的組合,甚至可能匹配AN。 現在我需要A1的C1和C2以及A2到AN的結果。 一種簡單而低效的方法是為所有集合A1至AN生成k個大小的所有組合。 然后對於A的C1,如果/如果存在於A2,則到AN。 之后是C2,然后是C3。 然后移至下一組並重復。

添加新的設置后,由於需要頻繁且昂貴的計算,因此我該如何改進它?

我發現的另一種解決方案無需優化即可在O(N ^ 2 + N)中運行,這基本上涉及獲取A1和A2的交點... AN,計算這些交點的組合,然后查看這些組合中的每個組合有多少次發生在生成的結果中。

您可以嘗試哈希組合。 您可以在此處使用2種方法,一種可以優化空間,另一種可以優化時間。 為了優化時間,您的哈希函數將為每個組合創建一個唯一的鍵,並且每當您在已經有人居住的地方被擊中時,您就會知道您不是第一次遇到該組合。 對於空間優化,方法類似,但是密鑰不是唯一的。 您將必須管理與該鍵對應的組合的列表,並在命中時遍歷該鍵,以查看其中是否包含您當前正在檢查的組合。 密鑰的唯一性等級將定義表的大小,從而決定驗證命中所花費的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM