Simplificando: qual é a correspondência entre máquinas de Turing com oráculos e famílias uniformes de circuitos com oráculos? Como são definidas as últimas para obter o mesmo modelo computacional para uma determinada máquina de Turing da Oracle?
Essa pode ser uma pergunta elementar, mas não é óbvio para onde procurar, e eu sou o tipo de pessoa que gosta de garantir que minhas fundações usem argamassa de boa qualidade. Se houver uma referência padrão, aponte-me para ela. (O livro de Papadimitriou, por exemplo, parece não descrever circuitos com oráculos.)
Minha hipótese de trabalho é a seguinte: uma família de circuitos uniforme com acesso a um oráculo (por exemplo, para resolver um problema NP-completo) é definida da seguinte maneira:
Um define uma família infinita de "oracle gates" O n , um para cada tamanho de circuito n, cada um dos quais calcula uma função f n : {0,1} cn → {0,1} para alguma constante c.
As funções f n calculadas pelos portões oracle O n devem ser "uniformes" no seguinte sentido: para qualquer n <N e x ∈ {0,1} n , exigimos f n ( x ) = f N (0 c ( N − n) x ) --- isto é, os portões do oracle devem usar uma "codificação" consistente e extensível de suas entradas.
Em seguida, define-se uma família de circuitos uniforme, em que os portões do oráculo estão entre as operações permitidas para o circuito, restringindo o circuito ao tamanho da entrada n para usar o portão O n .
Imagino que algumas das opções acima possam ser arbitrariamente fixadas sem perder nenhuma generalidade. O que me interessa é uma referência para a correspondência, ou pelo menos uma descrição de como modificar a descrição acima para obter a padrão.