TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES...

55
Teoria da Computação Dep. Matemática – Instituto Superior Técnico (em construção) Carlos Caleiro F. Miguel Dionísio Paula Gouveia João Rasga May 18, 2016

Transcript of TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES...

Page 1: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

Teoria da ComputaçãoDep. Matemática – Instituto Superior Técnico

(em construção)

Carlos CaleiroF. Miguel Dionísio

Paula GouveiaJoão Rasga

May 18, 2016

Page 2: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2

Page 3: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

Contents

1 Preliminares 71.1 Conjuntos, funções e cardinalidade . . . . . . . . . . . . . . . . . 71.2 Alfabetos e linguagens . . . . . . . . . . . . . . . . . . . . . . . . 91.3 Demonstrações: indução, redução ao absurdo . . . . . . . . . . . 111.4 Notação assintótica . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Máquinas de Turing 132.1 A máquina de Turing . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2.1 Máquinas com transições-S . . . . . . . . . . . . . . . . . 172.2.2 Máquinas bidireccionais . . . . . . . . . . . . . . . . . . . 182.2.3 Máquinas multi-fita . . . . . . . . . . . . . . . . . . . . . 192.2.4 Máquinas não-deterministas . . . . . . . . . . . . . . . . . 22

2.3 Máquina universal . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4 Modelos de computação e postulado de Church . . . . . . . . . . 26

3 Teoria da Computabilidade 293.1 Computabilidade e decidibilidade . . . . . . . . . . . . . . . . . . 293.2 Propriedades de fecho e redução computável . . . . . . . . . . . . 303.3 Indecidibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.4 Teorema de Rice . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.5 Teorema da recursão . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 Complexidade computacional 394.1 Eficiência de máquinas . . . . . . . . . . . . . . . . . . . . . . . . 394.2 Classes de complexidade . . . . . . . . . . . . . . . . . . . . . . . 404.3 Variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.3.1 Transições-S . . . . . . . . . . . . . . . . . . . . . . . . . 414.3.2 Memória bidireccional . . . . . . . . . . . . . . . . . . . . 424.3.3 Memória multi-fita . . . . . . . . . . . . . . . . . . . . . . 424.3.4 Não-determinismo . . . . . . . . . . . . . . . . . . . . . . 43

4.4 Propriedades de fecho e redução polinomial . . . . . . . . . . . . 464.5 Teorema de Savitch . . . . . . . . . . . . . . . . . . . . . . . . . . 474.6 Teoremas de hierarquia . . . . . . . . . . . . . . . . . . . . . . . 494.7 P versus NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3

Page 4: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4 CONTENTS

Page 5: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

Prelúdio

Texto de apoio à disciplina de Teoria da Computação da Licenciatura em Engen-haria Informática e de Computadores do IST, em complemento da bibliografiarecomendada:

M. Sipser, Introduction to the Theory of Computation, Second Edition.Thomson Course Technology, 2006.

A todos os interessados numa introdução à teoria da compatibilidade e dacomplexidade computacional.

Estrutura do textoIntrodução à Teoria da Computabilidade, e depois à Teoria da Complexidade,sempre sobre máquinas de Turing. Exercícios seleccionados resolvidos.

EmuladorPara acompanhar os alunos na melhor compreensão das matérias será útil uti-lizar um emulador de máquinas de Turing, nomeadamente o que é disponibi-lizado em http://morphett.info/turing/.

Agradecimentos• Manuel Martins

5

Page 6: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

6 CONTENTS

Page 7: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

1

Preliminares

1.1 Conjuntos, funções e cardinalidadeUm conjunto é uma colecção de elementos, sem repetições nem ordem relativa.Como é usual, usamos a ∈ A para denotar que um elemento a pertence a umconjunto A, e A ⊆ B para indicar que todos os elementos do conjunto A estãotambém no conjunto B, isto é, A é subconjunto de B. O conjunto vazio, quedenotamos por ∅ é particularmente interessante, pois a /∈ A qualquer que sejaa, pelo que ∅ ⊆ B qualquer que seja B. Obviamente, também, A ⊆ A, peloque usamos A ( B quando a inclusão é estrita, isto é, existe b ∈ B tal que b /∈ A.

Adoptamos a notação usual para conjuntos de números:

• naturais N = {1, 2, 3, 4, . . . }, ou N0 = {0, 1, 2, 3, 4, . . . },

• inteiros Z = {. . . ,−3,−2,−1, 0, 1, 2, 3, . . . },

• racionais Q, e

• reais R, reais positivos R+.

Usamos ℘(A) para representar o conjunto das partes de A, isto é, o conjuntode todos os subconjuntos de A. Por exemplo, o conjunto {1, 2} tem exactamente4 subconjuntos, ℘({1, 2}) = {∅, {1}, {2}, {1, 2}}.

Usamos A∩B para representar a intersecção dos conjuntos A e B, isto é, oconjunto dos elementos que pertencem a ambos. Analogamente, usamos A∪Bpara representar a união dos conjuntos A e B, isto é, o conjunto dos elementosque pertencem a pelo menos um dos dois conjuntos. Como se espera, podemosintersectar ou unir mais do que dois conjuntos. Como é usual, também usamosa complementação, sendo que A \ B denota o subconjunto de A que contémtodos os seus elementos que não pertencem a B.

Consideramos ainda o produto cartesiano de conjuntos A × B = {(a, b) :a ∈ A, b ∈ B}, que se estende de maneira óbvia a mais conjuntos, resultandoem triplos, quádruplos, e vectores com mais posições, em vez de apenas pares.Usamos Ak para denotar o produto cartesiano de A por si próprio k ∈ N vezes.Obviamente, A1 = A.

7

Page 8: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

8 1. PRELIMINARES

Denotamos por f : A → B uma função do conjunto A para o conjuntoB. Uma função pode ser parcial e estar indefinida para alguns elementos deA. Denotamos por dom(f) ⊆ A o domínio de definição de f . A função fassocia a cada a ∈ dom(f) um elemento f(a) ∈ B. Usamos cod(f) = {f(a) :a ∈ dom(f)} para representar o contra-domínio de f . Quando dom(f) = Adizemos que f é uma função total, ou simplesmente uma aplicação.

Se f : A → B e g : B → C são funções então define-se a função composta(g ◦ f) : A→ C tal que (g ◦ f)(a) = g(f(a)) se a ∈ dom(f) e f(a) ∈ dom(g).

Uma função f : A→ B diz-se injectiva se associa diferentes elementos de Ba todos os elementos de A, ou seja, f é total e se f(a1) = f(a2) para a1, a2 ∈ Aentão a1 = a2. Uma função f : A→ B diz-se sobrejectiva se cod(f) = B. Umafunção f : A→ B diz-se bijectiva se é injectiva e sobrejectiva.

Se f : A→ B é injectiva, pode definir-se uma função inversa f−1 : B → Atal que dom(f−1) = cod(f) e, para cada b ∈ dom(f−1), f−1(b) é o único ele-mento a ∈ A tal que f(a) = b. Obviamente, (f−1 ◦ f)(a) = a para qualquera ∈ A.

Uma relação é um subconjunto R de A × B, ou em geral de um produtocartesiano. Para um conjunto A e k ∈ N, R ⊆ Ak diz-se uma relação k-ária,ou de aridade k, sobre A.

Se R ⊆ A × B, define-se a aplicação característica de R relativamente aA × B como sendo χR : A × B → {0, 1} tal que χR(a, b) = 1 se (a, b) ∈ R, eχR(a, b) = 0 caso contrário. Define-se também a função semi-característica deA relativamente a B como sendo ηR : A × B → {0, 1} tal que dom(ηR) = R eηR(a, b) = 1 se (a, b) ∈ R.

Dada uma função f : A→ B, define-se a relação grafo como sendo Grafo(f) ={(a, f(a)) : a ∈ dom(f)} ⊆ A×B.

Usamos #A para denotar o cardinal do conjunto A, ou seja, o tamanhodo conjunto. Para conjuntos finitos, o cardinal é como usual um número emN0. No entanto, para conjuntos infinitos, as coisas são mais complicadas. Sementrar na discussão de assuntos não-triviais da matemática moderna, como ahipótese do contínuo, definimos que #A ≤ #B se existe uma função injectivaf : A → B. Dizemos que #A = #B se #A ≤ #B e #B ≤ #A. Escrevemosainda #A < #B se #A ≤ #B mas #A 6= #B.

Um conjunto A diz-se contável se #A ≤ #N. Um conjunto A diz-se infinitose #N ≤ #A. Um conjunto A diz-se numerável se é infinito e contável, ou seja,#A = #N.

Proposição 1.1. Um conjunto A é numerável se e só se existe uma funçãoh : A→ N bijectiva.

Dem.: Se A é contável e infinito, temos funções injectivas f : A→ N e g :N→ A. Considere-se h : A→ N definido por h(a) = #{a′ ∈ A : f(a′) ≤ f(a)}e verifique-se que é bijectiva.

Se temos uma bijecção h : A→ N, obviamente que h é injectiva e portantoA é contável. Por outro lado, h−1 é total, já que h é sobrejectiva, e h−1(n1) =

Page 9: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

1.2. ALFABETOS E LINGUAGENS 9

h−1(n2) = a implica que h(a) = n1 = n2, concluindo-se que h−1 é injectiva eportanto A é infinito.

Há muitos conjuntos interessantes que são numeráveis, desde logo N, N0, Z, Q.No entanto, também há conjuntos infinitos com cardinalidades maiores. É ocaso dos números reais, ou seja, #N < #R.

1.2 Alfabetos e linguagens

Definição 1.2. Alfabeto, palavra, linguagemUm alfabeto Σ é um conjunto finito (de símbolos).Uma palavra sobre Σ é uma sequência finita de elementos do alfabeto.Denotamos por Σ∗ o conjunto de todas as palavras sobre Σ.Uma linguagem sobre Σ é um subconjunto de Σ∗. Se L é uma linguagem sobreΣ, a linguagem complementar de L é L = Σ∗ \ L.Denotamos por LΣ o conjunto de todas as linguagens sobre Σ.

Por exemplo, se Σ = {0, 1} então Σ∗ contém 4 palavras de comprimento 2,nomeadamente 00, 01, 10 e 11. Obviamente {0, 1}∗ é um conjunto infinito, quecontém exactamente 2n palavras de comprimento n para cada n ∈ N0. Em par-ticular, contém uma palavra de comprimento 0, que não tem nenhum símbolodo alfabeto, dita a palavra vazia. Como não podemos visualizá-la, usaremos εpara nos referirmos à palavra vazia.

Não é difícil de perceber que ∅∗ = {ε}, pois a palavra vazia é a única quepodemos construir sem usar qualquer símbolo do alfabeto, que no caso não temsímbolos por ser vazio. No entanto, basta haver um símbolo, por exemplo a ∈ Σ,para que Σ∗ possua infinitas palavras diferentes: ε, a, aa, aaa, aaaa, aaaaa, . . .

Proposição 1.3. Se Σ é um alfabeto não-vazio então #Σ∗ = #N.

Dem.: Exercício.

Usamos . para concatenar palavras. Obviamente, w.ε = ε.w = w. Por exemplo,000.111 representa a palavra 000111. Deste modo, podemos escrever 0.w paradenotar uma palavra que começa por 0, ou mesmo 0.w.11 para denotar umapalavra que começa por 0 e termina com 11. Dizemos que u é um prefixo deu.v, e analogamente que v é um seu sufixo.

Usamos |w| para representar o comprimento de uma palavra w. Claramente,|010| = 3, |ε| = 0 e |u.v| = |u| + |v|. Dado n ∈ N, se n ≤ |w|, usamos tambémwn para representar o n-ésimo símbolo da palavra w. Assim, qualquer palavraw é tal que w = w1w2 . . . w|w|. Por exemplo, se w = 010, tem-se w1 = 0, w2 = 1e w3 = 0.

O conjunto de todas as palavras sobre {0, 1} que contêm o mesmo númerode 0s e de 1s forma uma linguagem. Claramente, 100110 ou ε pertencem àlinguagem, mas 111110 ou 010 não pertencem.

Page 10: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

10 1. PRELIMINARES

Noutro extremo, podemos entender a língua portuguesa, por exemplo, comouma linguagem sobre o alfabeto formado pelos caracteres de A a Z, maiúsculose minúsculos, acentuados ou não, com um sem cedilhas, juntamente com o hífene outros sinais de pontuação.

Dadas linguagens L1, L2 ∈ LΣ, definimos a concatenação das linguagensL1.L2 = {u.v : u ∈ L1, v ∈ L2}. Definimos também o fecho de Kleenede uma linguagem L como sendo a linguagem L∗ = {u1.u2. . . . .un : n ∈N0 e u1, . . . , un ∈ L}.

Atentemos agora na cardinalidade de LΣ. Obviamente, L∅ só tem duaslinguagens, ∅ e {ε}. Por outro lado, se Σ 6= ∅, LΣ será sempre um conjuntoinfinito não numerável.

Proposição 1.4. Se Σ é um alfabeto não-vazio então #LΣ > #N.

Dem.: Suponhamos, por absurdo, que #LΣ ≤ #N.Facilmente se verifica que LΣ é infinito (se a ∈ Σ então {a}, {aa}, {aaa}, . . .

são todas linguagens distintas) e portanto ter-se-ia que #LΣ seria numerável.Nesse caso, existiria uma função L : N→ LΣ bijectiva.

Sabemos, da Proposição 1.3, que Σ∗ é numerável, e portanto temos tambémuma função w : N→ Σ∗ bijectiva.

Poderíamos então considerar a linguagem D ⊆ Σ∗ tal que, para cada i ∈ N,w(i) ∈ D se e só se w(i) /∈ L(i). É fácil verificar que D 6= L(i), qualquer queseja i ∈ N. Nomeadamente, a palavra w(i) distingue as duas linguagens poispertence a D apenas e só se não pertence L(i). No entanto, D ∈ LΣ, o quecontradiz a sobrejectividade de L.

Analogamente, podemos definir FΣ como o conjunto de todas as funções f :Σ∗ → Σ∗.

Proposição 1.5. Se Σ é um alfabeto não-vazio então #FΣ > #N.

Dem.: Semelhante, exercício.

Podemos usar alfabetos muito simples para representar objectos arbitrários.Por exemplo, podemos representar números naturais usando várias notações:

unária: ε, 1, 11, 111, 1111, . . .binária: 0, 1, 10, 11, 100, 101, 110, 111, 1000, . . .decimal: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, . . .

