A tarefa de decidir a associação é: dada qualquer entrada , decida se , ou seja, calcule a seguinte função:x ∈ Lxx ∈ L
χeu( x ) = { 10 0x ∈ Lx ∉ 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 ¹.xx ∈ 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→ ⋯ → vnk
- 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).x ∈ L