Chame uma família de conjuntos "diversos" se cada conjunto tiver pelo menos um elemento exclusivo. Quais são as abordagens possíveis para encontrar o maior conjunto diversificado em uma família de conjuntos ?
Uma abordagem é resolver um problema de empacotamento de conjunto modificado. Suponha . Seja um subconjunto de elementos, , e . Então, o conjunto máximo diversificado corresponde ao maior pacote máximo obtido em que é o conjunto de todos os elementos não exclusivos em .
Mas, qual é uma boa heurística para escolher ? Ou existem abordagens melhores por completo?
algorithms
combinatorics
heuristics
charles.y.zheng
fonte
fonte
Respostas:
O problema está NP-completo. Isso exclui um algoritmo exato que funciona em todas as circunstâncias, mas não exclui algoritmos heurísticos que funcionam bem na prática ou algoritmo de aproximações com garantias de aproximação prováveis.
A redução é da 3SAT. Dada uma instância 3SAT com as variáveis e cláusulas , construa o sistema de conjunto a seguir. Para cada variável existem dois conjuntos e e define e para cada cláusula existe um conjunto . O conjunto consiste nos seguintes elementos:ϕ x1,…,xn ϕ1,…,ϕm xi Ai,0 Ai,1 N=n+1 Bi,t={βi,t,0,βi,t,1} ϕj Cj={γj,1,γj,2,γj,3} Ai,b
Pode-se encontrar conjuntos diversos se e somente se for satisfatório. De fato, dada uma tarefa satisfatória , a família é diverso: pertence apenas a , pertence apenas a e se o ésimo literal de for satisfeito, então pertence apenas a .n(N+1)+m ϕ x⃗ {Axii:i∈[n]}∪{Bi,t:i∈[n],t∈[N]}∪{Cj:j∈[m]} αi Axii βi,t,1−xi Bi,t k ϕj γj,k Cj
Para o inverso, suponha que seja uma família diversificada de tamanho pelo menos , particionado de acordo com o tipo do conjunto. Se contiver e para alguns , então . Portanto, , o que é impossível. Portanto, e devem conter todos os conjuntos do tipo correspondente e deve conter conjuntos, que juntos codificam uma atribuiçãoS=A∪B∪C n(N+1)+m A Ai,0 Ai,1 i Bi,1,…,Bi,N∉B |S|≤2n+(n−1)N+m<n(N+1)+m B C A n x⃗ . Como é diverso, por construção a atribuição atende à cláusula , portanto, é satisfatório.Cj∈S x⃗ ϕj ϕ
fonte