Podemos também representar outros objectos. Por exemplo, podemos usar1110100010010001001100 para representar um grafo circular com 3 nós (verFigura 1.1).

Separemos a sequência: 111.0.100.010.010.001.001.100. A sequência inicialde 1s indica-nos o número de nós do grafo (3 nós). O primeiro zero serve ape-nas como delimitador. A seguir temos várias sequências de comprimento 3 (onúmero de nós do grafo); 100 e 010 representam a aresta do nó 1 para o nó 2,depois 010 e 001 representam a aresta do nó 2 para o nó 3, e finalmente 001 e

Page 11: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

1.3. DEMONSTRAÇÕES: INDUÇÃO, REDUÇÃO AO ABSURDO 11

1 2

3

Figure 1.1: Grafo circular com 3 nós.

100 representam a aresta do nó 3 para o nó 1. Há obviamente outras formasde representar grafos, até mais sucintas, mas adoptaremos esta representação echamá-la-emos de canónica.

Portanto, à partida, uma palavra não tem um significado determinado, poisé apenas uma sequência de símbolos. O significado da palavra emergirá apenasda forma como for usada, em cada contexto. Neste sentido, não temos a prioricomo dizer se a palavra 10 representa a quantidade ‘dez’ em notação decimal,a quantidade ‘dois’ em notação binária, ou um grafo com apenas um nó e semarestas.

Observe-se ainda que alfabetos com 2 símbolos (por exemplo {0, 1}, queserá de certa forma o nosso alfabeto fetiche) são suficientes, em geral, pararepresentar linguagens sobre alfabetos mais sofisticados. Dado um alfabeto Σcom um máximo de 2k símbolos, é óbvio que podemos usar sequências bináriasdistintas, de comprimento k, para representar cada um dos símbolos de Σ.

1.3 Demonstrações: indução, redução ao absurdo

1.4 Notação assintótica

O comportamento assintótico de funções pode ser expresso recorrendo à notaçãode Bachmann-Landau.

Definição 1.6. Notação assintóticaDadas funções totais f, g : N→ R+ diz-se que:

• f = O(g) se existem c ∈ R+ e m ∈ N tais que f(n) ≤ cg(n) para todo onatural n > m (f diz-se assintoticamente menor ou igual a g, ou dominadapor g);

• f = Θ(g) se f = O(g) e g = O(f) (f diz-se assintoticamente igual a g,ou da ordem de g);

• f = o(g) se qualquer que seja a constante real c ∈ R+ existe m ∈ N talque f(n) ≤ cg(n) para todo o natural n > m (f diz-se assintoticamentemenor do que g, ou desprezável perante g).

Page 12: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

12 1. PRELIMINARES

Obviamente, f = o(g) implica f = O(g).Propriedades, limites, exemplos, e depois exercícios.Nomeadamente, f = o(g) sse lim

n→∞f(n)g(n) = 0. Mais, se lim

n→∞f(n)g(n) < ∞ então

f = O(g).Comentário do Knuth, algures, sobre 10n2 +5n = O(n2) versus 10n2 +5n =

10n2 +O(n).Terminologia, como função de n, constante O(1), logarítmica O(logn), lin-

ear O(n), quadrática O(n2), cúbica O(n3), polinomial O(nc) para alguma con-stante c > 1, exponencial O(cn) para alguma constante c > 1, factorial O(n!).

ExercíciosVer folhas das aulas práticas.

(1a) Sejam f : A → B e g : B → C duas funções. Demonstre que se (g ◦ f)é injectiva então f é injectiva, e que se (g ◦ f) é sobrejectiva então g ésobrejectiva.

(1b) (Teorema de Cantor-Bernstein) Sejam A,B conjuntos. Demonstre que#A = #B se e só se existe uma função h : A→ B bijectiva.

(1c) (Teorema de Cantor) Seja A um conjunto. Demonstre que #A < #℘(A).

(1d) Demonstre que N0,Z,N× N,Q são conjuntos numeráveis.

(1e) Demonstre que #N < #R.

