Está encontrando a menor coleção de subconjuntos para que o número de elementos entre os subconjuntos seja <= o número de subconjuntos NP-hard?

7

Dada uma coleção de subconjuntos não vazios de {1,2,,N} (Nnão corrigido), o problema é encontrar a menor coleção não vazia de subconjuntos, para que o número de elementos distintos que aparecem na união de subconjuntos seja menor ou igual ao número de subconjuntos escolhidos. Parece um problema difícil de NP, mas não posso provar. Qualquer ajuda?

user2566092
fonte
11
O que você tentou? Onde você ficou preso? Qual é a sua lógica para acreditar que isso é difícil para o NP?
ZeroUltimax
@ZeroUltimax Pensei em coisas como set-cover, mas isso significaria encontrar o número mínimo de strings para que todos os caracteres apareçam. Também tentei criar um relacionamento com um problema de camarilha, mas fiquei preso lá também. A razão pela qual acredito que isso é difícil para o NP é que tentei criar algoritmos de tempo polinomial e falhei, e também alguém postou uma pergunta semelhante no StackOverflow pedindo um algoritmo rápido e tudo o que conseguiram foi força bruta e uma redução no programação inteira.
user2566092
Parece que esta pergunta não tem nada a ver com seqüências de caracteres. A ordem das letras em cada sequência é irrelevante; portanto, você pode tratar isso como uma pergunta sobre conjuntos. Sugiro que você edite a pergunta adequadamente. O que você tentou? Você já tentou examinar uma lista de problemas NP-completos que envolvem conjuntos de conjuntos?
DW
@DW Modifiquei a pergunta para definir conjuntos de acordo com sua sugestão. Sim, eu olhei para perguntas sobre sets e panelinhas, mas fiquei preso. Parece que alguém pode ter uma solução envolvendo clique, eu ainda estou verificando.
user2566092

Respostas:

2

Isso é muito longo para um comentário, mas não é realmente uma resposta completa.

Vamos reformular ligeiramente a configuração do problema como um gráfico bipartido Gcom {1,2,,N}=X como um conjunto de vértices e a coleção de subconjuntos (por exemplo, Y) como o outro conjunto de vértices, com uma aresta entre iX e JY iff iJ. Para qualquer conjunto de vérticesW no Y, definir N(W) ser o bairro de W no G - ou seja, o conjunto de todos os vértices em X adjacentes a pelo menos um vértice em W.

Em seguida, o problema pede para encontrar um subconjunto mínimo WY de tal modo que |N(W)||W|. No entanto, se mudarmos ligeiramente o critério para|N(W)|<|W|, descobrimos que esse subconjunto existe se, e somente se, não existir uma correspondência entre X e Y que cobre Y, pois é exatamente equivalente ao Teorema do Casamento de Hall .

Como essas correspondências são localizáveis ​​em tempo polinomial (por exemplo: via Hopcroft-Karp ), acho que essa versão do problema provavelmente deve ser relativamente fácil, mas eu teria que fazer mais algum trabalho para descobrir se e como os algoritmos padrão para bipartidos a correspondência expõe esses conjuntos deficientes e se conjuntos deficientes mínimos também podem ser obtidos facilmente. Além disso, não posso dizer imediatamente quanto mais difícil a versão original do problema (o que permite|N(W)|=|W|) é mais que esta versão modificada.

mhum
fonte
0

Você pode reduzir a partir de Clique. Crie um conjunto para cada vértice, cada um com n-1 elementos correspondentes aos n-1 outros vértices, com o elemento para v no conjunto u sendo igual ao elemento para u no conjunto v (mas não igual a qualquer outro elemento) se {u, v} é uma aresta e um elemento único, caso contrário. Em seguida, podemos escolher k strings que juntas contenham elementos k (nk) + k (k-1) / 2 se for somente se houver um clique do tamanho k. Em seguida, precisamos apenas adicionar o número correto de conjuntos de um elemento contendo o mesmo elemento, para que o número de conjuntos selecionados e elementos coletados seja o mesmo.

Falk Hüffner
fonte
Isso não funciona: se você tiver um conjunto de um elemento, escolher esse conjunto sozinho sempre será uma solução ideal.
FrankW
Certo, evitar soluções menores é um problema. Eu não pensei sobre isso.
Falk Hüffner