# Turing riduzione

In teoria della computabilità, una Turing-riduzione da un problema decisionale $A$ ad un problema decisionale $B$ è una macchina oracolo che decide il problema $A$ dato un oracolo per $B$ (Rogers 1967, Soare 1987). Può essere inteso come un algoritmo che potrebbe essere utilizzato per risolvere $A$ se avesse a sua disposizione una subroutine per la risoluzione di $B$. Il concetto può essere applicato in modo analogo ai problemi di funzione.
Se esiste una Turing-riduzione da $A$ a $B$, allora ogni algoritmo per $B$ può essere utilizzato per produrre un algoritmo per $A$, inserendo l'algoritmo per $B$ in ogni punto in cui la macchina oracolo che computa $A$ interroga l'oracolo per $B$. Tuttavia, poiché la macchina oracolo può interrogare l'oracolo un numero elevato di volte, l'algoritmo risultante potrebbe asintoticamente richiedere più tempo rispetto all'algoritmo per $B$ o alla macchina oracolo che computa $A$. Una Turing-riduzione in cui la macchina oracolo computa in un tempo polinomiale è nota come riduzione di Cook.
La prima definizione formale di computabilità relativa, poi chiamata riducibilità relativa, fu data da Alan Turing nel 1939 in termini di macchine oracoli. Successivamente, nel 1943 e nel 1952 Stephen Kleene definì un concetto equivalente in termini di funzioni ricorsive. Nel 1944 Emil Post usò il termine "riducibilità di Turing" per riferirsi al concetto.

## Definizione

Dati due insiemi $A,B\subseteq \mathbb {N}$ di numeri naturali, diciamo che $A$ è Turing-riducibile a $B$ e scriviamo
    $A\leq _{T}B$
se e solo se esiste una macchina oracolo che calcola la funzione caratteristica di $A$ usando un oracolo per $B$. In questo caso, diciamo anche che $A$ è B-ricorsivo, o B-computabile.
Se esiste una macchina oracolo che, usando un oracolo per $B$, calcola una funzione parziale che ha per dominio $A$, allora $A$ è detto B-ricorsivamente enumerabile, o B-computabilmente enumerabile.
Diciamo che $A$ è Turing-equivalente a $B$ e scriviamo $A\equiv _{T}B$ se valgono $A\leq _{T}B$ e $B\leq _{T}A$. Le classi di equivalenza degli insiemi Turing-equivalenti sono chiamate gradi di Turing. Il grado di Turing di un insieme $X$ è indicato con ${\textbf {deg}}(X)$.
Dato un insieme ${\mathcal {X}}\subseteq 2^{\mathbb {N} }$, un insieme $A\subseteq \mathbb {N}$ è detto Turing-difficile per ${\mathcal {X}}$ se $X\leq _{T}A$ per ogni $X\in {\mathcal {X}}$. Se inoltre $A\in {\mathcal {X}}$, allora $A$ è detto Turing-completo per ${\mathcal {X}}$.

### Relazione tra Turing-completezza e universalità computazionale

