În teoria complexității, o ierarhie polinomială este o ierarhie a claselor de complexitate care generalizează clasele P, NP, co-NP la calcule oracol .
Există multe definiții echivalente ale claselor ierarhice polinomiale. Să luăm una dintre ele.
Pentru a defini un oracol într-o ierarhie polinomială, definim
unde P este mulțimea problemelor de rezolvat în timp polinomial. Atunci pentru i ≥ 0 definim
Unde A B este mulțimea de probleme rezolvate de o mașină Turing din clasa A extinsă cu un oracol pentru o problemă din clasa B. De exemplu, , și este o clasă de probleme rezolvate în timp polinomial cu un oracol pentru o problemă din NP .
Definițiile implică următoarele relații:
Spre deosebire de ierarhiile aritmetice și analitice, unde toate incluziunile sunt stricte, în ierarhia polinomială problema strictității este încă deschisă.
Dacă există , sau oricare , atunci ierarhia se micșorează la nivelul k : pentru toți , . În practică, aceasta înseamnă că egalitatea claselor P și NP distruge complet ierarhia polinomială.
Unirea tuturor claselor ierarhiei polinomiale este clasa PH .
Ierarhia polinomială este omologul (de o complexitate mai mică) ierarhiei aritmetice.
Se știe că PH este conținut în PSPACE , dar nu se știe dacă cele două clase sunt egale.
Fiecare clasă din ierarhia polinomială conține probleme -complete (problemele sunt complete în ceea ce privește reducerea Karp în timpul polinomial).