La façon la plus courante dans laquelle les oracles se produisent dans la théorie de la complexité est la suivante: un oracle fixe est mis à la disposition, par exemple, d'une machine de Turing avec certaines ressources limitées, et on étudie comment l'oracle augmente la puissance de calcul de la machine.
Il existe cependant une autre manière dont les oracles se produisent parfois: dans le cadre de l'entrée . Par exemple, supposons que je veuille étudier des algorithmes pour calculer le volume d'un polytope de haute dimension donné. Classiquement, le polytope devrait être spécifié en fournissant une liste de ses facettes ou une autre représentation explicite. Cependant, nous pouvons également poser le problème du calcul du volume d'un polytope qui est spécifié par un oracle de volume, qui prend les coordonnées d'un point dans l'espace en entrée et sort "oui" si et seulement si le point donné se trouve à l'intérieur du polytope. Ensuite, nous pouvons demander quelles ressources de calcul sont nécessaires pour calculer le volume d'un polytope spécifié de cette manière. Dans ce cas particulier, nous avons le très beau schéma d'approximation polynomiale du temps de Dyer, Frieze et Kannan et, ce qui est intéressant du point de vue de la théorie de la complexité, une preuve que le caractère aléatoire contribue de manière essentielle à ce problème, en ce qu'aucun algorithme déterministe ne peut effectuer aussi bien que l'algorithme Dyer-Frieze-Kannan.
Existe-t-il un moyen systématique d'étudier la théorie de la complexité des problèmes dans lesquels des oracles sont fournis dans le cadre de l'apport? Cela se réduit-il en quelque sorte à la théorie habituelle des classes de complexité avec des oracles? Je suppose que non, et que parce qu'il y a trop de façons différentes de fournir un oracle dans le cadre de l'entrée, chaque problème de ce type doit être traité de manière ad hoc. Cependant, je serais heureux d'avoir tort sur ce point.