Todos os problemas de NP se reduzem a problemas de NP-completos: então, como os problemas de NP não podem ser NP-completos?

10

Meu livro afirma isso

  • Se um problema de decisão B estiver em P e A for reduzido para B, o problema de decisão A estará em P.
  • Um problema de decisão B é NP-completo se B estiver em NP e para todo problema em A em NP, A reduz para B.
  • Um problema de decisão C é NP-completo se C estiver em NP e, para algum problema NP-completo B, B se reduz a C.

Então, minhas perguntas são

  1. Se B ou C estiver em NP-complete, e todos os problemas no NP forem reduzidos a um problema NP-complete, usando a primeira regra, como pode qualquer problema de NP não ser NP-completo?
  2. Se A reduz para B, B reduz para A?
rubixibuc
fonte
2
Fato interessante relacionado ao seu # 1: Se P não for igual a NP, sabemos que deve haver problemas de NP que não sejam NP completos (isso é chamado de teorema de Ladner. Consulte NP Intermediário ). O estranho é que não temos certeza de problemas comuns de computação que se encaixam nessa categoria. O problema usado no teorema de Ladner é artificialmente construído para provar o teorema, mas é praticamente sem importância.
27612 Lucas Cook
4
@ Lucas, Factoring e GraphIso são conjecturados como NPI, também veja isso .
Kaveh
@ Kaveh: Boa lista de candidatos a NPI, obrigado! Para esclarecer, eu estava dizendo que não temos "certeza" de um problema natural do NPI com a mesma certeza dos problemas de Ladner. Ou seja, se , os únicos problemas de NPI conhecidos por certos são os artificiais relacionados à hierarquia de Ladner. PNP
Lucas Cook

Respostas:

13

Se A reduz para B, B reduz para A?

Não. Para um exemplo realmente elaborado, qualquer possível problema computável A é redutível ao Problema de Interrupção: basta passar como entrada o algoritmo que resolve o problema A, mas com uma while(true)tachinha no final após o caso verdadeiro ou falso. No entanto, sabemos que o problema da parada não é computável, portanto não pode ser reduzido a nenhum algoritmo A.

A idéia básica é que, se houver uma redução de A para B, você pode aprender que B é pelo menos tão difícil de resolver quanto A e requer um algoritmo que seja pelo menos tão poderoso.

Portanto, se um problema A se reduz a um problema fácil B, podemos deduzir A é fácil (já que a redução nos fornece um algoritmo eficiente) e se um problema difícil A se reduz a um problema B, podemos deduzir que B também é difícil ( pois se B fosse fácil, então A também seria fácil). No entanto, ainda existe a possibilidade de fazer uma redução tola de um problema fácil para um problema difícil, mas neste caso não podemos deduzir nenhuma conclusão.

hugomg
fonte
8

Se B ou C estiver em NP Complete, e todos os problemas em NP forem reduzidos a um problema NP Complete, usando a primeira regra, como pode qualquer problema de NP não ser NP completo?

A primeira regra é sobre problemas em P. Não tem nada a ver com a integridade do NP. Se o problema A for NP Completo e o problema B for reduzido para A, isso não significa que B seja NP Completo.

Se A reduz para B, B reduz para A?

Geralmente não, não.

sepp2k
fonte
"Geralmente não, não.", Por quê? Um pouco de explicação também pode ser útil para iniciantes. Também deve ser fornecida uma explicação para sua primeira resposta.
Nbro 24/08/2015
-1

Eu tenho apenas a idéia básica sobre problemas de NPC e NP. Mas tudo o que quero comentar é sobre "Se A é reduzido para B, então B é reduzido para A?"

Basta considerar um conjunto A com {2,3,4,5} elementos e o conjunto B com {3,4}. Portanto, A pode ser reduzido a B. Mas B não pode ser reduzido a A. Em vez disso, B pode ser expandido para A se B ganhar {2,5} elementos.

Mas se A e B estão tendo o mesmo. então A pode ser reduzido para B ou B pode ser reduzido para A.

Naveen CS
fonte
Essa não é a idéia certa de redução. Redução não é sobre conjuntos ganhando ou perdendo elementos. Em vez disso, trata-se de poder converter uma instância de um problema em outro usando uma máquina / algoritmo de Turing.
precisa saber é o seguinte
Está bem. Portanto, se algum problema estiver sendo reduzido a outro usando qualquer algoritmo, não será possível recuperar o problema da saída reduzida usando o mesmo algoritmo novamente.
Naveen CS
11
Não tenho muita certeza do que você quer dizer, mas acho que não é possível. Se não me engano, essas reduções podem ser muitas para uma. A reduz para B se um número polinomial de chamadas para uma sub-rotina que resolve B permitir que A seja resolvido em tempo polinomial. Diferentes instâncias de A poderia invocar uma chamada a mesma instância do B.
jmite
2
A questão é sobre problemas de decisão, não sobre conjuntos. Como é útil olhar para conjuntos? Usar a palavra "reduzido" para significar que um conjunto é um superconjunto de outro nem sequer é terminologia comum.
Gilles 'SO- stop be evil'