假設C
涉及一組容器{c1,c2,c3....cn}
,其中這些容器中的每一個都包含一組有限的整數{i1,i2,i3...im}
。此外,假設一個整數可能存在於多個容器中。給定一組有限整數S
{s1,s2,s3...sz}
,找到包含S
中所有整數的最小子集C
的大小。包含所有給定元素的容器的最小數量
請注意,可能有成千上萬個容器,每個容器都有數百個整數。因此,蠻力對於解決這個問題很慢。
我試圖用貪婪算法解決這個問題。也就是說,每次我選擇集合中數量最多的容器時,集合S
,但我失敗了!
任何人都可以提出一個快速的算法來解決這個問題嗎?
該算法如何與生物信息學相關? –
這是衆所周知的[設置封面問題](http://en.wikipedia.org/wiki/Set_cover_problem)。它是NP完全的,因此沒有高效的算法是已知的。貪婪算法可以完成(除非P = NP)。 –
我想找到包含所有給定基因的GO術語的最小窗口大小....爲了簡單起見,我使用了整數和容器。 –