In parole povere: qual è la corrispondenza tra macchine di Turing con oracoli e famiglie di circuiti uniformi con oracoli? Come vengono definiti questi ultimi al fine di ottenere lo stesso modello computazionale, per una data macchina Oracle Turing?
Questa potrebbe essere una domanda elementare, ma non è ovvio dove cercare, e io sono il tipo di persona a cui piace assicurarsi che le mie fondamenta stiano usando un mortaio di buona qualità. Se esiste un riferimento standard, indicamelo. (Il libro di Papadimitriou, ad esempio, non sembra descrivere affatto i circuiti con gli oracoli.)
La mia ipotesi di lavoro è questa: una famiglia di circuiti uniforme con accesso a un oracolo (ad esempio per risolvere un problema NP-completo) è definita come segue:
Uno definisce una famiglia infinita di "porte dell'oracolo" O n , una per ciascuna dimensione del circuito n, ciascuna delle quali calcola una funzione f n : {0,1} cn → {0,1} per una costante c.
Le funzioni f n calcolate dalle porte dell'oracolo O n devono essere "uniformi" nel senso seguente: per qualsiasi n <N e x ∈ {0,1} n , è necessario f n ( x ) = f N (0 c ( N − n) x ) --- cioè le porte degli oracoli devono usare una "codifica" coerente ed estensibile dei loro input.
Si definisce quindi una famiglia di circuiti uniforme, in cui le porte dell'oracolo sono tra le operazioni consentite al circuito, limitando il circuito per la dimensione di ingresso n per utilizzare la porta O n .
Immagino che alcune delle scelte di cui sopra possano essere arbitrariamente risolte senza perdere alcuna generalità. Quello che mi interessa è un riferimento per la corrispondenza, o almeno una descrizione di come modificare la descrizione sopra per ottenere quella standard.