Sia A riducibile a B, vale a dire, . Quindi, la macchina di Turing accettando ha accesso ad un oracolo di . Lasciare che la macchina di Turing accettando essere e l'oracolo di sia . I tipi di riduzioni:
Riduzione Turing: può rendere più query a .
Riduzione del karp: detta anche "riduzione del turing del tempo polinomiale": l'input di deve essere costruito in polytime. Inoltre, il numero di query a deve essere limitato da un polinomio. In questo caso: .
Riduzione di Turing multipla: può inviare una sola query a , durante l'ultimo passaggio. Quindi la risposta dell'oracolo non può essere modificata. Tuttavia, il tempo impiegato per costruire l'input su non deve essere limitato da un polinomio. Equivalentemente: ( indica la riduzione multipla)
se ∃ una funzione calcolabile f : Σ ∗ → Σ ∗ tale che f ( x ) ∈ B .
Riduzione di Cook: detta anche "riduzione multipla di tempo polinomiale": una riduzione multipla in cui il tempo impiegato per costruire un input in deve essere limitato da un polinomio. Equivalentemente: ( ≤ p m che indica la riduzione multipla)
se ∃ unafunzione calcolabilepoli-tempo f : Σ ∗ → Σ ∗ tale che f ( x ) ∈ B .
Riduzione parsimoniosa: Chiamato anche "tempo polinomiale uno-uno riduzione": riduzione Un Cuoco in cui ogni istanza di mappato a un'istanza unica di B . Equivalentemente: ( ≤ p 1 che indica una riduzione parsimoniosa)
se ∃ unabiiezionecalcolabilepoli-tempo f : Σ ∗ → Σ ∗ tale che f ( x ) ∈ B .
Queste riduzioni preservano il numero di soluzioni. Quindi .
Possiamo definire più tipi di riduzioni limitando il numero di query oracolari, ma tralasciando quelle, qualcuno potrebbe gentilmente dirmi se ho ottenuto la nomenclatura per i diversi tipi di riduzioni utilizzate, correttamente. Sono definiti problemi NP completi rispetto alla riduzione Cook o alla riduzione parsimoniosa? Qualcuno può gentilmente dare un esempio di un problema NP completo sotto Cook e non sotto riduzione parsimoniosa.
Se non sbaglio, la classe # P-Complete è definita rispetto alle riduzioni di Karp.