I komplexitetsteorin är en polynomhierarki en hierarki av komplexitetsklasser som generaliserar klasserna P, NP, co-NP till orakelberäkningar .
Det finns många likvärdiga definitioner av polynomhierarkiklasserna. Låt oss ta en av dem.
För att definiera ett orakel i en polynomhierarki definierar vi
där P är mängden problem som ska lösas i polynomtid. Sedan definierar vi för i ≥ 0
Där A B är den uppsättning problem som löses av en Turing-maskin i klass A utökad med ett orakel för något problem från klass B. Till exempel, , och är en klass av problem lösta i polynomtid med ett orakel för något problem från NP .
Definitionerna innebär följande samband:
Till skillnad från de aritmetiska och analytiska hierarkierna, där alla inneslutningar är strikta, är frågan om strikthet fortfarande öppen i polynomhierarkin.
Om någon , eller någon , krymper hierarkin ner till nivå k : för alla , . I praktiken betyder detta att likheten mellan klasserna P och NP fullständigt förstör polynomhierarkin.
Unionen av alla klasser i polynomhierarkin är klassen PH .
Polynomhierarkin är motsvarigheten (med mindre komplexitet) till den aritmetiska hierarkin.
Det är känt att PH finns i PSPACE , men det är inte känt om de två klasserna är lika.
Varje klass i polynomhierarkin innehåller -kompletta problem (problemen är kompletta med avseende på Karp-reduktion i polynomtid).