Il modo più comune in cui si verificano gli oracoli nella teoria della complessità è il seguente: un oracolo fisso è reso disponibile, per esempio, a una macchina di Turing con determinate risorse limitate, e si studia come l'oracolo aumenta la potenza computazionale della macchina.
Vi è, tuttavia, un altro modo in cui talvolta si verificano gli oracoli: come parte dell'input . Ad esempio, supponiamo che io voglia studiare algoritmi per calcolare il volume di un dato politopo ad alta dimensione. Classicamente, il polytope dovrebbe essere specificato fornendo un elenco delle sue sfaccettature o qualche altra rappresentazione esplicita. Tuttavia, possiamo anche porre il problema di calcolare il volume di un politopo specificato da un oracolo del volume, che prende le coordinate di un punto nello spazio come input e genera "sì" se e solo se il punto dato si trova all'interno del politopo. Quindi possiamo chiedere quali risorse computazionali sono necessarie per calcolare il volume di un politopo specificato in questo modo. In questo caso particolare abbiamo il simpaticissimo schema di approssimazione temporale polinomiale di Dyer, Frieze e Kannan e, interessante dal punto di vista della teoria della complessità, una prova che la casualità aiuta in modo essenziale per questo problema, in quanto nessun algoritmo deterministico può eseguire così come l'algoritmo Dyer-Frieze-Kannan.
Esiste un modo sistematico di studiare la teoria della complessità dei problemi in cui gli oracoli sono forniti come parte dell'input? In qualche modo si riduce alla solita teoria delle classi di complessità con oracoli? La mia ipotesi è no, e dato che ci sono troppi modi diversi in cui un oracolo potrebbe essere fornito come parte dell'input, ogni problema di questo tipo deve essere gestito in modo ad hoc. Tuttavia, sarei felice di essere smentito su questo punto.