(1f) Será que A ( B implica que #A < #B? Justifique.

(1g) Mostre que se A ⊆ B e #A < #B então B \A 6= ∅.

(1h) Mostre que L∗ =⋃i∈N0 L

i onde L0 = {ε} e Ln+1 = L.Ln.

(1i) Dado um alfabeto Σ, mostre como representar cada linguagem em LΣ

como uma linguagem em L{0,1}, bem como cada função em FΣ comouma função em F{0,1}.

(1j) Seja Σ um alfabeto não-vazio. Demonstre que #Σ∗ = #{0, 1}∗, #LΣ =#L{0,1} e #FΣ = #F{0,1}.

Page 13: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2

Máquinas de Turing

“Welcome my son, welcome to the machine.”Roger Waters, Pink Floyd – Wish you were here, 1975

2.1 A máquina de Turing

Podemos imaginar uma máquina de Turing como um dispositivo, abstracto, quetem uma fita dividida em células de memória em que podemos ler e escreversímbolos, a fita é infinita para a direita, cabeça de leitura/escrita, movimentosL e R, configuração inicial, espaço � vs. célula vazia, estrutura de controlo.

Definição 2.1. Máquina de TuringUma máquina de Turing é formada por:

• um alfabeto de trabalho Γ, tal que � ∈ Γ;

• um alfabeto de entrada/saída Σ ⊆ Γ \ {�};

• um conjunto finito de estados de controlo Q;

• dois estados distintos qac, qrj /∈ Q, ditos estado de aceitação e estado derejeição, respectivamente;

• um estado designado qin ∈ Q̂ = Q ∪ {qac, qrj}, dito estado inicial;

• uma função de transição δ : Q× Γ→ Q̂× Γ× {L,R}.

Os estados qac, qrj dizem-se estados de terminação.

Denotamos porMΣ o conjunto de todas as máquinas de Turing com alfabetode entrada/saída Σ.

Para que serve uma máquina de Turing? Serve para desenvolver tarefas com-putacionais: reconhecer uma linguagem (aceitar exactamente as suas palavras),

13

Page 14: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

14 2. MÁQUINAS DE TURING

qin

q1

q2

qac

0→ 0, R

1→ 1, R

�→ �, R

1→

1,R

�→ �, R

0→

0,R

�→ �, R

Figure 2.1: Exemplo: reconhecer palavras alternantes no alfabeto {0, 1}.

decidir uma linguagem (aceitar as suas palavras e rejeitar as restantes), calcu-lar uma função (aceitar os inputs no domínio da função e calcular o respectivoresultado como output).

Exemplo 2.2. Considere-se a linguagem formada pelas palavras sobre o al-fabeto {0, 1} que são alternantes, isto é, em que cada símbolo é distinto doanterior, como por exemplo 01010. A máquina de Turing representada naFigura 2.1, aceita precisamente as palavras desta linguagem.

O alfabeto de trabalho da máquina é Γ = {0, 1,�}. A convenção de represen-tação gráfica da máquina de Turing é muito simples, tendo-se Q = {qin, q1, q2},e sendo a função de transição δ facilmente intuída a partir das etiquetas dassetas. Assim, ter-se-á δ(qin, 0) = (q1, 0, R), por exemplo, o que significa quequando no estado qin, se a cabeça de leitura/escrita está posicionada numacélula de memória onde está o símbolo 0, se dá uma transição para o estado q1,sendo escrito o símbolo 0 (o que no caso apenas mantém o símbolo preexistente,movimentando-se a cabeça de leitura/escrita para a direita). As transições nãorepresentadas consideram-se indefinidas. Por não ser utilizado, também não serepresenta o estado qrj.

A intuição por detrás da máquina é simples. A partir do estado inicial,lendo o input da esquerda para a direita, a máquina transita para q1 quando lê0, memorizando dessa forma que o próximo símbolo a ler terá de ser 1. Simet-ricamente, a máquina transita para q2 quando lê 1, memorizando dessa formaque o próximo símbolo a ler terá de ser 0. A máquina vai assim alternandoentre os estados q1 e q2 até processar todo o input, o que acontece quando élido um espaço. Caso dois símbolos consecutivos sejam iguais, a computaçãofica indefinida, já que não está representada nenhum transição a partir de q1quando o símbolo lido é 0, nem a partir de q2 quando o símbolo lido é 1.

Uma máquina de Turing está, em cada momento, numa certa configuração.A configuração define completamente a fita da máquina nesse momento, aposição da cabeça de leitura/escrita, e o estado em que a máquina se encontra.

Page 15: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.1. A MÁQUINA DE TURING 15

Dada uma palavra como input, uma máquina de Turing inicia a sua com-putação numa configuração dita inicial, em que o input surge na fita nas posiçõesmais à esquerda, seguido de infinitas células vazias, a cabeça de leitura/escritaestá posicionada na célula mais à esquerda (pronta a ler o primeiro símbolo doinput, caso exista), e o estado é qin. A partir daí, a máquina progride de config-uração em configuração, de acordo com a sua função de transição, até atingirum dos estados de terminação, como se ilustra de seguida para a máquina doExemplo 2.2.

qin : 0 1 0 1 0

q1 : 0 1 0 1 0

q2 : 0 1 0 1 0

q1 : 0 1 0 1 0

q2 : 0 1 0 1 0

q1 : 0 1 0 1 0

qac : 0 1 0 1 0

Definição 2.3. ConfiguraçãoSeja M = (Σ,Γ, Q, qin, qac, qrj, δ) uma máquina de Turing.Uma configuração é um triplo denotado por (u|q|v), onde u ∈ Γ∗ é a palavraà esquerda da cabeça de leitura/escrita, q ∈ Q̂ o estado corrente, e v ∈ Γ∗ apalavra que se inicia na cabeça de leitura/escrita e a que se segue na fita umasequência infinita de células vazias.

Claramente, quando numa configuração (u|q|v), a cabeça de leitura estápronta a ler o primeiro símbolo de v, tendo à sua esquerda tantas células quantosos símbolos de u. Caso v = ε, a cabeça de leitura/escrita está posicionadanuma célula vazia. Como é fácil de compreender, dado um input w ∈ Σ∗, aconfiguração inicial da máquina corresponde a (ε|qin|w).

Definição 2.4. TransiçãoSeja M = (Σ,Γ, Q, qin, qac, qrj, δ) uma máquina de Turing.A relação de transição →M entre configurações da máquina é definida pelasregras

(u|q|a.v) →M (u.b|s|v) se δ(q, a) = (s, b, R)(u|q|ε) →M (u.b|s|ε) se δ(q,�) = (s, b, R)(u.c|q|a.v) →M (u|s|cb.v) se δ(q, a) = (s, b, L)(u.c|q|ε) →M (u|s|cb) se δ(q,�) = (s, b, L)

Page 16: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

16 2. MÁQUINAS DE TURING

onde a, b, c ∈ Γ, u, v ∈ Γ∗, q ∈ Q e s ∈ Q̂.

As regras de transição são absolutamente intuitivas. Note-se que, ao con-trário dos movimentos à direita, um movimento à esquerda exige que a cabeçade leitura/escrita não esteja colocada na primeira célula da fita, caso em quenão fica definida a transição.

Como ilustração, a computação descrita acima, para a máquina do Exem-plo 2.2, corresponde a

(ε|qin|01010)→M (0|q1|1010)→M (01|q2|010)→M (010|q1|10)→M

→M (0101|q2|0)→M (01010|q1|ε)→M (01010�|qac|ε)

Definição 2.5. ComputaçãoSeja M = (Σ,Γ, Q, qin, qac, qrj, δ) uma máquina de Turing.A computação de M dado um input w ∈ Σ∗ é a sequência (finita ou infinita) deconfigurações obtida a partir da configuração inicial (ε|qin|w) usando →M .

A computação termina quando a sequência é finita, por ser atingido umestado de terminação, caso em que se designa de bem sucedida, ou por abortarao atingir uma configuração a partir da qual não está definida nenhuma regra(por a função de transição estar indefinida, ou por se exigir um movimento àesquerda quando a cabeça de leitura/escrita está na primeira célula). No casode a sequência ser infinita, a computação diz-se divergente. Juntar exemplos.Uma máquina de Turing cuja computação é bem sucedida para todos os inputsdiz-se um classificador.

Definição 2.6. Aceitação, rejeiçãoSeja M = (Σ,Γ, Q, qin, qac, qrj, δ) uma máquina de Turing.

Uma palavra w ∈ Σ∗ diz-se aceite por M se a computação da máquinadado o input w é bem sucedida e termina no estado de aceitação. UsamosLac(M) ⊆ Σ∗ para denotar a linguagem formada por todas as palavras aceitespela máquina M .

Uma palavra w ∈ Σ∗ diz-se rejeitada por M se a computação da máquinadado o input w é bem sucedida e termina no estado de rejeição. UsamosLrj(M) ⊆ Σ∗ para denotar a linguagem formada por todas as palavras re-jeitadas pela máquina M .

Caso w seja aceite por M sendo (u|qac|v) a configuração atingida pela com-putação, se v ∈ Σ∗ então v diz-se o output da computação, o que denotamospor φM (w) = v. Caso contrário, φM (w) fica indefinido. Usamos φM : Σ∗ → Σ∗para denotar a função calculada pela máquina M .

Obviamente, φM (w) pode estar indefinido por várias razões: a computaçãodeM dado o input w não é bem sucedida, por abortar ou ser infinita, ou mesmoquando a computação é bem sucedida, no caso de w não ser aceite ou, sendoaceite, no caso em que ficam à direita da cabeça de leitura/escrita símbolos que

Page 17: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.2. VARIANTES 17

não pertencem a Σ∗ (para além dos �s inevitáveis).

Exemplo: decidir alternantes, tornando total a função de transição damáquina do exemplo 2.2.

Exemplo: sucessor em binário.

Definição 2.7. EquivalênciaMáquinas de Turing M1 e M2, ambas com alfabeto de entrada/saída Σ, dizem-se equivalentes, M1 ≡M2, se Lac(M1) = Lac(M2), Lrj(M1) = Lrj(M2) e φM1 =φM2 .

2.2 Variantes

Há na literatura bastantes variações sobre a definição de máquina de Turing.Analisamos de seguida algumas, que nos serão úteis. Apesar de permitiremmaior flexibilidade aparente, na verdade os modelos que analisaremos são essen-cialmente equivalentes ao modelo original, do ponto de vista da teoria da com-putabilidade (como veremos mais tarde, há algumas nuances importantes doponto de vista da teoria da complexidade).

2.2.1 Máquinas com transições-S

Por vezes, é útil definir transições em que a cabeça de leitura/escrita não semovimenta, nem para a esquerda nem para a direita.

Definição 2.8.Uma máquina de Turing com transições-S é precisamente como uma máquinade Turing, excepto que

• a função de transição é do tipo δ : Q× Γ→ Q̂× Γ× {L,R, S}.

As noções acima introduzidas nas Definições 2.3–3.1 são facilmente extensíveispara máquinas de Turing com transições-S, o que se deixa como exercício aoleitor. A única diferença substantiva diz respeito aos movimentos-S, para osquais se introduz a seguinte regra adicional:

(u|q|a.v) →M (u|s|b.v) se δ(q, a) = (s, b, S).

Teorema 2.9.Toda a máquina de Turing com transições-S é equivalente a uma máquina deTuring sem transições-S.

Dem. (esboço): Dada uma máquina M com transições-S é muito simplesconstruir uma máquina T (sem transições-S) que tem essencialmente o mesmocomportamento. Para tal, basta substituir em M cada transição-S por duastransições, como se indica abaixo.

Page 18: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

18 2. MÁQUINAS DE TURING

. . . q r . . .a→ b, S

. . . q qa r . . .a→ b, R γ → γ, L

onde qa denota um novo estado de T , e γ cada um dos símbolos do alfabeto detrabalho Γ. É trivial verificar que (u|q|a.v)→T (u.b|qa|v)→T (u|r|b.v), quandona máquina original se tinha (u|q|a.v)→M (u|r|b.v).

Daqui em diante, trabalharemos com máquinas com transições-S, a quechamaremos simplesmente máquinas de Turing.

2.2.2 Máquinas bidireccionais

Definição 2.10.Uma máquina de Turing bidireccional é precisamente como uma máquina deTuring, onde se assume que a fita de leitura/escrita é infinita em ambas asdirecções. As noções acima introduzidas nas Definições 2.3–3.1 são facilmenteextensíveis para máquinas de Turing bidireccionais, o que se deixa como ex-ercício ao leitor. A única diferença substantiva diz respeito aos movimentos àesquerda. Introduzem-se as seguintes regras adicionais:

(ε|q|a.v) →M (ε|s|�b.v) se δ(q, a) = (s, b, L)(ε|q|ε) →M (ε|s|�b) se δ(q,�) = (s, b, L)

Por oposição, as máquinas de Turing originais, em que a fita de memória éinfinita apenas para a direita dizem-se unidireccionais.

Teorema 2.11.Toda a máquina de Turing bidireccional é equivalente a uma máquina de Turingunidireccional.

Dem. (esboço): Dada uma máquina bidireccional M é possível construiruma máquina T (unidireccional) cujas computações são equivalentes. Para tal,é útil demarcar a área de trabalho na fita com símbolos I, F. Ao receber o inputw, a máquina T inicializa a área de trabalho

w

. . .

↓ inicialização

qin : I w F

após o que transita para o estado inicial de M , prosseguindo como M faria,excepto quando a computação levar a cabeça de leitura/escrita às células mar-cadas com os símbolos I,F. Nessas situações a computação de T deve prosseguircomo indicado de seguida

Page 19: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.2. VARIANTES 19

q : I u F

. . . ou

espaçamento-I ↓

q : I u F

q : I u F

. . .

↓ espaçamento-F

q : I u F

após o que se retomará a computação de M , no estado em que se encontrava.Isto é suficiente para reconhecer/decidir a mesma linguagem. Para que a

máquina calcule a mesma função, há que completar a computação eliminandoo marcador F, como indicado abaixo, após a computação atingir o estado deaceitação de M .

qac : I u v F

. . .

↓ finalização

I u v

Os troços da máquina T correspondentes a inicialização, espaçamento-I, espaçamento-F e finalização são relativamente simples, e deixam-se comoexercícios.

2.2.3 Máquinas multi-fita

Definição 2.12.Uma máquina de Turing multi-fita (com k ∈ N fitas) é precisamente como umamáquina de Turing, excepto que

• a função de transição é do tipo δ : Q× Γk → Q̂× Γk × {L,R, S}k.

As noções acima introduzidas nas Definições 2.3–3.1 são facilmente exten-síveis para máquinas de Turing multi-fita, o que se deixa como exercício aoleitor. Aliás, o caso k = 1 coincide precisamente com a noção já conhecida. Adiferença substantiva está no facto de a máquina trabalhar, em simultâneo, comk fitas de memoria, cada uma com a sua cabeça de leitura/escrita. Convenciona-se que o input é dado na primeira fita, e o output, caso exista, é calculado naúltima fita.

Exemplo 2.13. Atente-se na máquina com 2 fitas descrita pelo seguinte dia-grama.

qin q1 q2 qac1�→ 1$, SR0�→ 0$, SR

��→ ��, SL

�$→ �$, SR

1�→ 11, RR0�→ 0�, RS

�1→ �1, SL

É fácil de verificar que a máquina calcula a soma de dois números na rep-resentação unária. Por exemplo, para somar 1+2 a máquina evolui da seguinteforma:

Page 20: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

20 2. MÁQUINAS DE TURING

qin : 1 0 1 1

q1 : 1 0 1 1$

q1 : 1 0 1 1$ 1

q1 : 1 0 1 1$ 1

q1 : 1 0 1 1$ 1 1

↓. . .

. . .↓

q1 : 1 0 1 1$ 1 1 1

q2 : 1 0 1 1$ 1 1 1

q2 : 1 0 1 1$ 1 1 1

q2 : 1 0 1 1$ 1 1 1

q2 : 1 0 1 1$ 1 1 1

qac :1 0 1 1$ 1 1 1

Não é difícil de perceber que cada máquina multifita pode transformar-se(com algum esforço, é certo) numa máquina equivalente só com uma fita. Aideia passa por codificar numa só fita toda a informação contida nas várias fitas,incluindo a posição das diversas cabeças de leitura/escrita. Por exemplo, comk = 3, a configuração correspondente, na máquina multifita, a

0 1 0 1 0a b cx y x y z z

deve fazer-se corresponder na máquina só com uma fita à configuração

I 0• 1 0 1 0 # a b • c # x y x y z z• F

Teorema 2.14.Toda a máquina de Turing multi-fita é equivalente a uma máquina de Turingcom apenas uma fita.

Dem. (esboço): Dada uma máquina M com k > 1 fitas é possível construiruma máquina T com apenas uma fita, cujas computações são equivalentes. Aideia passa por trabalhar com um alfabeto mais rico Γ∪Γ•∪{#, I, F}, usando-seo símbolo # como separador, os símbolos I, F como delimitadores, e símbolosda forma γ• com γ ∈ Γ para anotar a posição de cada uma das k cabeças deleitura/escrita.

A máquina T começa por inicializar a fita como se segue

Page 21: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.2. VARIANTES 21

a w′

. . .

↓ inicialização

qin : I a• w′ # • # • # . . . # • F︸ ︷︷ ︸fita 1

︸︷︷︸fita 2

︸︷︷︸fita 3

︸︷︷︸fita k

onde assumimos que o input é w = a.w′, ou que a = � e w′ = ε se w = ε.

Cada transição de M é simulada em T do seguinte modo: lendo a fita daesquerda para a direita, obter os k símbolos marcados, e de volta a I na célulainicial ajustar as marcações da fita de acordo com os símbolos a escrever e osmovimentos a efectuar (estes últimos podem obrigar, no troço correspondente acada uma das fitas da máquina original, a abrir espaços à direita ou à esquerda,com o correspondente arrastamento dos restantes símbolos). Esta ideia resultana simulação em T , de cada transição de M , por meio de uma sequência detransições, como se indica de seguida.

. . . q r . . .

u︷ ︸︸ ︷u1 . . . uk →

v︷ ︸︸ ︷v1 . . . vk,m1 . . .mk

↓ transacção

. . . q qu1 qu1u2 . . . qu

quvkquvkvk−1

. . .quvr. . .

I→ I, Rγ → γ,R

u•1 → u•1, R

#→ #, Rγ → γ,R

u•2 → u•2, R

#→ #, Rγ → γ,R

u•3 → u•3, R u•k → u•k, R

F → F,L

γ → γ, L

u•k . . .

u•k−1 . . .

γ → γ, L

#→ #, L

u•k−2 . . .

γ → γ, L

#→ #, L

u•1 . . .

γ → γ, L

I→ I, S

Cada um dos troços assinalados com a seta dupla e tracejada, percorre a fitapara a esquerda até encontrar u•i . Depois, a actividade da máquina dependedo movimento mi. Se mi = S basta substituir u•i por v•i e prosseguir para aesquerda.

. . . qu...viqu...vi−1

. . .u•i → v•i , L

Se mi = R,L, substitui-se u•i por vi, substituindo-se também o símbolo γimediatamente à direita/esquerda por γ•, o que pode exigir a introdução de umespaço e respectivo arrastamento dos restantes símbolos.

Page 22: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

22 2. MÁQUINAS DE TURING

. . . qu...viqu...vi−1

. . .u•i → vi,miγ → γ•, L

#, I, F . . .espaçamento

Para devolver o output correcto, após a aceitação por M , a máquina T devesubstituir o símbolo marcado Γ• por γ, bem como eliminar o F final, no troçocorrespondente à última fita, antes de terminar a computação, como ilustradoabaixo,

fita k︷ ︸︸ ︷qac : I . . . # u a• v′ F

. . .

↓ finalização

I . . . # u a v′

onde assumimos que o output é v = a.v′, ou que a = � caso v = ε.

Os troços da máquina T correspondentes a inicialização e finalização,bem como o detalhe das transacções de simulação de cada uma das transiçõesdeM , incluindo o troço de espaçamento, são relativamente simples, e deixam-se como exercícios.

2.2.4 Máquinas não-deterministas

Definição 2.15.Uma máquina de Turing não-determinista é essencialmente como uma máquinade Turing, excepto que

• a função de transição é do tipo δ : Q× Γ→ ℘(Q̂× Γ× {L,R, S}).

As computações de uma máquina de Turing não-determinista organizam-se,em geral, como uma árvore cuja raíz é a configuração inicial e que se ramificasempre que haja possíveis transições alternativas. Cada árvore de computaçãopode ser finita ou infinita, apesar de haver sempre um número máximo deramificações em cada nó. Caso a árvore seja infinita, é claro que terá de haverum ramo infinito (uma escolha de alternativas que leva a uma computaçãoinfinita). De facto, cada ramo da árvore corresponde a uma escolha de transiçãoentre as possíveis alternativas. Se δ(q, a) nunca tiver mais de um elemento, éóbvio que não há não-determinismo, nem escolhas a fazer, pelo que o modelocoincide com a máquina de Turing usual.

Exemplo 2.16. Considere a máquina não-determinista descrita pelo seguintediagrama.

qin q1 q2 qac

1→ 1, R0→ 0, R

1→ 1, R 1→ 1, R 1→ 1, R

Page 23: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.2. VARIANTES 23

A máquina aceita o input (no alfabeto 0,1) se a palavra contém três 1sconsecutivos, rejeitando-a no caso contrário.

Definição 2.17.Seja M = (Σ,Γ, Q, qin, qac, qrj, δ) uma máquina de Turing não-determinista.

Uma palavra w ∈ Σ∗ diz-se aceite porM se alguma computação da máquinadado o input w é bem sucedida e termina no estado de aceitação.

Uma palavra w ∈ Σ∗ diz-se rejeitada por M se todas as computaçõesda máquina dado o input w são finitas mas nenhuma termina no estado deaceitação.

Caso w seja aceite por M e o output em todas as configurações de termi-nação seja v ∈ Σ∗, então definimos φM (w) = v. Caso contrário, φM (w) ficaindefinido.

Usamos Lac(M), Lrj(M) como antes, para denotar as linguagens sobre Σformadas pelas palavras aceites, resp. rejeitadas, por M .

Teorema 2.18.Toda a máquina de Turing não-determinista é equivalente a uma máquina deTuring determinista.

Dem. (esboço): Seja L uma linguagem reconhecida por uma máquina deTuring não-determinista N = (Γ,Σ, Q, qin, qac, qrj, δ).

A ideia da simulação de N por uma máquina determinista D é percorrer aárvore de computações de N em largura. Observe-se que se a árvore fosse per-corrida em profundidade D poderia deparar com uma computação infinita antesda computação de aceitação e portanto nunca chegaria a essa configuração deaceitação pois tentaria primeiro percorrer a computação infinita até ao fim.

Para percorrer essa árvore de computações em largura a máquina de Turingdeterminista D tem 3 pistas sendo que na pista 1 está a palavra de entradaque não é alterada, na pista 2 está uma cópia da pista de N em algum pontode uma sua computação, e na pista 3 está o endereço de uma configuração damáquina não-determinista na árvore de computações.

O endereço na pista 3 está em base b em que b é a cardinalidade máxima dosresultados da função de transição da máquina não-determinista N de acordocom a tabela dessa função. Assim por exemplo se lá estiver 231 isso significa aconfiguração da árvore de computações de N atingível por se escolher o segundofilho da configuração inicial, de seguida o terceiro filho desse nó e finalmente oprimeiro filho deste outro nó.

Sendo assim, a máquina D faz o seguinte:

(1) Copia a palavra de entrada na pista 1 para a pista 2 (a pista 3 só tembrancos o que corresponde ao endereço ε);

(2) Repete:

(2.a) Percorre a pista 3 da esquerda para a direita até chegar a um branco. Porcada símbolo a não branco lido, faz evoluir a configuração na pista 2 como se Ntivesse escolhido a a-ésima opção da sua função de transição para o seu estado

Page 24: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

24 2. MÁQUINAS DE TURING

na simulação naquele momento e símbolo lido. Se entretanto N chegar a umestado de aceitação, D aceita também a palavra. Se N chegar a um estadode rejeição ou se a função de transição de D para o seu estado na simulaçãonaquele momento e símbolo lido não tiver a-ésima opção, D passa para (2.b);

(2.b) Copia a palavra de entrada na pista 1 para a pista 2 limpando o restanteespaço e substitui-se o endereço na pista 3 pelo próximo endereço lexicográfico.

Assim, é imediato ver que D definida desta maneira emula exatamente o com-portamento de N e portanto aceita a sua palavra de entrada se e só se Ntambém a aceita. Logo D reconhece também L.

2.3 Máquina universalJá vimos que o alfabeto {0, 1} é suficiente para representarmos qualquer prob-lema. Recorde-se por exemplo a representação canónica de grafos, desenvolvidano final do Capítulo 1. Não será portanto surpreendente que possamos repre-sentar sobre o alfabeto {0, 1} todas as máquinas de Turing.

Seja M = (Σ,Γ, Q, qin, qac, qrj, δ) uma máquina de Turing, que assumimos,para simplificar mas sem perda de generalidade, estar de acordo com a definiçãooriginal.

A máquinaM tem n = #Q̂ = #(Q∪{qac, qrj}) = #Q+#{qac, qrj} = #Q+2estados. Denotamos os elementos de Q̂ por q1, . . . , qn e assumimos que q1 = qin,qn−1 = qac e qn = qrj. Representamos cada um dos n estados usando palavrasde comprimento n com exactamente um 1, nomeadamente

100 . . . 00︸ ︷︷ ︸q1= qin

, 010 . . . 00︸ ︷︷ ︸q2

, 001 . . . 00︸ ︷︷ ︸q3

, . . . , 000 . . . 10︸ ︷︷ ︸qn−1= qac

, 000 . . . 01︸ ︷︷ ︸qn= qrj

.

Por outro lado, a máquina M trabalha com k + 1 = #Γ = #((Γ \ {�}) ∪{�}) = #(Γ \ {�}) + #{�} = #(Γ \ {�}) + 1 símbolos distintos. Denotamosos elementos de Γ por a0, a1, . . . , ak e assumimos que a0 = �.

Representamos os símbolo de Γ usando palavras de comprimento k. Nomea-damente, representamos a0 = � usando apenas 0s, e os símbolos a1, . . . , akusando palavras com exactamente um 1,

000 . . . 00︸ ︷︷ ︸a0=�

, 100 . . . 00︸ ︷︷ ︸a1

, 010 . . . 00︸ ︷︷ ︸a2

, 001 . . . 00︸ ︷︷ ︸a3

, . . . , 000 . . . 10︸ ︷︷ ︸ak−1

, 000 . . . 01︸ ︷︷ ︸ak

.

Usamos um símbolo para representar os movimentos da máquina,

0︸︷︷︸L

, 1︸︷︷︸R

.

Uma representação canónica da máquina M é então a palavra

11 . . . 1︸ ︷︷ ︸n vezes

0 11 . . . 1︸ ︷︷ ︸k vezes

0 trans1 . . . transt

onde cada transi ∈ {0, 1}∗, uma palavra de comprimento 2n+2k+1, representauma transição,

Page 25: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.3. MÁQUINA UNIVERSAL 25

. . .︸︷︷︸qi

. . .︸︷︷︸aj

. . .︸︷︷︸qr

. . .︸︷︷︸as

. . .︸︷︷︸m

desde que δ(qi, aj) = (qr, as,m).

Exemplo 2.19. A máquina

qin q2 qac

qrj

0→ 0, R 0→ 0, R

reconhece as palavras sobre {0, 1} que têm dois 0s consecutivos. Ao contráriode outros exemplos, representamos explicitamente o estado de rejeição, apesarde inacessível, para tornar mais clara a representação.

Uma sua representação canónica é, tomando a1 = 0 e a2 = 1, a palavra

4 estados︷ ︸︸ ︷1111 0

2 símbolos︷︸︸︷11 0

transição︷ ︸︸ ︷1000︸ ︷︷ ︸q1= qin

10︸︷︷︸a1=0

0100︸ ︷︷ ︸q2

10︸︷︷︸a1=0

1︸︷︷︸R

transição︷ ︸︸ ︷0100︸ ︷︷ ︸q2

10︸︷︷︸a1=0

0010︸ ︷︷ ︸q3= qin

10︸︷︷︸a1=0

1︸︷︷︸R

.

Denotamos por M ⊆ {0, 1}∗ o conjunto das representações canónicas demáquinas de Turing. Doravante, quando for apropriado, confundiremos cadamáquina de Turing com uma sua representação canónica.

Proposição 2.20.Existe uma máquina de Turing U , dita universal, que para qualquer M ∈M ew ∈ {0, 1}∗ satisfaz as seguintes propriedades:

• U aceita (resp. rejeita) M$w se e só se M aceita (resp. rejeita) w, e

• φU (M$w) = φM (w).

Dem.: Seja U a máquina de Turing com seis pistas que ao receber umapalavra x começa por verificar se x é da forma M$w para alguma máquina deTuring M e w ∈ {0, 1}∗. Se x não for dessa forma então U rejeita x. Casocontrário, U entra na fase de inicialização:

(1) fase de inicialização. Nesta fase U copia a sequência de 1’s correspondentesaos estados deM para a pista 2, a sequência de 1’s correspondentes aos símbolosde M para a pista 3, as transições de M para a pista 4, coloca o estado inicialde M na pista 5 e copia a palavra w para a pista 6 . Os sensores destas pistassão colocados no início destas palavras. De seguida U passa para a fase desimulação.

(2) fase de simulação. Nesta fase U faz os seguintes passos repetidamente atéou M abortar ou ficar num estado de aceitação ou rejeição: lê o símbolo ondeestá posicionado o sensor da pista 6 e o estado atual de M na pista 5 e percorrea pista 3 procurando a transição de M para este símbolo e estado. Se nãoencontrar transição, U aborta. Se encontrar transição, U altera o estado de

Page 26: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

26 2. MÁQUINAS DE TURING

M na pista 5 de acordo com o que essa transição indica, U escreve na pista6 o símbolo indicado por essa transição, e U desloca o sensor da pista 6 deacordo com o indicado por essa transição. Se após isto o estado na pista 5 forde aceitação então U termina aceitando, se o estado for de rejeição então Utermina rejeitando.

Uma máquina universal deve ser entendida como uma máquina programável,tal como os computadores modernos. Este é um resultado muito importanteque decorre do trabalho de Turing.

2.4 Modelos de computação e postulado de Church

Temos visto até agora várias variantes de máquinas de Turing equivalentes empoder computacional à máquina de Turing proposta inicialmente. Mas muitosoutros modelos de computação têm sido propostos, muitos deles bastante difer-entes de máquinas de Turing. No entanto todos têm a característica fundamen-tal que caracteriza uma máquina de Turing: acesso sem restrições a memóriailimitada, execução em cada passo de uma quantidade finita de trabalho, e sãopor isso equivalentes a máquinas de Turing, como tem sido mostrado ao longodo tempo.

Mas o que é um algoritmo? Intuitivamente, um algoritmo é uma coleçãofinita de instruções simples para realizar alguma tarefa. Mas, como podemosdefinir rigorosamente um algoritmo? Por exemplo se quisermos mostrar quenão existe um algoritmo para resolver um problema, como o podemos fazer senão tivermos uma definição rigorosa de algoritmo?

A definição rigorosa de algoritmo foi proposta em 1936 independentementepor Alonzo Church e Alan Turing. Church propôs que um algoritmo é umprocesso que pode ser descrito pelo que ele designou de cálculo-λ. Turing propôsque um algoritmo é um processo que pode ser descrito por uma máquina deTuring.

De facto, há vários outros modelos formais de computação, alguns até his-toricamente tão importantes como os modelos de Turing e Church, como asfunções recursivas de Gödel, mas apesar da diversidade demonstram-se equiv-alentes.

De um modo interessante estas duas definições foram mostradas seremequivalentes e foi proposto o seguinte postulado que até agora tem resistidoao passar do tempo:

Definição 2.21. Postulado de Church-Turing: A noção intuitiva de algoritmocoincide com a noção de algoritmo sobre máquinas de Turing. Ou mais rig-orosamente: uma tarefa é intuitivamente computável (i.e., computável por umapessoa usando caneta e papel) se e somente se é comput’avel por uma máquinade Turing.

Consequências, exemplo.

Page 27: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

2.4. MODELOS DE COMPUTAÇÃO E POSTULADO DE CHURCH 27

ExercíciosVer folhas das aulas práticas.

(2a) Demonstre que qualquer máquina de Turing é equivalente a uma máquinacuja computação nunca aborta.

(2b) Defina uma noção de composição sequencial de máquinas de Turing, demodo a que a máquina composta M1;M2 satisfaça φM1;M2 = φM2 ◦ φM1 .

(2c) Defina uma noção de composição paralela de máquinas de Turing, demodo a que a máquina composta M1||M2 simule a computação de ambasas máquinas (sugestão: simule alternadamente um passo de computaçãode cada uma das máquinas).

(2d) Recorde a noção de linguagem regular. Demonstre que para toda a lin-guagem regular L existe uma máquina que aceita as palavras de L erejeita as de L (sugestão: construa uma máquina de Turing a partir deum autómato finito para a linguagem).

(2e) Um número n ∈ N diz-se composto se existe 1 < m < n tal que n émúltiplo de m. Demonstre que a linguagem dos números compostos édecidível. Sugestão: use a representação unária e construa uma máquinaque, dado n, construa m não-deterministicamente.

(2f) SUBSETSUM, unário, solução não-determinista; SUBSETSUM, binário,solução não-determinista.

(2g) Valide a representação proposta no exercício (1i), mostrando que se L ∈LΣ é representada por L01 ∈ L{0,1} e f ∈ FΣ é representada por f01 ∈F{0,1}, então L é reconhecível (resp. decidível) se e só se L01 é reconhecível(resp. decidível), e que f é computável se e só se f01 é computável.

(2h) Demonstre que toda a máquina de Turing com Σ = {0, 1} e Γ 6= {0, 1,�}é equivalente a uma máquina de Turing com Σ = {0, 1} e Γ = {0, 1,�}.

(2i) Demonstre que existe uma máquina de Turing M tal que Lac(M) = G ⊆{0, 1}∗ é a linguagem formada pelas palavras que denotam grafos na rep-resentação canónica. Altere a máquinaM por forma a que também rejeitetodas as palavras que não representam gratos.

(2j) Demonstre que existe uma máquina de TuringM tal que Lac(M) =M⊆{0, 1}∗ é a linguagem formada pelas palavras que denotam máquinas deTuring na representação canónica. Altere a máquina construída por formaa que também rejeite todas as palavras que não representam máquinas deTuring.

(2k) Usando a representação canónica de máquinas de Turing, construa umamáquina S tal que φS(M1$M2) = M1;M2, implementando assim a cons-trução definida no exercício (2b).

Page 28: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

28 2. MÁQUINAS DE TURING

Page 29: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

3

Teoria da Computabilidade

3.1 Computabilidade e decidibilidade

Os problemas relevantes que estudamos são problemas de decisão, semi-decisão,ou cálculo de funções.

Definição 3.1.Seja Σ um alfabeto, L ⊆ Σ∗ uma linguagem, f : Σ∗ → Σ∗ uma função.A linguagem L diz-se reconhecível se existe uma máquina de Turing M comalfabeto de entrada/saída Σ tal que Lac(M) = L.Denotamos por RΣ o conjunto de todas as linguagens reconhecíveis sobre oalfabeto Σ, isto é, RΣ = {Lac(M) : M ∈MΣ}.A linguagem L diz-se decidível se existe uma máquina de TuringM com alfabetode entrada/saída Σ tal que Lac(M) = L e Lrj(M) = L.Denotamos por DΣ o conjunto de todas as linguagens decidíveis sobre o alfabetoΣ, isto é, DΣ = {Lac(M) : M ∈MΣ e Lac(M) = Lrj(M)}.A função f diz-se computável se existe uma máquina de TuringM com alfabetode entrada/saída Σ tal que f = φM .Denotamos por CΣ o conjunto de todas as funções computáveis sobre o alfabetoΣ, isto é, CΣ = {φ(M) : M ∈MΣ}.

É também usual denominar as linguagens reconhecíveis como semi-decidíveis.A razão é simples, exige-se que exista uma máquina que aceite precisamente aspalavras de L, mas não se exige que as palavras de L sejam rejeitadas. Obvia-mente, DΣ ⊆ RΣ.

O seguinte resultado mostra que podemos concentrar-nos nos problemas de(semi-)decisão, já que o cálculo de funções se reduz a eles.

Proposição 3.2. Se Σ é um alfabeto e f : Σ∗ → Σ∗ uma função, então:

1. f é computável se e só se Grafo(f) é reconhecível;

2. se f é total, f é computável se e só se Grafo(f) é decidível.

Dem.: Seja f : Σ∗ → Σ∗ uma função.

29

Page 30: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

30 3. TEORIA DA COMPUTABILIDADE

(1) Suponha-se que f é computável e seja D uma máquina de Turing que cal-cula f . Considere-se a máquina de Turing T com duas pistas que ao receberuma palavra w verifica se w é da forma (m,n). Se não for, rejeita w. Se for,copia m para a pista 2 e simula a execução de D com a palavra de entrada napista 2. Se essa execução terminar aceitando, então compara o resultado dessasimulação com n. Se forem iguais T aceita (m,n), se forem diferentes, rejeita.Se a execução de D terminar rejeitando então T termina também rejeitando.

É imediato ver que a linguagem reconhecida por T é Grafo(f).

Suponha-se agora que a linguagem Grafo(f) é reconhecível. SejaD uma máquinade Turing que reconhece Grafo(f). Considere-se a máquina de Turing não-determinista N com 3 pistas que ao receber uma palavra m faz repetidamente:(1) Escreve não-deterministicamente na pista 2 a palavra (m, a) e na pista 3a palavra a posicionando de seguida o sensor no inicio de a, em que a é umnúmero natural; (2) Simula a execução de D na pista 2. Se D aceita, N aceita,se D rejeita, N rejeita, finalmente, se D abortar N aborta. Observe-se que sóexiste no máximo uma palavra do tipo (m,n) para cada m. Logo a árvore decomputações de N para m tem no máximo uma computação de aceitação como resultado da função.

(2) A prova é omitida pois é semelhante à prova de (1).

Já vimos vários exemplos de linguagens decidíveis e linguagens reconhecíveis,e os conhecimentos de programação e algoritmia do leitor serão certamenteesclarecedores a este respeito, à luz do Postulado de Church, mas é útil perce-bermos como se relacionam e organizam estes conceitos.

3.2 Propriedades de fecho e redução computável

Proposição 3.3. Seja Σ um alfabeto, L1, L2 linguagens decidíveis, sobre Σ.Então, ∅, Σ∗, L1 ∩ L2, L1 ∪ L2 e L1 \ L2 são linguagens decidíveis.

Dem.: Seja Σ um alfabeto e L1 e L2 linguagens sobre Σ. Sejam D1 e D2máquinas de Turing que decidem L1 e L2 respetivamente. Então:

(1) ∅ é decidível. Considere-se a máquina de Turing que ao receber uma palavratermina imediatamente rejeitando. Dado que essa máquina tem a linguagemvazia e termina sempre então ∅ é decidível.

(2) Σ∗ é decidível. Considere-se a máquina de Turing que ao receber umapalavra termina imediatamente aceitando. Dado que a linguagem da máquinaé Σ∗ e a máquina termina sempre então Σ∗ é decidível.

(3) L1 ∪ L2 é decidível. Considere-se a máquina de Turing D com duas pistasque ao receber uma palavra de entrada w copia a palavra para a pista 2 e deseguida simula D1 na pista 1 até D1 terminar. Se D1 termina aceitando então Dtermina aceitando. Se D1 termina rejeitando então de seguida D simula D2 napista 2 até D2 terminar. Se D2 termina aceitando então D termina aceitando,se D2 termina rejeitando então D termina rejeitando. É imediato ver que D

Page 31: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

3.2. PROPRIEDADES DE FECHO E REDUÇÃO COMPUTÁVEL 31

decide L1 ∪ L2;

(4) L1 ∩ L2 é decidível. Considere-se a máquina de Turing D com duas pistasque ao receber uma palavra de entrada w copia a palavra para a pista 2 e deseguida simula D1 na pista 1 até D1 terminar. Se D1 termina rejeitando entãoD termina rejeitando. Se D1 termina aceitando então de seguida D simula D2na pista 2 atéD2 terminar. Se D2 termina aceitando entãoD termina aceitandose D2 termina rejeitando então D termina rejeitando. É imediato ver que Ddecide L1 ∩ L2;

(5) L1 é decidível. Considere-se a máquina de Turing D que ao receber umapalavra de entrada w simula a execução de D1 sobre w terminando quando D1termina e aceitando se D1 rejeita e rejeitando se D1 aceita. Então é imediatover que D decide L1.

Proposição 3.4. Seja Σ um alfabeto, L1, L2 linguagens reconhecíveis, sobreΣ. Então, ∅, Σ∗, L1 ∩ L2 e L1 ∪ L2 são linguagens reconhecíveis. Se L2 fordecidível então L1 \ L2 é reconhecível.

Dem.: Seja Σ um alfabeto e L1 e L2 linguagens sobre Σ. Sejam D1 e D2máquinas de Turing que reconhecem L1 e L2 respetivamente. Então:

(1) ∅ é reconhecível. A linguagem ∅ é reconhecível pois é decidível e todas aslinguagens decidíveis são reconhecíveis;

(2) Σ∗ é reconhecível. A linguagem Σ∗ é reconhecível pois é decidível e todasas linguagens decidíveis são reconhecíveis;

(3) L1 ∪ L2 é reconhecível. Considere-se a máquina de Turing D com duaspistas que ao receber uma palavra de entrada w copia a palavra para a pista2 e de seguida simula alternadamente um passo da execução de D1 na pista1 e um passo da execução de D2 na pista 2. Se uma das simulações terminarentão D termina também se essa simulação terminar aceitando. Caso contrárioD prossegue a simulação da execução da outra máquina. Se essa outra simu-lação terminar então D termina também e aceita se essa simulação terminaraceitando, e rejeita caso contrário. É imediato ver que D reconhece L1 ∪ L2;

(4) L1 ∩ L2 é reconhecível. Considere-se a máquina de Turing D com duaspistas que ao receber uma palavra de entrada w copia a palavra para a pista2 e de seguida simula alternadamente um passo da execução de D1 na pista1 e um passo da execução de D2 na pista 2. Se uma das simulações terminarrejeitando ou abortando então D termina rejeitando. Se essa simulações termi-nar aceitando então D prossegue a simulação da execução da outra máquina,terminando portanto só quando essa outra simulação terminar. Se essa outrasimulação terminar aceitando entã termina aceitando. Caso contrário D rejeita.É imediato ver que D reconhece L1 ∩ L2;

(5) L1 \ L2 é reconhecível se L2 é decidível. Suponha-se que L2 é decidível.Considere-se a máquina de Turing D com duas pistas que ao receber umapalavra de entrada w copia a palavra para a pista 2 e de seguida simula aexecução de D2 na pista 2 até essa execução terminar, e de seguida simula aexecução de D1 na pista 1. Se a execução de D1 terminar então D aceita se

Page 32: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

32 3. TEORIA DA COMPUTABILIDADE

a execução de D1 terminar aceitando e a execução de D2 terminar rejeitando,caso contrário rejeita. É imediato ver que D reconhece L1 \ L2.

Na verdade, a diferença essencial entre decidibilidade e semi-decidibilidadeestá precisamente na complementação. Como veremos, em geral, o complemen-tar de uma linguagem reconhecível pode não ser reconhecível.

Proposição 3.5. Seja Σ um alfabeto, L uma linguagem sobre Σ. Então, L édecidível se e só se L e L são ambas linguagens reconhecíveis.

Dem.: Seja Σ um alfabeto e L ⊆ Σ∗.

Suponha-se que L é decidível. Então é imediato ver que L e L são reconhecíveis.

Suponha-se agora que L e L são reconhecíveis e sejam D e M as máquinas deTuring que reconhecem L e L respectivamente. Considere-se a máquina deTuring T com duas pistas que ao receber uma palavra w copia essa palavrapara a pista 2 e de seguida simula alternadamente um passo da execução de Dna primeira fita e um passo da execução deM na segunda fita, tal que T terminaquando uma das simulações termina aceitando, e T aceita se essa simulação fora de D e rejeita se for a de M .

É imediato ver que T decide L pois dada uma palavra w ou w pertence a L ouw pertence a L.

A ideia usada acima, de construir novas máquinas recorrendo a máquinas obti-das previamente, leva-nos à seguinte noção de redução entre linguagens, queserá particularmente útil adiante.

Definição 3.6. Sejam Σ1,Σ2 alfabetos, L1 e L2 linguagens sobre Σ1 e Σ2,respectivamente. Dizemos que há uma redução computável de L1 a L2, ousimplesmente que L1 se reduz a L2, o que denotamos por L1 ≤ L2 se existeuma função total computável f : Σ∗1 → Σ∗2 tal que se tem, para cada w ∈ Σ∗1,

w ∈ L1 se e só se f(w) ∈ L2.

Exemplos.

Proposição 3.7. Sejam Σ1,Σ2 alfabetos, L1 e L2 linguagens sobre Σ1 e Σ2,respectivamente. Se L1 ≤ L2 e L2 é decidível (resp. reconhecível) então L1 édecidível (resp. reconhecível).

Dem.: Assuma-se que L1 ≤ L2 e que M2 é uma máquina de Turing quedecide (reconhece) L2. Como existe uma função total computável f : Σ∗1 → Σ∗2tal que se tem, para cada w ∈ Σ∗1, w ∈ L1 se e só se f(w) ∈ L2, seja F umamáquina de Turing que a calcule.

Considere-se a máquina M1 que, sobre um input w, simula F sobre w paraobter f(w), e de seguida simulaM2 sobre f(w). É óbvio queM1 aceita/rejeita wse e só seM2 aceita/rejeita f(w), concluindo-se queM2 decide (resp. reconhece)L2.

Page 33: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

3.3. INDECIDIBILIDADE 33

3.3 IndecidibilidadeO argumento mais simples que podemos usar para justificar a existência deproblemas não computáveis, envolve cardinalidades. À luz do que já vimos, enomeadamente dos resultados dos exercícios (1i), (2g) e (2h), focar-nos-emosessencialmente nos problemas postos sobre o alfabeto {0, 1}, pelo que usaremosR = R{0,1}, D = D{0,1} e C = C{0,1}, para além de L = L{0,1} e de F = F{0,1}.

Proposição 3.8. Seja M ⊆ {0, 1}∗ o conjunto de todas as representaçõescanónicas de máquinas de Turing. Tem-se que #M = #N.

Dem.: Considere-se a função f : M → {0, 1}∗ tal que f(〈M〉) = 〈M〉.Então é imediato ver que f é injectiva. Como {0, 1}∗ é numerável então existeuma função injectiva de {0, 1}∗ para N+. Assim por composição existe umafunção injectiva g :M→ N+. Como o conjuntoM é infinito existe uma funçãoinjectiva h : N+ →M. Logo o conjuntoM é numerável.

Corolário 3.9. #D = #R = #C = #N.

Dem.: É fácil mostrar que D é infinito. Para mostrar que D é numeráveldefina-se f : D → N por f(L) = h(ML) onde h : M → N é injectiva (videProposição 3.8) eML é uma máquina de Turing que decide L, isto é, Lac(ML) =L e Lrj(ML) = L, para cada L ∈ D. A função f fica bem definida paracada escolha da máquina ML, e é injectiva porque f(L1) = f(L2) implicah(ML1) = h(ML2) e portanto ML1 = ML2 , donde se concluiria que L1 =Lac(ML1) = Lac(ML2) = L2.

A demonstração para R e C é análoga.

No entanto, temos que L e F não são numeráveis, como já sabemos dasProposições 1.4 e 1.5, pelo que podemos concluir que terão de existir linguagensnão-decidíveis, mesmo não-reconhecíveis, bem como funções não-computáveis.

Corolário 3.10. #D < #L, #R < #L e #C < #F .

A pergunta que podemos colocar-nos é que linguagens e funções são essas queestão fora do nosso alcance. Haverá problemas interessantes não computáveis?Na verdade há muitos. Considerem-se as seguintes linguagens:

• Lac = {M$w : M ∈M, w ∈ Lac(M)} (o problema da aceitação),

• Lrj = {M$w : M ∈M, w ∈ Lrj(M)} (o problema da rejeição),

• Lsu = Lac ∪ Lrj (o problema da computação bem sucedida),

• Lab = {M$w : M ∈ M e a computação de M sobre w ∈ {0, 1}∗ aborta}(o problema do abortamento),

• Lte = Lsu ∪ Lab (o problema da terminação).

Proposição 3.11.As linguagens Lac, Lrj, Lsu, Lab e Lte são reconhecíveis mas não decidíveis.

Page 34: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

34 3. TEORIA DA COMPUTABILIDADE

Dem.: As demonstrações são semelhantes. Centramo-nos no problema daterminação.

Para mostrar que Lte é reconhecível basta considerar a máquina que, sobrecada input M$w, usa a máquina universal para simular M sobre w, aceitandoassim que a computação de M sobre w termine (aceitando, rejeitando ou abor-tando).

Assuma-se agora, por absurdo, que Lte fosse decidível. Nesse caso, existiriauma máquina de Turing D que decidiria Lte. Construa-se então a seguintemáquina T : para cada input M , usa a máquina universal para simular a com-putação de D sobre M$M ; se D aceitar a máquina T deve entrar num cicloinfinito, se D rejeitar a máquina T aceita o input.

É simples verificar queM é aceite por T se e só se a computação da máquinaM sobre o input M não termina. Então pode concluir-se, para a própriamáquina T , que T é aceite por T se e só se a computação da máquina Tsobre o input T não termina. Isto é uma contradição, já que por construção acomputação de T nunca aborta nem rejeita. Conclui-se, portanto, que Lte nãoé decidível.

Em particular, a indecidibilidade do problema da terminação (o famosohalting problem) é um dos resultados mais emblemáticos de Turing.

Corolário 3.12.As linguagens Lac, Lrj, Lsu, Lab e Lte não são reconhecíveis.

3.4 Teorema de Rice

O seguinte teorema é uma ferramenta bastante genérica para demonstrar a in-decidibilidade de linguagens formadas por máquinas de Turing cujas linguagenssatisfaçam alguma propriedade não-trivial.

Teorema 3.13.Seja L ⊆M tal que, quaisquer que sejamM1,M2 ∈M, seM1 ∈ L e Lac(M1) =Lac(M2) então M2 ∈ L. Se ∅ 6= L 6=M então L é indecidível.

Dem.: Suponha-se que ∅ 6= L 6= M e, por absurdo, admitamos que L édecidível. Isto implica que também L é decidível. Seja M∅ uma máquina querejeita todos os inputs. Obviamente, tem-se Lac(M∅) = ∅.

Se M∅ /∈ L vamos mostrar que Lac ≤ L. Seja M1 ∈ L 6= ∅ uma qualquermáquina. Por hipótese, sabemos que Lac(M1) 6= ∅. Defina-se f(M$w) = M ′wcomo a máquina que quando recebe como input x simula M sobre w e depois,caso M aceite w, simula M1 sobre u.

Facilmente, Lac(M ′w) = Lac(M1) se M aceita w, e Lac(M ′w) = Lac(M∅) = ∅se M não aceita w. Portanto, M$w ∈ Lac se e só se M aceita w se e só seLac(M ′w) = Lac(M1) se e só se M ′w = f(M$w) ∈ L.

Page 35: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

3.5. TEOREMA DA RECURSÃO 35

Se M∅ ∈ L mostramos, analogamente, que Lac ≤ L. Seja M2 /∈ L 6= Muma qualquer máquina. Por hipótese, sabemos que Lac(M2) 6= ∅. Defina-sef(M$w) = M ′w como a máquina que quando recebe como input x simula Msobre w e depois, caso M aceite w, simula M2 sobre u.

Facilmente, Lac(M ′w) = Lac(M2) se M aceita w, e Lac(M ′w) = Lac(M∅) = ∅se M não aceita w. Portanto, M$w ∈ Lac se e só se M aceita w se e só seLac(M ′w) = Lac(M2) se e só se M ′w = f(M$w) ∈ L.

Em qualquer dos casos, ter-se-ia Lac decidível, o que contradiz resultadosanteriores.

Aplicações ...

3.5 Teorema da recursão

O próximo resultado é uma versão simplificada do resultado original, devido aKleene, que constitui o fundamento daquilo a que hoje chamamos de progra-mação recursiva, e que explora o fenómeno da auto-referência em computação.Como vimos anteriormente, existe uma máquina de Turing universal que sim-ula o comportamento de qualquer outra máquina. Mais surpreendentemente,no entanto, podemos mostrar que qualquer máquina simula o comportamentode alguma máquina.

Teorema 3.14.Qualquer que seja a máquina de TuringM ∈M existe F ∈M tal que, qualquerque seja x ∈ {0, 1}∗, a computação de F sobre x simula a computação de Msobre F$x.

Dem.: Considere-se a máquina de Turing M . Dado u ∈ {0, 1}∗, seja Mu amáquina que quando recebe como input x simula M sobre u$x.

Considere-se a máquina W que, quando recebe como input uma máquina Tcalcula t = φT (T ) e devolve como output Mt. Claramente, φW (T ) = MφT (T ).

Tome-se F = Mw onde w = φW (W ).A computação de F sobre x, isto é, a computação de Mw sobre x, simula a

computação de M sobre w$x. Mas w = φW (W ) = MφW (W ) = Mw = F , comoqueríamos demonstrar.

O resultado tem imensas aplicações práticas, desde logo em demonstrações deindecidibilidade.

Exemplo 3.15. Considere-se Lac e use-se o teorema da recursão para obteruma demonstração alternativa da sua indecidibilidade.

Suponha-se, por absurdo, que Lac fosse decidível. Nesse caso, também seteria Lac decidível e portanto existiria uma máquina Dac que decidiria Lac.

Pelo teorema da recursão, ter-se-ia também uma máquina F tal que acomputação de Dac sobre F$x simula a computação de F sobre x, para cadax ∈ {0, 1}∗.

Page 36: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

36 3. TEORIA DA COMPUTABILIDADE

Nesse caso, facilmente, x é aceite por F se e só se F$x é aceite por Dac see só se F$x ∈ Lac se e só se F$x /∈ Lac se e só se x não é aceite por F , o queé obviamente uma contradição.

Uma das aplicações mais interessantes do teorema da recursão é a demon-stração de existência de certos tipos, muito simples e inócuos, de vírus auto-replicáveis: V ∈ M diz-se auto-replicável se φV (w) = V qualquer que sejaw ∈ {0, 1}∗. Uma máquina auto-replicável é também conhecida por Quine, emhomenagem ao famoso ... Quines construídos nas mais diversas linguagens deprogramação podem ser encontrados em ...

Proposição 3.16.Existe uma máquina de Turing auto-replicável. As máquinas de Turing auto-replicáveis formam uma linguagem indecidível.

Dem.: Tome-se uma máquina de Turing M tal que φM (u$x) = u quaisquerque sejam u, x ∈ {0, 1}∗. Pelo teorema da recursão, existe F ∈ M tal que acomputação F sobre x simula a computação de M sobre F$x, para qualquerx ∈ {0, 1}∗. Então, φF (x) = φM (F$x) = F .

Suponha-se, por absurdo, que existe uma máquina de TuringDvir que decidea linguagem Lvir = {M ∈M : M é auto-replicável}. Considere-se a máquina Tque quando recebe como input M$x simula Dvir sobre M , devolvendo M comooutput caso Dvir rejeite M , e entrando em ciclo infinito caso Dvir aceite M .

Facilmente, φT (M$x) = M se M não é auto-replicável, e φT (M$x) in-definido se M é auto-replicável.

Pelo teorema da recursão, existe uma máquina F tal que a computação deT sobre F$x simula a computação de F sobre x, para qualquer x. Então, temosque F é auto-replicável se e só se φF (w) = F se e só se φT (F$w) = F se e sóse F não é auto-replicável, o que é uma contradição.

Exercícios

Ver folhas das aulas práticas.

(3a) Demonstre que uma linguagem é (semi-)decidível se e só se é computávela sua função (semi-)característica.

(3b) Demonstre que se uma função f : Σ∗ → Σ∗ é computável então é recon-hecível a linguagem dom(f) = {w ∈ Σ∗ : f(w) definido}.

(3c) Demonstre que se f, g ∈ CΣ então (g ◦ f) ∈ CΣ.

(3d) Sejam L1, L2, L ∈ LΣ. Demonstre que L1 × L2, L1.L2 e L∗ são recon-hecíveis/decidíveis desde que L1 e L2 o sejam.

(3e) Complete a demonstração da Proposição 3.11.

(3f) Considere Lε = {M ∈ M : ε ∈ Lac(M)} (o problema da palavra vazia).Mostre que Lε é reconhecível mas não decidível.

Page 37: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

3.5. TEOREMA DA RECURSÃO 37

(3g) Considere L∅ = {M ∈ M : Lac(M) = ∅} (o problema da linguagemvazia). Mostre que L∅ não é reconhecível.

(3h) Busy beaver

(3i) Mostre que se L1 ≤ L2 e L1 é indecidível então L2 também é indecidível.

Page 38: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

38 3. TEORIA DA COMPUTABILIDADE

Page 39: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4

Complexidade computacional

4.1 Eficiência de máquinas

A computação é uma tarefa que consome recursos. Os recursos que mais usual-mente são considerados são o tempo (a duração da computação) e o espaço(uma medida da informação que é armazenada/consumida durante a com-putação), mas também é possível considerar outras quantidades, como a energia(necessária para executar a computação). É intuitivo que com mais recursos,mais tempo, mais espaço de armazenamento, deveremos poder realizar maistarefas e por conseguinte resolver mais problemas.

A complexidade computacional consiste no estudo dos recursos necessáriospara resolver um problema (que possa ser resolvido, claro). Como ponto departida precisamos de medir a eficiência de cada algoritmo que resolva o prob-lema.

Podemos calcular a eficiência de uma máquina de Turing (que seja um clas-sificador) relativamente ao tempo e ao espaço, de forma relativamente simples,se tomarmos o número de passos de cada computação como uma medida dotempo, e o número de células de memória lidas/escritas ao longo de cada com-putação como uma medida de espaço.

Definição 4.1. Seja M uma máquina classificadora. Definem-se as funçõestimeM , spaceM : N→ N da seguinte forma:

• timeM (n) é o comprimento máximo de uma computação de M sobre uminput w com |w| ≤ n,

• spaceM (n) é o número máximo de células de memória lidas/escritas du-rante uma computação de M sobre um input w com |w| ≤ n.

Para cada n ∈ N0, timeM (n) e spaceM (n) dão-nos uma avaliação do piorcaso, em termos de duração da computação ou da quantidade de memórianecessária, respectivamente, para processar inputs de tamanho limitado por n.

EXEMPLOS

39

Page 40: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

40 4. COMPLEXIDADE COMPUTACIONAL

Mais do que a expressão exacta das funções timeM e spaceM associadas aum classificador M , estamos interessados em avaliar o seu crescimento. Poressa razão é usual usar notação assintótica, nomeadamente O.

4.2 Classes de complexidadeAgrupamos problemas, de acordo com a sua dificuldade relativa, em classes decomplexidade.

Definição 4.2. Seja f : N→ R+ uma função. Definem-se as seguintes classesde linguagens:

• TIME(f(n)) = {L : existe máquina M que decide L com timeM (n) =O(f(n))},

• SPACE(f(n)) = {L : existe máquina M que decide L com spaceM (n) =O(f(n))}.

Nomeadamente, TIME(f(n)) agrupa todas as linguagens que podem ser de-cididas por alguma máquina cujas computações têm comprimento máximo lim-itado por algum múltiplo de f(n). Passa-se algo análogo para SPACE(f(n)).

É usual, em complexidade, talhar como eficientes as máquinas cujo com-portamento é limitado por um polinómio. Por outro lado, o protótipo dasmáquinas ineficientes é precisamente o crescimento exponencial. Estas consid-erações levam à definição das seguintes classes de complexidade.

Definição 4.3. Definem-se as seguintes classes de linguagens, relativamenteao tempo:

• P =⋃k∈N TIME(nk),

• EXPTIME =⋃k∈N TIME(2nk),

e também, relativamente ao espaço, as classes:

• PSPACE =⋃k∈N SPACE(nk),

• EXPSPACE =⋃k∈N SPACE(2nk).

P contém as linguagens que podem ser decididas em tempo polinomial (lim-itado por algum polinómio), tal como PSPACE contém as linguagens quepodem ser decididas em espaço polinomial. Analogamente, EXPTIME con-tém as linguagens que podem ser decididas em tempo exponencial, tal comoEXPSPACE contém as linguagens que podem ser decididas em espaço expo-nencial.

Estando associadas a quantidades físicas, é natural que haja algum tipo derelação em espaço e tempo que nos possa ser útil.

Proposição 4.4.Seja M uma máquina classificadora. Tem-se que timeM e spaceM são funçõesmonótonas e, para qualquer n ∈ N:

Page 41: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.3. VARIANTES 41

• spaceM (n) ≤ timeM (n),

• timeM (n) ≤ 2O(spaceM (n)).

Dem.: TBDEste resultado permite-nos começar a relacionar as classes de complexidade

definidas.

Corolário 4.5.P ⊆ PSPACE ⊆ EXPTIME ⊆ EXPSPACE.

4.3 Variantes

É útil neste ponto discutir a eficiência de variantes da máquina de Turing, eavaliar o impacto que as diferenças que encontrarmos possam ter na definiçãode classes de complexidade.

4.3.1 Transições-S

Vimos no Teorema 2.9 que qualquer máquina de Turing com transições-S éequivalente a uma máquina de Turing sem transições-S, no sentido em que asmáquinas reconhecem (decidem, se for o caso) a mesma linguagem e calculama mesma função. É simples perceber que há pequenas diferenças, assintoti-camente negligíveis, no que diz respeito à eficiência destas máquinas quer noespaço quer no tempo.

Teorema 4.6.Toda a máquina de Turing M com transições-S é equivalente a uma máquinade Turing T sem transições-S tal que timeT (n) = O(timeM (n)) e spaceT (n) =O(spaceM (n)).

Dem. (esboço): Atente-se na máquina T construída a partir de M tal comona demonstração do Teorema 2.9.

É fácil de verificar que cada passo de computação de M corresponde nomáximo a dois passos de computação de T , já que as transições-S passam arealizar-se com uma transição à direita seguida de outra à esquerda. Assimtemos:

timeT (n) ≤ 2.timeM (n) = O(timeM (n)).

Relativamente ao espaço, pela razão acima apontada, a máquina T poderáusar no máximo uma célula de memória adicional quando simula uma transição-S de M no extremo direito do seu espaço de trabalho. Assim temos:

spaceT (n) ≤ 1 + spaceM (n) = O(spaceM (n)).

Page 42: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

42 4. COMPLEXIDADE COMPUTACIONAL

4.3.2 Memória bidireccional

Vejamos se haverá diferenças mais sensíveis no que diz respeito à eficiência demáquinas bidireccionais.

Teorema 4.7.Toda a máquina bidireccional M é equivalente a uma máquina de Turing T (uni-direccional) tal que timeT (n) = O(n+timeM (n)2) e spaceT (n) = O(spaceM (n)).

Dem. (esboço): Atente-se na máquina T construída a partir de M tal comona demonstração do Teorema 2.11.

A computação de T começa por balizar o input com os símbolos I e F, numtotal de 2n + 3 passos, onde n é o tamanho do input. De seguida prossegueexactamente como M excepto nos extremos do espaço de trabalho, em que ne-cessita de introduzir espaçamento. No pior caso, cada transição de M poderádar azo a um novo espaçamento. O espaçamento à direita, sobre F, é muitosimples e totaliza 3 passos. O espaçamento à esquerda, sobre I, implica copiartodo o espaço de trabalho, o que totalizará no máximo O(spaceM (n)) passos.No final, há que apagar o delimitador F, o que demora O(spaceM (n)) passos.Assim temos:

timeT (n) ≤ (2n+ 3) + timeM (n).max(1, 3,O(spaceM (n))) +O(spaceM (n))≤ O(n) + timeM (n).O(spaceM (n)) +O(spaceM (n))≤ O(n) + timeM (n).O(timeM (n)) +O(timeM (n))= O(n) +O(timeM (n)2) +O(timeM (n))= O(n+ timeM (n) + timeM (n)2)= O(n+ timeM (n)2).

Com o espaço delimitado, a máquina T usará precisamente duas células dememória adicionais, ou seja

spaceT (n) ≤ 2 + spaceM (n) = O(spaceM (n)).

Neste ponto fica claro que apesar da vantagem, potencialmente quadrática,das máquinas bidireccionais, o impacto desta variante nas classes de complex-idade temporal mais relevantes é negligenciável, ou seja, se M for limitada notempo por um polinómio então também T o será (o grau do polinómio é queserá dobrado).

4.3.3 Memória multi-fita

Analisemos agora o caso, ainda mais interessante, das máquinas multi-fita.

Teorema 4.8.Toda a máquina de Turing multi-fita M é equivalente a uma máquina de TuringT (com apenas uma fita) tal que timeT (n) = O(n+ timeM (n)2) e spaceT (n) =O(spaceM (n)).

Dem. (esboço): Atente-se na máquina T construída a partir de M tal comona demonstração do Teorema 2.14.

Page 43: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.3. VARIANTES 43

A computação de T começa por inicializar a fita de memória, balizando oinput com os símbolos I e F, e demarcando o espaço de cada uma das k fitas damáquina T , num número de passos da ordem de O(n+ k), onde n é o tamanhodo input. De seguida simula cada uma das transições de M, percorrendo a fitada esquerda para a direita de forma a ler o símbolos marcados, e depois dadireita para a esquerda actualizando as marcações e efectuando um máximode k espaçamentos (1 em cada fita). Note-se que numa máquina com k fitascada passo de computação envolve também k células de memória. Assim temos:

timeT (n) ≤ O(n+ k) + timeM (n).(O(spaceM (n)) + k.O(spaceM (n))) +O(spaceM (n))≤ O(n) + timeM (n).(O(k.timeM (n)) +O(k2.timeM (n))) +O(timeM (n))= O(n) + timeM (n).O(timeM (n)) +O(timeM (n))= O(n) +O(timeM (n)2) +O(timeM (n))= O(n+ timeM (n) + timeM (n)2)= O(n+ timeM (n)2).

Com o espaço delimitado, a máquina T usará precisamente k+ 1 células dememória adicionais, para marcação, ou seja

spaceT (n) ≤ k + 1 + spaceM (n) = O(spaceM (n)).

De novo, apesar da vantagem quadrática no tempo, as máquinas multi-fitanão trazem diferenças fundamentais às classes de complexidade mais relevantes.

4.3.4 Não-determinismo

No caso das máquinas não-deterministas vai surgir a primeira diferença substan-tiva relativamente à teoria da computabilidade. Do ponto de vista da complex-idade computacional, o não-determinismo parece de facto ser um mecanismodemasiado poderoso. Note-se que, desde logo, necessitamos de redefinir rig-orosamente a eficiência no espaço e no tempo para máquinas não-deterministas(não foi necessário fazê-lo nas variantes anteriores pois a Definição 4.1 contin-uava a fazer pleno sentido).

Definição 4.9. SejaM uma máquina não-determinista classificadora. Definem-se as funções ntimeM ,nspaceM : N→ N da seguinte forma:

• ntimeM (n) é o comprimento do maior ramo de computação de M sobreum input w com |w| ≤ n,

• nspaceM (n) é o número máximo de células de memória lidas/escritas du-rante algum ramo de computação de M sobre um input w com |w| ≤ n.

Definem-se por analogia as classes de complexidade relativas a máquinasnão-detreministas.

Definição 4.10. Seja f : N→ R+ uma função. Definem-se as seguintes classesde linguagens:

• NTIME(f(n)) = {L : existe máquina não-determinista M que decide L com ntimeM (n) =O(f(n))},

Page 44: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

44 4. COMPLEXIDADE COMPUTACIONAL

• NSPACE(f(n)) = {L : existe máquina não-determinista M que decide L com nspaceM (n) =O(f(n))}.

Definem-se as seguintes classes de linguagens, relativamente ao tempo:

• NP =⋃k∈N NTIME(nk),

• NEXPTIME =⋃k∈N NTIME(2nk),

e também, relativamente ao espaço, as classes:

• NPSPACE =⋃k∈N NSPACE(nk),

• NEXPSPACE =⋃k∈N NSPACE(2nk).

Como bem sabemos, máquinas deterministas são casos particulares de máquinasnão-deterministas, o que justifica o resultado seguinte.

Proposição 4.11.P ⊆ NP, PSPACE ⊆ NPSPACE, EXPTIME ⊆ NEXPTIME e EXPSPACE ⊆NEXPSPACE.

As propriedades abaixo continuam a valer para máquinas não-deterministas.

Proposição 4.12.Seja M uma máquina não-determinista classificadora. Tem-se que ntimeM enspaceM são funções monótonas e, para qualquer n ∈ N:

1. nspaceM (n) ≤ ntimeM (n),

2. ntimeM (n) ≤ 2O(nspaceM (n)).

Dem.:(1) Considere um ramo finito de uma árvore de computação de uma máquinade Turing não-determinista classificadora M para uma palavra de entrada decomprimento menor ou igual a n em que M visita o maior número de células.Observe-se que por cada célula visitada para além da inicial, M tem de fazerpelo menos um movimento para se deslocar para essa célula. Assim, o númerode movimentos queM faz nesse ramo é pelo menos o número de células visitadaspara além da inicial. Tendo em atenção que ntimeM (n) é superior ou igual aesse número de movimentos tem-se que nspaceN (n) ≤ ntimeN (n).(2) Considere um ramo finito r de uma árvore de computação de uma máquinade Turing não-determinista N com alfabeto de trabalho Γ e estados Q para umapalavra de entrada de comprimento menor ou igual a n, em que N faz o maiornúmero de transições. Então r não tem configurações repetidas. Portantoo número de transições em r, ntimeM (n), tem de ser inferior ao número deconfigurações que podem existir no espaço que r utiliza. Suponha-se que emr são visitadas m células. Observe-se que o número de configurações possíveisutilizando m células é

|Γ|m × |Q| ×m.

Page 45: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.3. VARIANTES 45

Então:ntimeM (n) ≤ |Γ|m × |Q| ×m

≤ 2log2(|Γ|)×m2log2(|Q|)2m

= 2m(log2(|Γ|)+1)+log2(|Q|)

≤ 2nspaceM (n)(log2(|Γ|)+1)+log2(|Q|)

= O(2nspaceM (n))

.

Este resultado permite-nos começar a relacionar também as classes de com-plexidade não-deterministas.

Corolário 4.13.NP ⊆ NPSPACE ⊆ NEXPTIME ⊆ NEXPSPACE.

Vejamos então qual a eficiência relativa de uma máquina de Turing deter-minista que simule uma máquina não-determinista.

Teorema 4.14.Toda a máquina de Turing não-determinista N é equivalente a uma máquinade Turing determinista T tal que timeT (n) = O(n+ ntimeN (n)).2O(ntimeN (n)) espaceT (n) = O(n+ ntimeN (n)).

Dem. (esboço): Atente-se na máquina T construída a partir de N tal comona demonstração do Teorema 2.18.

A computação de T começa por inicializar 3 fitas de memória, a segundadas quais com o comprimento máximo das computações possíveis, num númerode passos da ordem de O(ntimeN (n)), onde n é o tamanho do input. De seguidacopia o input da primeira para a terceira fita, onde simula o caminho de com-putação de N descrito na fita 2, após o que volta a limpar a fita 3. Seja b onúmero máximo de escolhas não-deterministas na máquina N . Assim temos:

timeT (n) ≤ O(ntimeN (n)) + bntimeN (n).(O(n) + ntimeN (n) +O(nspaceN (n))) +O(nspaceN (n))≤ O(ntimeN (n)) + bntimeN (n).(O(n) +O(ntimeN (n))) +O(ntimeN (n))= O(ntimeN (n)) + bntimeN (n).(O(n) +O(ntimeN (n)))= O(n+ ntimeN (n)).2O(ntimeN (n)).

Relativamente ao espaço, a máquina T terá os contributos das 3 fitas dememória, ou seja

spaceT (n) ≤ O(n) +O(ntimeN (n)) +O(nspaceN (n))≤ O(n) +O(ntimeN (n)) +O(ntimeN (n))= O(n+ ntimeN (n)).

Espacialmente, há uma diferença sensível pois o espaço da máquina deter-minista não depende apenas do espaço da máquina não-determinista, como noscasos anteriores. Ainda assim esta distinção não tem implicações profundasao nível das classes de complexidade espacial mais relevantes, o que confir-maremos mais adiante. Relativamente ao tempo, no entanto, a existência de

Page 46: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

46 4. COMPLEXIDADE COMPUTACIONAL

uma máquina não-determinista de tempo polinomial para resolver um problemaparece não nos poder garantir mais do que uma máquina determinista de tempoexponencial para resolver o mesmo problema. Intuitivamente isto não é ines-perado, mas trata-se de um problema em aberto, com inúmeras repercussõesimportantes e interessantes, demonstrar que de facto não é possível fazer estasimulação de forma mais eficiente. Se não conseguimos demonstrá-lo, será queexiste mesmo tal algoritmo, por muito estranho que possa ser?

4.4 Propriedades de fecho e redução polinomialProposição 4.15. Seja C uma das classes de complexidade P, NP, PSPACE,NPSPACE, EXPTIME, NEXPTIME, EXPSPACE, NEXPSPACE.Seja Σ um alfabeto, L1, L2 linguagens sobre Σ. Se L1, L2 estão em C então∅, Σ∗, L1 ∩ L2, L1 ∪ L2, L1 \ L2 também estão em C.

Dem.: TBDStephen Cook e Leonid Levin mostraram que existem algumas linguagens

em NP às quais todas as outras linguagens dessa classe se reduzem. Isto é,o problema de decidir uma qualquer linguagem de NP pode ser reduzido aoproblema de decidir uma dessas linguagens. Mais ainda, mostraram que essaredução pode ser feita em tempo polinomial! Por isso se se encontrar umasolução eficiente para um desses problemas de NP ao qual todos os outros sereduzem, também se consegue decidir eficientemente qualquer outro problemade NP. Vamos então começar por definir o que é uma redução polinomial deuma linguagem a outra: trata-se simplesmente de uma redução computável, nosentido da Definição 3.6, eficiente.

Definição 4.16. Sejam Σ1,Σ2 alfabetos, L1 e L2 linguagens sobre Σ1 e Σ2, re-spectivamente. Dizemos que há uma redução polinomial de L1 a L2, ou simples-mente que L1 se reduz polinomialmente a L2, o que denotamos por L1 ≤P L2se existe uma função total f : Σ∗1 → Σ∗2 computável em tempo polinomial talque se tem, para cada w ∈ Σ∗1,

w ∈ L1 se e só se f(w) ∈ L2.

Obviamente, L1 ≤P L2 implica que L1 ≤ L2.

Proposição 4.17. Sejam Σ1,Σ2 alfabetos, L1 e L2 linguagens sobre Σ1 e Σ2,respectivamente. Seja C uma das classes de complexidade P, NP, PSPACE,NPSPACE, EXPTIME, NEXPTIME, EXPSPACE, NEXPSPACE.Se L1 ≤P L2 e L2 ∈ C então L2 ∈ C.

Dem.: As demonstrações são semelhantes para todas as classes. Ilustra-sea demonstração para a classe NP.

Assuma-se que A ≤p B e que B ∈ NP. Sejam N uma máquina de Turingnão-determinista que decide B e k ≥ 1 tal que ntimeN (n) = O(nk), e sejam fa redução polinomial de A para B, M uma máquina de Turing que calcula f e

Page 47: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.5. TEOREMA DE SAVITCH 47

k′ ≥ 1 tal que timeM (n) = O(nk′).

Considere-se a máquina de Turing não-determinista T que ao receber umapalavra de entrada w passa o controlo aM atéM terminar e de seguida passa ocontrolo a N até N terminar. Após N terminar então T termina com o mesmoestado com que N terminou.

Então:

(1) Lac(T ) ⊆ A. Seja w ∈ Lac(T ). Então há um ramo da computação de T queaceita w e portanto há um ramo da computação de N que aceita f(w). Logof(w) ∈ B. Como f é uma redução polinomial de A para B então w ∈ A;

(2) A ⊆ Lac(T ). Seja w ∈ A. Então f(w) ∈ B pois f é uma redução polinomialde A para B. Logo há um ramo da computação de N que aceita f(w), istoé, há um ramo da computação de N que aceita o resultado da computação deM sobre w. Portanto há um ramo da computação de T que aceita w, e assim,w ∈ Lac(T );

(3) Lrj(T ) ⊆ A. Seja w ∈ Lrj(T ). Então T rejeita w e portanto todos os ramosda computação de N rejeitam f(w). Logo f(w) /∈ B. Como f é uma reduçãopolinomial de A para B então w /∈ A, isto é, w ∈ A;

(4) A ⊆ Lrj(T ). Seja w ∈ A, isto é, w /∈ A. Então f(w) /∈ B pois f é umaredução polinomial de A para B. Logo todos os ramos da computação de Nrejeitam f(w), isto é, todos os ramos da computação de N rejeitam o resultadoda computação de M sobre w. Portanto todos os ramos da computação de Trejeitam w, e assim, w ∈ Lrj(T );

(5) ntimeT (n) = O(nk) para algum k ≥ 1. Analisemos o número de transiçõesde T : (a) a execução de M sobre w executa no máximo timeM (n) transições,isto é, O(nk′) transições; (b) o ramo mais comprido da computação de N sobref(w) executa no máximo ntimeN (|f(w)|) transições, isto é O(|f(w)|k) tran-sições. Note-se que |f(w)| ≤ timeM (n) + 1, e portanto, |f(w)| ∈ O(nk′). Logoo número de transições desta fase é O((nk′)k). O número de transições totaisde T é então O(nk′) +O((nk′)k) ou seja O(nk′×k).

Assim sendo, A ∈ NP.

4.5 Teorema de SavitchNas secções anteriores vimos que

• PSPACE ⊆ NPSPACE;

• EXPSPACE ⊆ NEXPSPACE.

mas não estabelecemos nenhuma majoração das classes não-deterministas deespaço por classes deterministas, que é o que vamos fazer agora com o chamadoteorema de Savitch.

Teorema 4.18. Seja f : N→ R+ tal que f(n) ≥ n. Então

nspace(f(n)) ⊆ space(f(n)2).

Page 48: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

48 4. COMPLEXIDADE COMPUTACIONAL

Dem.:Assuma-se que L ∈ nspace(f(n)) e sejaN uma máquina de Turing não-deterministaque decide L tal que nspaceN (n) = O(f(n)).

Considere-se a máquina de Turing igual a N mas que imediatamente antes detransitar para o estado de aceitação limpa a sua pista de entrada e posicionao sensor na célula mais à esquerda. Sem perda de generalidade designe-se essamáquina também por N .

Considere-se o seguinte algoritmo atingivele, em que e é um natural, que recebeduas configurações c1 e c2 de N e um número natural t que é uma potência de2 e devolve verdadeiro se numa árvore de computação de N há um ramo queevolui de c1 até c2 em t ou menos passos. Se não evolui, atingivele devolve falso:

se t = 1 entãose c1 = c2 ou c1 →N c2 então

devolve verdadeirocaso contrário

devolve falsofim se

fim sese t > 1 então

para cada configuração c de N usando espaço ese atingivele(c1, c,

t2) = verdadeiro e atingivele(c, c2, t2) = verdadeiro

entãodevolve verdadeiro

fim sefim para cada

fim sedevolve falso

Considere-se a máquina de Turing M que ao receber uma palavra de entradaw de tamanho n, faz:

e := 1repete

r := atingivele(cwinicial , caceitacao, Tw)

se r = verdadeiro entãotermina aceitando w

caso contrárioeusado := falsopara cada configuração c de N usando espaço e+ 1

se atingivele+1(cwinicial , c, Tw) = verdadeiro então

eusado := verdadeiro

Page 49: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.6. TEOREMAS DE HIERARQUIA 49

breakfim se

fim para cadase eusado = verdadeiro então

e := e+ 1caso contrário

termina rejeitando wfim se

fim sefim repete

onde cwinicial é a configuração inicial de N para w, caceitacao é a configuraçãode aceitação de N , e Tw é o número máximo de configurações de N usandonspaceN (|w|).

Então:

(1) Lac(M) = L. Observe-se que w ∈ Lac(M) sse M aceita w sse existe umaevolução não-determinista de N desde a sua configuração inicial para w até àsua configuração de aceitação sse N aceita w sse w ∈ L.

(2) Lrj(M) = L. Observe-se que w ∈ Lrj(M) sse M rejeita w sse não existeuma evolução não-determinista de N desde a sua configuração inicial para waté à sua configuração de aceitação sse N rejeita w sse w /∈ L sse w ∈ L.

(3) spaceM (n) = O(f(n)2). Observe-se que de cada vez que atingivel se chamaa si próprio recursivamente ele guarda c1, c2 e t na pista. Observe-se que paraguardar estes valores ele precisa de O(nspaceN (n)) células no máximo. Poroutro lado, dado que em cada passo da recursão t é dividido a metade, então arecursão irá ser feita O(log(Tw)) vezes, isto é, O(log(2nspaceN (n))) vezes. Assimo número máximo de células usadas por M é O(nspace2

N (n)), isto é, O(f2(n)).

Assim L ∈ space(f(n)2).Este resultado permite-nos identificar classes de complexidade espaciais de-

terministas e não-deterministas.

Corolário 4.19.PSPACE = NPSPACE e EXPSPACE = NEXPSPACE.

4.6 Teoremas de hierarquia

Até este momento, e relativamente às classes de complexidade mais impor-tantes, sabemos que P ⊆ NP ⊆ PSPACE ⊆ EXPTIME, onde temos entreP (a classe dos problemas de decisão com soluções eficientes) e EXPTIME(a classe dos problemas de decisão com soluções exponenciais) uma estruturainteressante. Gostaríamos de poder, de facto, mostrar que as inclusões acimasão estritas, significando que estaríamos a falar de classes de problemas de factocada vez mais difíceis, de acordo com a intuição. Mas não vimos ainda como

Page 50: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

50 4. COMPLEXIDADE COMPUTACIONAL

demonstrar a separação de classes. É esse o interesse dos seguintes teoremas dehierarquia.

Definição 4.20. Uma função f : N → N diz-se construtível no espaço selog(n) = O(f(n)) e se a função que mapeia palavras 1n para a representaçãobinária de f(n) é computável em espaço O(f(n)).

Teorema 4.21. Seja f : N → N uma função construtível no espaço. Entãoexiste uma linguagem decidível em espaço O(f(n)) mas não em espaço o(f(n)).

Proof.Considere-se a máquina de Turing D que ao receber o input w, com tamanhon:(1) calcula f(n) usando espaço O(f(n)) e marca esse número de células na pista.Se em algum ponto da computação D tentar visitar mais células a máquina paraimediatamente rejeitando;

(2) se w não é da forma 〈M〉10∗ então D rejeita;

(3) simula M sobre w e ao mesmo tempo vai contanto o número de passosusados na simulação. Se a conta exceder 2f(n) rejeita imediatamente;

(4) se M aceita, D rejeita, se M rejeita então D aceita.

Observe-se que se M usa g(n) células então D usa dg(n) células para simularM , para alguma constante d que depende de M . Este acréscimo deve-se a queM pode ter um alfabeto de pista arbitrário e D tem um alfabeto de pista fixo.

A máquina D é um classificador pois cada um dos seus passos corre em tempolimitado.

A linguagem A que D decide é decidível em espaço O(f(n)) pois D assim o é.

Mostra-se agora que A não é decidível em espaço o(f(n)). Para isso assuma-se com vista a uma contradição que existe uma máquina M que decide A emespaço g(n) tal que g(n) ∈ o(f(n)). Então dg(n) < f(n) para algum númeronatural m e para todo o n ≥ m. Assim D quando recebe w = 〈M〉10m em que〈M〉10∗ tem tamanho superior a m simula a execução de M até M terminar.Logo D aceita w se M rejeitar w e vice-versa. Mas D e M deviam decidira mesma linguagem A. Contradição. Assim não existe uma máquina M quedecide A em espaço o(f(n)).

Este resultado permite-nos separar classes de complexidade temporais.

Corolário 4.22. Sejam f1, f2 : N→ N tais que f2(n) é construtível no espaçoe f1(n) ∈ o(f2(n)). Então

SPACE(f1(n)) ( SPACE(f2(n)).

Corolário 4.23.PSPACE 6= EXPSPACE.

Definição 4.24. Uma função t : N → N diz-se construtível no tempo sen log(n) = O(t(n)) e se a função que mapeia palavras 1n para a representaçãobinária de t(n) é computável em tempo O(t(n)).

Page 51: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.6. TEOREMAS DE HIERARQUIA 51

Teorema 4.25. Seja t : N→ N uma função construtível no tempo. Então ex-iste uma linguagem decidível em tempo O(t(n)) mas não em tempo o( t(n)

log(t(n))).

Proof.Considere-se a máquina de Turing D que ao receber o input w, com tamanhon:(1) se w não é da forma 〈M〉10∗ então D rejeita;

(2) calcula a representação binária de t(n) realizando O(t(n)) transições e deseguida guarda a representação binária de d t(n)

log(t(n))e, decrementando este valorpor cada transição efectuada na execução dos próximos passos de D;

(3) simula M sobre w, usando para isso três troços: o primeiro para a pistade M , o segundo para o estado de M nesse momento e para a sua funçãode transição, e o terceiro para o contador do número de passos de M feitos.Imediatamente após um símbolo de cada troço segue-se um símbolo do outrotroço. De cada vez que o sensor de M se move, D desloca toda a informaçãodo segundo e do terceiro troços de modo a que essa informação fique semprepróxima da posição do sensor de M . D utiliza o segundo troço para ver quala próxima transição de M . Por cada passo de M que simula, D decrementa ocontador no terceiro troço;

(4) se M aceita, D rejeita, se M rejeita então D aceita.

A máquina D é um classificador pois cada um dos seus passos corre em tempolimitado.

Designe-se por A a linguagem decidida por D.

Conta-se agora o número de transições que D faz em cada passo:

(1), (2) e (3) Cada um destes passos pode ser realizado fazendo O(t(n)) tran-sições;

(4) Observe-se que em cada passo da simulação:(a) a deslocação do segundo troço de M envolve apenas informação de M porisso apenas adiciona um termo constante em O(〈M〉) ao tempo desse passo (apalavra de entrada é 〈M〉10∗ e 〈M〉 é constante face à palavra);(b) o custo de ver qual a próxima transição de M e de alterar a pista de M , étambém uma constante em O(〈M〉) pois a informação está toda muito próxima;(c) tendo em atenção que o contador no terceiro troço tem tamanho log( t(n)

log(t(n)))que está em O(log(t(n))), tem-se que decrementá-lo e move-lo de modo a estarsempre próximo da posição do sensor de M , adiciona um termo log(t(n)) aotempo de cada passo;Como D simula no máximo d t(n)

log(t(n))e passos de M e em cada passo são feitasO(〈M〉) +O(log(t(n))) transições, o número de transições feitas no passo (4) éd t(n)

log(t(n))e × O(log(t(n))), isto é, está em O(t(n)).

Assim A é decidível em tempo O(t(n)).

Mostra-se agora que A não é decidível em tempo o( t(n)log(t(n))). Para isso assuma-

Page 52: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

52 4. COMPLEXIDADE COMPUTACIONAL

se com vista a uma contradição que existe uma máquina M que decide A emtempo g(n) tal que g(n) ∈ o( t(n)

log(t(n))). Seja m um número natural tal queg(n) ≤ t(n)

log(t(n)) para todo o n ≥ m. Assim D quando recebe w = 〈M〉10m

em que 〈M〉10∗ tem tamanho superior a m, simula a execução de M até Mterminar. Logo D aceita w se M rejeitar w e vice-versa. Mas D e M deviamdecidir a mesma linguagem A. Contradição. Assim não existe uma máquinaM que decide A em tempo o( t(n)

log(t(n))).

Este resultado permite-nos separar classes de complexidade temporais.

Corolário 4.26. Sejam t1, t2 : N→ N tais que t2(n) é construtível no tempo et1(n) ∈ o( t2(n)

log(t2(n))). Então

TIME(t1(n)) ( TIME(t2(n)).

Corolário 4.27.P 6= EXPTIME.

4.7 P versus NPSabemos então que P ⊆ NP ⊆ PSPACE ⊆ EXPTIME e também que,de facto, P 6= EXPTIME. Isto implica que pelo menos uma das inclusõesacima é também estrita, isto é, P 6= NP ou NP 6= PSPACE ou PSPACE 6=EXPTIME, mas os resultados da secção anterior não são aplicáveis na sep-aração destas classes. Todas estas questões são problemas em aberto, maso problema P versus NP é certamente o mais famoso e importante, por es-tar relacionado com problemas que são extraordinariamente importantes naprática, em todas as áreas de aplicação em ciência e tecnologia, para os quaisnão se conhecem algoritmos eficientes. É claro que se um dia se demonstrarque P 6= NP, como é usual conjecturar, nada de substancial mudará. Mas umprova de P = NP traria potencialmente uma enorme revolução na forma comonos relacionamos com o mundo. Para compreender isto, vale a pena compreen-der melhor a estrutura dos problemas NP.

Antes de mais, é útil compreender que é possível, e certamente mais simplese intuitivo, definir a classe NP sem recorrer a máquinas não-deterministas.

Proposição 4.28. Seja Σ um alfabeto, L uma linguagem sobre Σ.L ∈ NP se e só se existe uma linguagem R ∈ P e um polinómio p tal que,

qualquer que seja x ∈ Σ∗, x ∈ L precisamente se x$y ∈ R para algum y com|y| ≤ p(|x|).

Dem.: TBDEsta caracterização é particularmente interessante e informativa: o prob-

lema de decidir se um problema x tem solução está em NP precisamentequando, dada uma possível solução y (usualmente denominada de testemunhaou certificado), existe um algoritmo polinomial para verificar se a solução y parax está ou não correcta.

Page 53: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.7. P VERSUS NP 53

Com esta caracterização é fácil de perceber que há uma miríade de prob-lemas, muito relevantes na prática em todas as áreas da ciência e tecnologia,que têm esta estrutura. A solução do problema passa por procurar um espaçoexponencial de possíveis soluções e testá-las (eficientemente) uma a uma. Isto éessencialmente o que conseguimos no Teorema 4.14 onde simulámos determin-isticamente uma máquina não-determinista, e a que é usual chamar de forçabruta ou perebor (como ficou conhecida a técnica em trabalhos científicos naantiga URSS precursores da moderna teoria da complexidade).

Exemplos de problemas em NP:

• dados n, k ∈ N determinar se n tem (ou não) um divisor entre 2 e k(factorização);

• dado um grafo G e k ∈ N determinar se G admite uma coloração dos nóscom k cores (coloração de grafos);

• dados n1, n2, . . . , nk, s ∈ N determinar se existe I ⊆ {1, . . . , k} tal que∑i∈I ni = s (SUBSETSUM);

• dada uma fórmula proposicional ϕ determinar se é satisfatível (SAT);

• etc.

O problema da factorização é fundamental na criptografia moderna, e ofacto de não ser conhecido nenhum algoritmo eficiente para o resolver é o pilarfundamental da segurança de informação e comunicações. Os problema dacoloração de grafos, SUBSETSUM e SAT têm aplicações em diversos problemasde optimização. Há inúmeros outros problemas relevantes na classe NP. Noentanto, nem todos têm o mesmo estatuto. Desde logo porque obviamenteP ⊆ NP e portanto há algum problemas “fáceis” em NP. Mas, além disso, háproblemas mais difíceis que outros. O problema da factorização, apesar da suaimportância, não é dos mais difíceis. Já os problemas da coloração de grafos,SUBSETSUM e SAT são dos mais difíceis, e na verdade igualmente difíceis.Ainda assim, SAT é um problema especial, por razões históricas, já que foi oprimeiro destes problemas a ser identificado e estudado, e continua até hoje aser objecto de intensa investigação. Tornemos agora estas ideias mais rigorosas.

Definição 4.29. Seja C uma classe de complexidade. Uma linguagem A diz-se:

• C-difícil se qualquer que seja L ∈ C se tem L ≤P A;

• C-completa se é C-difícil e A ∈ C.

À luz da Proposição 4.17, uma linguagem é C-difícil quando a existência deum algoritmo eficiente para decidir essa linguagem implica a existência de al-goritmos eficientes para decidir todas as linguagens da classe C. Neste sentido,uma linguagem C-completa é o protótipo da dificuldade inerente à resolução detodos os problemas da classe. Os problemas da coloração de grafos, SUBSET-SUM e SAT são todos NP-completos. O resultado fundador da moderna teoriada complexidade é precisamente o aclamado teorema de Cook e Levin (1971)publicado em [?], onde se estabelece que SAT é NP-completo. A partir desteresultado, é relativamente simples obter a NP-completude de outros problemas.

Page 54: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

54 4. COMPLEXIDADE COMPUTACIONAL

Proposição 4.30. Seja C uma classe de complexidade e A uma linguagemC-completa. Se L ∈ C então L é C-completa se e só se A ≤P L.

Dem.: TBDFormalizamos o problema SUBSETSUM (em binário1) da seguinte forma:

{w1$w2$ . . . $wk$u : w1, . . . , wk, u ∈ {0, 1}∗ e existe I ⊆ {1, . . . , k} tal que∑i∈I

wi = u}.

Teorema 4.31. O problema SUBSETSUM é NP-completo.

Dem.: A máquina não determinista óbvia para decidir SUBSETSUM (verexercício (2f)) é de tempo polinomial, pelo que o problema está em NP. Bastademonstrar que SAT≤P SUBSETSUM. Vamos apenas esboçar a ideia da trans-formação.

Considere-se a fórmula (em forma normal conjuntiva)

(p ∨ q ∨ r) ∧ (p ∨ q ∨ s) ∧ (p ∨ s ∨ r)

com 3 cláusulas (p ∨ q ∨ r, depois p ∨ q ∨ s, e depois p ∨ s ∨ r) e 4 variáveisproposicionais (p, q, r e s). Construímos o problema SUBSETSUM dado pelosnúmeros em binário representados pelas linhas da seguinte tabela:

p ∨ q ∨ r p ∨ q ∨ s p ∨ q ∨ s p q r s

p 01 00 00 1 0 0 0p 00 01 01 1 0 0 0q 01 00 00 0 1 0 0q 00 01 01 0 1 0 0r 01 00 00 0 0 1 0r 00 00 00 0 0 1 0s 00 01 01 0 0 0 1s 00 00 00 0 0 0 1

1 : p ∨ q ∨ r 01 00 00 0 0 0 02 : p ∨ q ∨ r 01 00 00 0 0 0 01 : p ∨ q ∨ s 00 01 00 0 0 0 02 : p ∨ q ∨ s 00 01 00 0 0 0 01 : p ∨ q ∨ s 00 00 01 0 0 0 02 : p ∨ q ∨ s 00 00 01 0 0 0 0

obj 11 11 11 1 1 1 1

É fácil verificar que este problema SUBSETSUM tem solução se e só se afórmula original é satisfatível. Mais ainda, cada solução para a satifatibilidadeda fórmula dá origem a uma solução do problema SUBSETSUM também. Afórmula em causa é de facto satisfatível (deixa-se como exercício).

Note-se ainda que a tabela tem tamanho polinomial: são 2v + 2c númeroscom c + v bits onde c é o número de cláusulas e v o número de variáveis dafórmulas (no caso c = 3 e v = 4).

1O problema análogo em unário (ver exercício (2f)) também está em NP mas não é NP-completo. Isto deve-se ao facto de a representação de um número n em unário ser expo-nencialmente maior que a sua representação em binário (ou noutra base), ou seja, n versuslog(n).

Page 55: TeoriadaComputação - Departamento de Matemáticaccal/TComp/TComp.v02.pdf · 8 1. PRELIMINARES Denotamos por f: A→B uma função do conjunto Apara o conjunto B.Uma função pode

4.7. P VERSUS NP 55

ExercíciosVer folhas das aulas práticas.