La tarea de decidir la membresía es: dada cualquier entrada , decidir si x ∈ L , es decir, calcular la siguiente función:xx∈L
χL(x)={10x∈Lx∉L
Por otro lado, la tarea de verificar la membresía es: dada cualquier entrada una prueba (o testigo ) (propuesta ) de membresía, verifique rápidamente si x ∈ L con esa prueba ¹.xx∈L
Por ejemplo, considere la factorización prima. Dado , calcule todos los factores primos de n . Por otro lado, dado ( n , { i 1 , ... , i k } ) , verifique que ∏ k j = 1 i j = n . ¿Cuál es más fácil?n∈Nn(n,{i1,…,ik})∏kj=1ij=n
Otro ejemplo: dado un gráfico ponderado , decida si hay un círculo de Hamilton (que visita todos los nodos) con un peso máximo de k . Por otro lado, dado ( G , ( v 1 , … , v n ) ) , verifique si la ruta v 1 → ⋯ → v n visita todos los nodos exactamente una vez y tiene un peso máximo de k . ¿Qué es más difícil?G=(V,E)k(G,(v1,…,vn))v1→⋯→vnk
- Entonces dirá "no" si pero la prueba es incorrecta. Sin embargo, eso está bien, ya que consideramos máquinas no deterministas en este contexto; solo es importante que podamos adivinar la prueba correcta y verificarla (rápidamente).x∈L