Em Teoria da computação de Michael Sipser, na página 270, ele escreve:
P = a classe de idiomas para os quais a associação pode ser decidida rapidamente.
NP = a classe de idiomas para os quais a associação pode ser verificada rapidamente.
Qual é a diferença entre "decidido" e "verificado"?
complexity-theory
terminology
decision-problem
BrotherJack
fonte
fonte
Respostas:
A tarefa de decidir a associação é: dada qualquer entrada , decida se , ou seja, calcule a seguinte função:x ∈ Lx x ∈ L
Por outro lado, a tarefa de verificar a associação é: dada qualquer entrada uma (proposta) prova (ou testemunha ) de associação, verifique rapidamente se x ∈ L por essa prova ¹.x x ∈ L
Por exemplo, considere a fatoração principal. Dado , calcule todos os fatores primos de . Por outro lado, dado , verifique se . Qual é mais fácil?n ∈ N ( n , { i 1 , … , i k } ) ∏ k j = 1 i j = nn ( n , { i1, ... , ik} ) ∏kj = 1Euj= n
Outro exemplo: dado um gráfico ponderado , decida se existe um círculo de Hamilton (que visita todos os nós) com peso no máximo . Por outro lado, dado , verifique se o caminho visita todos os nós exatamente uma vez e tem peso no máximo . Qual é mais difícil?G = ( V, E) k ( G , ( v1, … , Vn) )) v1→ ⋯ → vn k
fonte
Se ignorarmos questões de eficiência, há outro exemplo que ilustra a diferença por analogia. Sabemos que o problema da parada não é decidível: dado um código para uma máquina de Turing, não há maneira eficaz de determinar se a máquina para se for executada sem entrada.e
Mas, se uma máquina faz parada, não é difícil provar a alguém: basta dizer-lhes quantos passos a máquina funciona antes de parar. Eles podem executar a máquina por muitas etapas e saber se você disse a verdade (ignorando a eficiência, é claro).
Portanto, o conjunto de máquinas de Turing interrompidas não é decidível, mas é verificável. Observe que nenhuma prova deve ser fornecida para máquinas que não param. Verificação é assimétrica no sentido de que apenas a associação em conjunto tem a ser verificáveis, a adesão fora do conjunto não.
A situação com P e NP é análoga. Um idioma está no NP se houver um sistema de provas, de modo que cada objeto que esteja no idioma tenha uma prova curta (delimitada por um polinômio no tamanho do objeto) que possa ser verificada com eficiência (com várias etapas delimitadas por um polinômio no tamanho da entrada).
Por outro lado, um idioma está em P se houver uma maneira de saber se um objeto arbitrário está ou não no idioma usando várias etapas limitadas por um polinômio no tamanho do objeto. Agora temos que nos preocupar com entradas arbitrárias, não apenas com objetos na linguagem. Mas esse problema é simétrico: se uma linguagem está em P, então é seu complemento. A questão de saber se o complemento de toda linguagem NP também é uma linguagem NP não está resolvida.
(Essa analogia sugere que os problemas de NP são P problemas como re-conjuntos são para conjuntos computáveis. Isso é um pouco verdadeiro, mas pode ser enganoso. É um fato básico que um conjunto que é re e co-re é computável, enquanto não se sabe se todos os conjuntos NP e Co-NP estão em P).
fonte