P (complessità)
Nella teoria della complessità computazionale, P, anche conosciuto come PTIME o DTIME(nO(1)), è una delle più importanti classi di complessità. Contiene tutti i problemi decisionali che possono essere risolti da una macchina di Turing deterministica usando una quantità polinomiale di tempo di computazione, o tempo polinomiale.
La tesi di Cobham asserisce che P è la classe di problemi computazionali che sono "risolvibili efficientemente" o "trattabili"; in pratica, qualche problema che non si sa essere in P ha soluzioni pratiche, e qualche problema in P non ne ha.
Definizione
[modifica | modifica wikitesto]Un linguaggio L è in P se e solo se esiste una macchina di Turing deterministica M tale che
- M viene eseguita in tempo polinomiale per tutti gli input
- Per tutti gli x in L, M restituisce in output 1
- Per tutti gli x non in L, M restituisce in output 0
P può anche essere vista come una famiglia uniforme di circuiti booleani. Un linguaggio L è in P se e solo se esiste una famiglia di circuiti booleani a tempo polinomiale uniforme , tale che
- Per ogni , prende n bit come input e restituisce 1 bit in output
- Per ogni x in L,
- Per ogni x non in L,
Problemi notevoli in P
[modifica | modifica wikitesto]Si sa che P contiene molti problemi naturali, incluse le versioni decisionali di programmazione lineare, calcolare il massimo comun divisore e trovare la corrispondenza massima. Nel 2002 è stato mostrato che il problema del determinare se un numero è primo è in P[1]. La classe relativa di problemi funzionali è FP
Diversi problemi naturali sono completi per P, inclusa la raggiungibilità su grafi[2]. L'articolo su problemi P-completi lista ulteriori problemi rilevanti in P.
Note
[modifica | modifica wikitesto]- ^ Manindra Agrawal, Neeraj Kayal, Nitin Saxena, "PRIMES is in P", Annals of Mathematics 160 (2004), no. 2, pp. 781–793.
- ^ Neil Immerman, Descriptive Complexity, New York, Springer-Verlag, 1999, ISBN 0-387-98600-6.