Qual é a diferença entre “Decisão” e “Verificação” na teoria da complexidade?


16

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


1
A propósito, tenho certeza de que as cotações não são as definições formais dos usos de P e NP Sipser. As definições (ou alguns dos primeiros resultados) devem abordar a questão.
Raphael

Respostas:


12

A tarefa de decidir a associação é: dada qualquer entrada , decida se , ou seja, calcule a seguinte função:x Lxxeu

χeu(x)={1xeu0 0xeu

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 ¹.xxeu

Por exemplo, considere a fatoração principal. Dado , calcule todos os fatores primos de . Por outro lado, dado , verifique se . Qual é mais fácil?nN( n , { i 1 , , i k } ) k j = 1 i j = nn(n,{Eu1,...,Euk})j=1kEuj=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))v1vnk


  1. Então você dirá "não" se mas a prova está errada. Tudo bem, porém, ao considerarmos máquinas não determinísticas neste contexto; é importante que possamos adivinhar a prova correta e verificá-la (rapidamente).xeu

Na verdade, se você pode verificar a associação no tempo polinomial com uma máquina de Turing determinística M, é muito fácil criar uma TM M 'não determinística que decide a associação: basta enumerar não deterministicamente todas as entradas possíveis e depois compor com M.
Romuald

8

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

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.