La Turing-completezza, per come è definita sopra, corrisponde solo parzialmente alla Turing-equivalenza nel senso di universalità computazionale. Nello specifico, una macchina di Turing è una macchina di Turing universale se il suo problema della fermata (cioè l'insieme di input sui quali si ferma) è molti a uno-completo. Pertanto, una condizione necessaria ma non sufficiente affinché una macchina sia computazionalmente universale, è che il suo problema della fermata sia Turing-completo per la classe ${\mathcal {X}}$ degli insiemi ricorsivamente enumerabili. Insufficiente perché può accadere che il linguaggio accettato dalla macchina non sia di per sé ricorsivamente enumerabile.

## Esempio

Denotiamo con $W_{e}$ l'insieme dei valori di input per i quali la macchina di Turing con indice e si ferma. Allora, gli insiemi $A=\{e\mid e\in W_{e}\}$ e $B=\{(e,n)\mid n\in W_{e}\}$ sono Turing-equivalenti (qui $(\_,\_)$ denota una funzione di accoppiamento calcolabile). Una riduzione che prova $A\leq _{T}B$ può essere costruita utilizzando il fatto che $e\in A\Leftrightarrow (e,e)\in B$. Data una coppia $(e,n)$, può essere costruito un nuovo indice $i(e,n)$ usando il teorema s$_{mn}$, tale per cui il programma codificato da $i(e,n)$ ignora il suo input e simula semplicemente il calcolo della macchina con indice e sull'input n. In particolare, la macchina con indice $i(e,n)$ o si ferma su ogni input o non si ferma su alcun input. Perciò, $i(e,n)\in A\Leftrightarrow (e,n)\in B$ vale per tutti gli e ed n. Poiché la funzione i è calcolabile, questo dimostra $B\leq _{T}A$ . Le riduzioni qui presentate non sono solo Turing-riduzioni ma riduzioni molti a uno, discusse di seguito.

## Proprietà

* Ogni insieme è Turing-equivalente al suo complemento.
* Ogni insieme calcolabile è Turing-riducibile a ogni altro insieme. Poiché qualsiasi insieme calcolabile può essere calcolato senza oracolo, può essere calcolato da una macchina oracolo che ignora l'oracolo dato.
* La relazione $\leq _{T}$ è transitiva: se $A\leq _{T}B$ e $B\leq _{T}C$, allora $A\leq _{T}C$. Inoltre, $A\leq _{T}A$ vale per ogni insieme $A$, e quindi la relazione $\leq _{T}$ è un preordine (non è un ordine parziale, poiché $A\leq _{T}B$ e $B\leq _{T}A$ non implica $A=B$).
* Ci sono coppie di insiemi $(A,B)$ tali che $A$ non è Turing-riducibile a $B$ e $B$ non è Turing-riducibile ad $A$, quindi $\leq _{T}$ non è un ordine totale.
* Ci sono sequenze decrescenti infinite di insiemi sotto $\leq _{T}$, quindi questa relazione non è ben fondata.
* Ogni insieme è Turing-riducibile al proprio salto di Turing, ma il salto di Turing di un insieme non è mai Turing-riducibile al medesimo insieme.

## L'uso di una riduzione

Poiché ogni riduzione da un insieme $B$ ad un insieme $A$ deve determinare se un singolo elemento è presente in $A$ in un numero finito di passaggi, può fare solo un numero finito di interrogazioni sull'appartenenza all'insieme $B$. Quando si parla della quantità di informazioni sull'insieme $B$ utilizzate per calcolare un singolo bit di $A$, ciò è resa precisa dalla funzione uso. Formalmente, l'uso di una riduzione è la funzione che assegna ad ogni numero naturale $n$ il più grande numero naturale $m$ la cui appartenenza all'insieme $B$ è stata domandata dalla riduzione per determinare l'appartenenza di $n$ ad $A$.

## Riduzioni più forti

Esistono due modi comuni per produrre riduzioni più forti della Turing-riducibilità. Il primo modo è limitare il numero e il tipo di chiamate all'oracolo.
* L'insieme$A$ è molti a uno-riducibile a $B$ se esiste una funzione totale calcolabile $f$ tale che ogni elemento $n\in A$ se e solo se $f(n)\in B$. Tale funzione può essere utilizzata per generare una Turing-riduzione (calcolando $f(n)$, interrogando l'oracolo e poi interpretando il risultato).
* Una truth table-reduction o una truth table-reduction debole deve presentare tutte le interrogazioni all'oracolo contemporaneamente. In una truth table-reduction, la riduzione fornisce anche una funzione booleana (una tavola di verità) che, una volta fornite le risposte alle interrogazioni, produrrà la risposta finale della riduzione. In una truth table-reduction debole, la riduzione utilizza le risposte dell'oracolo come base per ulteriori calcoli a seconda delle risposte fornite (ma senza usare l'oracolo). In modo equivalente, una truth table-reduction debole è tale per cui l'uso della riduzione è maggiorato da una funzione calcolabile. Per questo motivo, le truth table-reduction deboli sono talvolta chiamate Turing-riduzioni "limitate".
Il secondo modo per produrre una nozione di riducibilità più forte è limitare le risorse computazionali che il programma che implementa la Turing-riduzione può utilizzare. Questi limiti sulla complessità computazionale della riduzione sono importanti quando si studiano classi subricorsive come P. Un insieme $A$ è riducibile in tempo polinomiale a un insieme $B$ se c'è una Turing-riduzione da $A$ a $B$ che termina in tempo polinomiale. Il concetto di riduzione in spazio logaritmico è simile.
Queste riduzioni sono più forti, nel senso che forniscono una distinzione più fine in classi di equivalenza e soddisfano requisiti più restrittivi rispetto alle Turing-riduzioni. Di conseguenza, tali riduzioni sono più difficili da trovare. Potrebbe non esserci modo di costruire una riduzione molti a uno da un insieme ad un altro, anche qualora esista una Turing-riduzione per gli stessi insiemi.

## Riduzioni più deboli

Secondo la tesi di Church-Turing, un Turing-riduzione è la forma più generale di riduzione effettivamente calcolabile. Tuttavia, vengono prese in considerazione anche riduzioni più deboli. L'insieme $A$ è detto aritmetico in $B$ se $A$ è definibile con una formula dell'aritmetica di Peano che ha $B$ per parametro. L'insieme $A$ è iperaritmetico in $B$ se esiste un ordinale ricorsivo $\alpha$ tale per cui $A$ è calcolabile da $B^{(\alpha )}$, il salto di Turing α-iterato di $B$. La nozione di costruibilità relativa è un'importante nozione di riducibilità nella teoria degli insiemi.