Classi decisionali

Le due classi principali sono la classe P, cioè l'insieme di tutti i problemi decisionali risolvibili in tempo polinomiale, e la classe NP, cioè l'insieme dei problemi che sono verificabili in tempo polinomiale.

Da queste definizioni si può quindi dedurre che .

Un problema è verificabile se esiste un algoritmo di verifica che ha come input un e un certificato, cioè una dimostrazione della soluzione. Si considera verificato se il certificato è una soluzione valida per .

Di conseguenza, per i è facile verificare le istanze e forse difficile verificare quelle .

Riducibilità

Le ulteriori classi dipendono dalla riducibilità polinomiale di due problemi e , definita come: per cui esiste un algoritmo polinomiale che trasforma le istanze di in istanze equivalenti di .

Per la riducibilità vale che la trasformazione deve mantenere la positività delle istanze, ed inoltre è:

  • Riflessiva, ovvero riducibile a se stesso:

  • Transitiva, ovvero riducibile a catena:

    Questo è dimostrabile perchè per ipotesi esistono gli algoritmi e di conseguenza si può costruire come:

  • Non sempre simmetrica, ovvero:

Classe Co-NP

La classe Co-NP è l'insieme di tutti i problemi decisionali per cui il loro complemento è verificabile.

Il complemento di un problema è definito come il problema in cui le istanze positive si invertono di ruolo con le istanze negative , e quindi saranno queste ultime ad essere facili da verificare.

Classe NP-hard

La classe NP-hard è l'insieme di ogni problema decisionale per cui vale che: per cui i problemi sono almeno tanto difficili quanto quelli in .

Classe NP-C

La classe NP-C è l'insieme di ogni problema decisionale , detto NP completo, per cui vale che: da cui si può ricavare il teorema fondamentale della NP completezza: anche se non è ancora stato trovato un problema dell'intersezione o provato che non ne esistono.

Si può dimostrare perchè per ipotesi e, siccome si ha che, per definizione ogni è riducibile a . Di conseguenza, dato che , anche e quindi .

Inoltre, dato un problema è possibile riconoscerlo NP completo se: perchè ogni problema in è riducibile a , e quindi lo sono anche a per la transitività.