例如,集合覆蓋決策問題已知是一個NP完全問題。這個問題的輸入是宇宙U,U的子集S和一個整數k()。 我很困惑的一件事是,如果讓k = 1,那麼通過簡單地檢查S中的每個元素,顯然問題可以在時間| S |中解決。更一般地,當k是常數,問題可以用| S |的多項式時間來解決。在這樣的方式,時間複雜度成倍成爲僅高當k也增加| S |像| S |/2,| S |/3 ...... 所以我這裏還有我的問題:
我在Python中調用itertools(請參見下文)。在此代碼中,snp_dic是一個包含整數鍵並設置爲值的字典。這裏的目標是找到值的聯合的最小列表,其組合等於set_union。 (這相當於爲您感興趣的人們解決流行的NP-hard圖論問題集覆蓋的全局最優)!下面的算法工作,但這裏的目標是優化。 我看到的最明顯的優化與itertools有關。假設對於長度r,在snp_dic的union = se
我試圖用貪婪算法實現設置覆蓋問題的解決方案。 它經典的貪心近似算法是 input: collection C of sets over universe U , costs: C→R ≥0
output: set cover S
1. Let S←∅.
2. Repeat until S covers all elements:
3. Add a set s to S, where s∈