Il compito di decidere l' appartenenza è: dato qualsiasi input , decidere se x ∈ L , ovvero calcolare la seguente funzione:Xx ∈ L
χL( x ) = { 10x ∈ Lx ∉ L
D'altra parte, il compito di verificare l' appartenenza è: dato qualsiasi input X e una (proposta) prova (o testimonianza ) di appartenenza, controlla rapidamente se con quella prova ¹.x ∈ L
Ad esempio, considera la fattorizzazione in fattori primi. Dato , calcolare tutti i fattori primi di n . D'altra parte, dato ( n , { i 1 , ... , i k } ) , verifica che ∏ k j =n ∈ Nn( n , { i1, ... , iK} ). Quale è più facile?ΠKj = 1ioj= n
Un altro esempio: dato un grafico ponderato , decidere se esiste un cerchio Hamilton (che visita tutti i nodi) con peso al massimo k . D'altra parte, dato ( G , ( v 1 , … , v n ) ) , verifica se il percorso v 1 → ⋯ → v n visita tutti i nodi esattamente una volta e ha un peso al massimo k . Qual è più difficile?G = ( V, E)K( G , ( v1, ... , vn) )v1→ ⋯ → vnK
- Quindi dirai "no" se ma la prova è sbagliata. Va bene, però, se consideriamo le macchine non deterministiche in questo contesto; è solo importante poterindovinarela prova corretta e verificarla (rapidamente).x ∈ L