Provar que o diagnóstico direcionado de gráficos é difícil para NP


11

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 .(V,E,k)V=I.O.BEkIOBD=O×I

Agora, o problema é se podemos cobrir todos os nós com no máximo elementos de D , ou seja,kD

SD,|S|k. vV. (v1,v2)S. v1vv2

onde significa que existe um caminho direcionado de a para b .abab


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.k

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 )123(1,2)(1,3)k=11(121)(131); 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.(1,1)

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 ?kkk


Bem-vinda! Eu tentei esclarecer a declaração do problema; é assim que você quis dizer isso? Aliás, convém escolher um nome de usuário mais reconhecível que "user8879". :)
Raphael

Sim, obrigado, esta é realmente uma versão mais compacta.
User8879

Respostas:


9

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}kN(V,E,k)

  • V={s1,,sm,o1,,om,e1,,en,o}
  • E={(si,oi)i=1,,n}{(si,ej)jSi}{(ej,o)j=1,,n}
  • k=m+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)oikm(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}}

exemplo
[ fonte ]


1
Isso é quase correto, na medida em que eu e B somos de fato cobertos completamente, mas O não é. A instância set-cover é uma instância yes para k = 2, mas na instância DGD k = 2 deixa s2 e s3 descobertos. Eu acho que isso provavelmente pode ser resolvido adicionando automaticamente uma borda de cada nó em O para o .
user8879

(si,o)siS

Entendi agora: crie um nó adicional em B para cada nó em O , depois vincule-o ao nó correspondente em O e a o . Neste exemplo, você obtém quatro caminhos extras (s1 -> s1 '-> o, etc.). Finalmente, depois de aumentar k com quatro, ele deve estar completo.
user8879

si
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.