No essencial o m´etodo de diagonaliza¸c˜ao consiste na simula¸c˜ao de uma m´aquina de Turing por outra. A simula¸c˜ao ´e feita de tal modo que a m´aquina que simula pode determinar o comportamento da outra m´aquina e depois comporta-se de modo diferente. Suponh´amos que d´avamos a estas m´aquinas o mesmo or´aculo. Assim sempre que a m´aquina simulada consulta o or´aculo, o simulador tamb´em pode consultar e portanto a simula¸c˜ao pode continuar como inicialmente. Assim qualquer teorema provado usando diagonaliza¸c˜ao tamb´em ser´a v´alido se as m´aquinas tiverem o mesmo or´aculo.
Em particular, se P 6= NP fosse demonstrado usando diagonaliza¸c˜ao tamb´em PC 6= NPC para
qualquer or´aculo C.
O teorema seguinte mostra que existe A tal que PA= NPApelo que a diagonaliza¸c˜ao n˜ao pode
separar as duas classes. Tamb´em n˜ao permite provar que P = NP porque existe um or´aculo B tal que PB6= NPB.
Teorema 3.5.1
1. Existe um or´aculo recursivo A tal que PA= NPA.
2. Existe um or´aculo recursivo B tal que PB6= NPB.
Dem. O or´aculo A ´e f´acil. Basta tomar A o problema QSAT (TQBF) ou outro qualquer problema PSPACE-compelto. Ent˜ao
PSPACE ⊆ PQSAT⊆NPQSAT⊆NPSPACEQSAT⊆NPSPACE ⊆ PSPACE
A primeira inclus˜ao verifica-se porque uma linguagem em PSPACE pode-se reduzir poli- nomialmente a QSAT. A pen´ultima inclus˜ao, porque em NPSPACE n˜ao necessitamos de consultar o or´aculo (isto ´e, podemos calcular as respostas a QSAT). Conclui-se ent˜ao que NPQSAT⊆PQSAT.
Vamos agora construir o or´aculo B. Ideia: B ´e tal que existe LB ∈NPB e garantidamente
precisa de pesquisa de for¸ca bruta de tal forma que LB n˜ao pode estar em PB. A constru¸c˜ao
considera todas as m´aquinas polinomiais com or´aculo e garante que nenhuma decide LB.
Suponhamos que Σ ´e um alfabeto com pelo menos dois elementos. Seja C ∈ Σ? um or´aculo
e seja
LC = {x ∈ Σ? | ∃y ∈ C, |y| = |x|}
A linguagem LC pode ser aceite por uma MTON N com or´aculo C que opera do seguinte
modo. Com dados x , adivinha uma string y com o mesmo comprimento que x e consulta o or´aculo para determinar se y ∈ C. Independentemente da classe do or´aculo, ´e um algoritmo n˜ao determin´ıstico polinomial e portanto LC ∈NPC.
Por diagonaliza¸c˜ao constru´ı-se um or´aculo B tal que LB6= OB para toda a MTO polinomial
com or´aculo. Isto ´e LB ∈ NPB \PB. A ideia por tr´as da constru¸c˜ao ´e que uma MTO M
polinomial s´o tem tempo de fazer um n´umero polinomial de perguntas ao or´aculo mas existe um n´umero exponencial de strings para cada comprimento n dos dados. Isto permite ajustar o or´aculo para incluir ou retirar strings n˜ao consideradas por M o que leva a que esteja sempre errada. Seja M0, M1, . . . a lista de todas as MTO’s limitadas em tempo polinomial.
Suponhamos que cada Mi tem um rel´ogio e um parˆametro c tal que Mi para ap´os nc passos.
Ent˜ao para cada i, o limite temporal ncde M
i´e reconhec´ıvel na descri¸c˜ao de Mi. Constru´ımos
um or´aculo B como o limite duma sequˆencia de aproxima¸c˜oes finitas. Cada aproxima¸c˜ao Bk
´e uma fun¸c˜ao parcial f : Σ? −→ {0, 1} com dom´ınio finito tal que
Bk(x) = 1 se x ∈ B 0 se x /∈ B ⊥ caso contr´ario
Temos que Bkv Bk+1isto ´e Bk+1est´a definido sempre que Bkest´a e se ambos est˜ao definidos
tˆem o mesmo valor.
Na constru¸c˜ao, o seguinte invariante verifica-se. Para cada Bk qualquer extens˜ao total C de
Bk e para i ≤ k existe um x tal que
MiC aceita x ⇔ x /∈ LC (3.1)
⇔ C n˜ao contem elementos de comprimento |x| (3.2) No est´agio 0 temos B0 = ⊥. Suponhamos que temos Bk. Consideramos Mk uma M T O tal
que TMk(n) = n
c. Seja n maior que o comprimento de todos os elementos do dom´ınio de B k1
e suficientemente grande para que 2n> nc.
1
• Inicialmente Bk+1 = Bk.
• Simulamos Mk com dados de tamanho n, p.e an.
• Sempre que Mk se prepara para consultar o or´aculo numa string y, se Bk+1(y) 6= ⊥,
devolve-se Bk+1(y).
• Se Bk+1(y) = ⊥, define-se Bk+1(y) = 0, e devolve-se o valor 0.
• A MTO Mk continua a execu¸c˜ao e ou aceita ou rejeita
Ajustamos o or´aculo de modo a que Mk n˜ao possa aceitar LC. Como Mk corre em tempo
nc≤ 2n, existe pelo menos uma string de tamanho n que nunca foi sujeita ao or´aculo por M k,
e portanto Bk+1 est´a ainda indefinido. Se Mk aceitou, define-se Bk+1(y) = 0, para todos os y
de tamanho n tal que Bk+1(y) = ⊥. Se Mk rejeita, Bk+1(y) = 1, Estes ajustes n˜ao afectam
a computa¸c˜ao de Mk com dados an, porque nunca foram sujeitos ao or´aculo.
Ent˜ao para qualquer fun¸c˜ao total C que extende Bk+1 tem-se que ?? se verifica isto ´e se
an∈ L(MC
k ) ent˜ao an∈ L/ C. E se an∈ L(M/ k) ent˜ao an∈ LC. Ent˜ao L(MkC) 6= LC.
Se B for uma extens˜ao total de todos os Bk, k ≥ 0, ent˜ao garantidamente L(MkB) 6= LB para
Cap´ıtulo 4
Alternˆancia
Alternˆancia generaliza n˜ao determinismo e ´e ´util para estabelecer rela¸c˜oes entre classes de comple- xidade e classificar problemas de acordo com a sua complexidade [CKS81]. Sendo outra medida de complexidade permite estabelecer rela¸c˜oes entre as complexidades de espa¸co e de tempo. Relaciona- se tamb´em com conjuntos de f´ormulas da l´ogicas e estrat´egias ganhadores em jogos de tabuleiro.
Num processo n˜ao determin´ıstico existem pontos de escolha e segue-se um caminho de escolhas aceitando se existe um caminho que leva `a aceita¸c˜ao. Isto pode ser visto como um sistema multipro- cessador com um n´umero ilimitado de processadores potenciais. A m´aquina come¸ca num processo raiz na configura¸c˜ao inicial. Calcula como uma MT normal at´e chegar a um ponto de escolha n˜ao determin´ıstica. Nesse ponto bifurca em diversos processos independentes e espera a resposta de um dos processos. Cada processo continua a execu¸c˜ao. E assim sucessivamente ao longo da ´arvore de computa¸c˜ao. Se existirem m configura¸c˜oes `a profundidade i ent˜ao haver´a m processos paralelos independentes executando ao mesmo tempo no instante i. Quando um processo entra num estado de aceita¸c˜ao envia um 1 ao processo pai e termina. Se rejeita, envia um 0 e tamb´em termina. O processo (pai) que est´a suspenso quando recebe um 1, envia o 1 ao seu pai e termina. Se receber um 0, continua `a espera que outro subprocesso termine. Se todos os subprocessos terminam com 0, ele envia um 0 ao seu pai e termina. Os dados de entrada s˜ao aceites se 1 for enviado ao processo raiz. Isto este mecanismo corresponde `a avalia¸c˜ao l´ogica de uma disjun¸c˜ao (∨) das mensagens enviadas pelos subprocessos num dado n´ıvel (pelo menos um tem de enviar um 1). Assim podemos tamb´em considerar o caso em que para se aceitar ´e necess´ario que todos subprocessos levem `a aceita¸c˜ao o que equivale a avaliar a conjun¸c˜ao (∧) de mensagens dos subprocessos (ver Figura 4.1). Uma configura¸c˜ao na ´arvore de computa¸c˜ao ´e ∨ ou ∧ consoante o estado ´e ∨ ou ∧. O nome alternˆancia tem haver com a alternˆancia de n´os ∨ e ∧. Podemos mesmo incluir tamb´em n´os ¬ que invertem o valor recebido.
Em termos de classes de complexidade iremos ver que tempo alternado ´e o mesmo que espa¸co determin´ıstico e espa¸co alternado ´e exponencialmente maior que tempo determin´ıstico
Figura 4.1: N˜ao determinismo e alternˆancia