Eu tenho uma tarefa de casa em que tenho criticado há algum tempo e gostaria de receber qualquer dica. Trata-se de escolher um problema conhecido, cuja integridade do NP é comprovada, e construir uma redução desse problema para o seguinte problema, que chamarei DGD (diagnóstico de gráfico direcionado).
Problema
Um exemplo de DGD consistir de vértices V = I . ∪ ó . ∪ B , arestas direcionadas E e um número inteiro positivo k . Existem três tipos de vértices: vértices com apenas extremidades de entrada I , vértices apenas com bordas de saída S e vértices com tanto de entrada e as bordas de saída B . Deixe que, além disso, D = S × eu .
Agora, o problema é se podemos cobrir todos os nós com no máximo elementos de D , ou seja,
onde significa que existe um caminho direcionado de a para b .
Eu acho que o problema do Conjunto Dominante é o que eu deveria estar reduzindo, porque isso também está preocupado em cobrir um subconjunto de nós com outro subconjunto. Tentei criar uma instância DGD criando primeiro dois nós para cada elemento do conjunto dominante, copiando todas as arestas e definindo o da instância DGD igual ao da instância do DS.
Suponha uma instância simples do DS com nós , 2 e 3 e bordas ( 1 , 2 ) e ( 1 , 3 ) . Esta é uma instância sim com k = 1 ; o conjunto dominante nesse caso consiste apenas no nó 1 . Reduzindo com o método descrito, isso levaria a uma instância DGD com dois caminhos ( 1 → 2 → 1 ′ ) e ( 1 → 3 → 1 ′ ); para cobrir todos os nós, apenas um par seria suficiente. Isso teria funcionado perfeitamente, não fosse o fato de que o conjunto dominante da instância DS não pode, é claro, ser determinado em tempo polinomial, o que é um requisito aqui.
Descobri que existem muitas maneiras bonitas de transformar arestas e vértices ao reduzir, mas meu problema está de alguma forma expressando o de DGD em termos de k de DS . Dominar Set parecia um problema adequado para reduzir, mas por causa disso acho que talvez eu devesse tentar reduzir de um problema que não tem esse k ?
fonte
Respostas:
Reduza a partir de SET-COVER NP-completo .
Seja com k ∈ N uma instância de cobertura do conjunto. Defina uma instância ( V , E , k ′ ) de DGD assim:S1,…,Sm⊆{1,…,n} k∈N (V,E,k′)
É fácil ver que a instância DGD construída tem uma resposta positiva se e somente se a instância de capa do conjunto fornecida tiver uma resposta positiva. Em particular, todas as pares ( s i , o i ) têm de ser escolhidos não importa o que, a fim de cobrir todos o i ; então k dos m pares ( s i , o ) tem que cobrir todos o de e j , e os primeiros componentes de aqueles escolhidos são a solução do exemplo SET-TAMPA. Se essa opção não for possível, a instância SET-COVER também não terá solução.m (si,oi) oi k m (si,o) ej
Como a construção é possível em tempo polinomial, isso prova SET-COVER DGD.≤p
Como exemplo, considere o exemplo de conjunto de casos de capa fornecido na Wikipedia , ou seja, e os conjuntos S = { { 1 , 2 , 3 } , { 2 , 4 } , { 3 , 4 } , { 4 , 5 } } . Isso se traduz no seguinte gráfico:{1,2,3,4,5} S={{1,2,3},{2,4},{3,4},{4,5}}
[ fonte ]
fonte