Classi di complessità P e NP
Il problema delle classi P e NP è un problema tuttora aperto nella teoria della complessità computazionale.
Nonostante ci sia in palio un premio di un milione di dollari il problema rimane ancora senza una soluzione (si tratta di uno dei problemi del millennio).
Definizione
modificaA livello informale, esso richiede di determinare se ogni problema per il quale un computer è in grado di verificare la correttezza di una soluzione positiva, in un tempo accettabile, sia anche un problema che può essere risolto dal computer in un tempo accettabile (ovvero se il computer sia in grado di trovare da solo una soluzione positiva in un tempo accettabile).
Se la risposta è no, allora esistono problemi per i quali è più complesso calcolare una certa soluzione che verificarla.
Una definizione formale fa uso delle classi di complessità P e NP. La prima consiste di tutti quei problemi di decisione che possono essere risolti con una macchina di Turing deterministica in un tempo che è polinomiale rispetto alla dimensione dei dati di ingresso; la seconda consiste di tutti quei problemi di decisione le cui soluzioni positive possono essere verificate in tempo polinomiale avendo le giuste informazioni, o, equivalentemente, la cui soluzione può essere trovata in tempo polinomiale con una macchina di Turing non deterministica. Il problema delle classi P e NP si risolve quindi nella seguente domanda:
- P è uguale a NP?
Un esempio per avere un'idea di cosa ciò vuole dire. Supponiamo di voler calcolare tutti i divisori (divisione intera, ovvero con resto pari a zero) di un numero n. Il problema, quindi, è trovare tutti i numeri x tali che x è un divisore di n.
È abbastanza facile verificare che un certo numero x0 è divisore di n; è sufficiente svolgere l'operazione di divisione e controllare il resto: se è pari a zero, il numero è un divisore, altrimenti non lo è. Il numero di passaggi richiesti per eseguire l'operazione di divisione è tanto maggiore quanto maggiore è il numero n, tuttavia essa risulta sempre abbastanza veloce perché il tempo da essa richiesto sia considerato accettabile.
Al contrario, potrebbe non essere altrettanto facile determinare l'insieme di tutti i divisori. Infatti, quasi tutti i metodi[1] finora ideati nel corso dei secoli richiedono un tempo che aumenta rapidamente al crescere del valore di n, troppo perché esso sia considerato accettabile.
Problemi NP-completi
modificaUn ruolo importante in questa discussione è giocato dall'insieme dei problemi NP-completi,[1] che possono essere intuitivamente descritti come quei problemi che sicuramente non apparterrebbero a P se P fosse diverso da NP. Al contrario, dimostrando anche per un solo problema NP-completo la sua appartenenza a P, si otterrebbe una dimostrazione che P e NP sono equivalenti. In un certo senso, i problemi NP-completi sono quelli che meno probabilmente appartengono anche a P.
Note
modifica- ^ a b L'eccezione è l'algoritmo di fattorizzazione di Shor, il quale, però, richiede un computer quantistico. Inoltre, è da sottolineare che il problema della fattorizzazione di un numero non è un problema NP-completo, e dunque un eventuale algoritmo risolutivo in tempo polinomiale non ci darebbe informazione sulle classi P e NP
Bibliografia
modifica- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, e Clifford Stein, Introduzione agli algoritmi, 2ª ed., McGraw-Hill, 2005, pp. 966–1021, ISBN 978-88-386-6251-5.
- (EN) A. S. Fraenkel and D. Lichtenstein, Computing a perfect strategy for n*n chess requires time exponential in n, Proc. 8th Int. Coll. Automata, Languages, and Programming, Springer LNCS 115 (1981) 278–293 and J. Comb. Th. A 31 (1981) 199–214.
- (EN) E. Berlekamp and D. Wolfe, Mathematical Go: Chilling Gets the Last Point, A. K. Peters, 1994. D. Wolfe, Go endgames are hard, MSRI Combinatorial Game Theory Research Worksh., 2000.
- (EN) Neil Immerman. Languages Which Capture Complexity Classes. 15th ACM STOC Symposium, pp. 347–354. 1983.
- (EN) John Markoff, "Prizes Aside, the P-NP Puzzler Has Consequences", The New York Times, October 8, 2009
- (EN) Christos Papadimitriou, Chapter 14: On P vs. NP, in Computational Complexity, 1st, Addison Wesley, 1993, pp. 329–356, ISBN 0-201-53082-1.
- (EN) Lance Fortnow, The Status of the P Versus NP Problem, Communications of the ACM, vol. 52, n. 9, settembre 2009, pp. 78–86, DOI:10.1145/1562164.1562186.
Voci correlate
modificaCollegamenti esterni
modifica- (EN) William L. Hosch, P versus NP problem, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
- (EN) P problem, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
- The Clay Math Institute Millennium Prize Problems, su claymath.org. URL consultato il 26 novembre 2005 (archiviato dall'url originale il 26 novembre 2005).
- The "PRIMES is in P" FAQ, su crypto.cs.mcgill.ca. URL consultato il 23 luglio 2005 (archiviato dall'url originale il 23 luglio 2005).
- (EN) Eric W. Weisstein, problema P vs. NP, in MathWorld, Wolfram Research.
- (EN) Eric W. Weisstein, Problema di classe P, in MathWorld, Wolfram Research.
- (EN) Eric W. Weisstein, Problema di classe NP, in MathWorld, Wolfram Research.