aula01

49
Máquinas de Turing Yuri Tavares dos Passos

Upload: yuri-passos

Post on 12-Jul-2015

74 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Aula01

Máquinas de Turing

Yuri Tavares dos Passos

Page 2: Aula01

Introdução

● As Máquinas de Turing (M.T.) são úteis para provar que alguns problemas:– não podem ser resolvidos ou

– são naturalmente difíceis de se resolver

Page 3: Aula01

Introdução

● Considere o seguinte problema:– É possível fazer um programa que diga se um

program em C pode imprimir na tela “hello word\n”?

Page 4: Aula01

Introdução

Page 5: Aula01
Page 6: Aula01

Introdução

● Envolve o teorema de Fermat– Resolvido recentemente!

● O problema geral sobre impressão de “hello world” é possível ser resolvido?

Page 7: Aula01

Introdução

Page 8: Aula01

Introdução

Page 9: Aula01

Introdução

Page 10: Aula01

Introdução

Page 11: Aula01

Introdução

● O que acontece com H2 quando H2' imprime “yes”?

● E quando imprime “hello world”?

Page 12: Aula01

Introdução

● Se H2 imprimir “hello world”, significa que a entrada H2 não imprimiria tal palavra.

● Se H2 não imprimir “hello world”, significa que sua entrada H2 imprimiria tal palavra

● Absurdo!

Page 13: Aula01

Linguagens e Problemas

● Nesta disciplina trataremos linguagens como se fossem problemas a serem resolvidos– Pertinência de um string w a uma linguagem

L:

– Dado uma cadeia w em ∑* , definir se w está ou não em L.

Page 14: Aula01

Linguagens e Problemas

● Exemplo: O problema de testar se um número binário é primo.

● Lp é o conjunto das cadeias dos números binários que representam um número binário.

Page 15: Aula01

Linguagens e Problemas

● Na prática, decidir se faz parte ou não de um conjunto não generaliza a noção de problema.

– Um analisador sintático além de responder sim ou não, também gera uma árvore sintática.

Page 16: Aula01

Linguagens e Problemas

● Em alguns momentos, estamos usando linguagens não como problemas de decisão:

– {0n1n|n≥1}● Consideramos problemas de decisão

quando queremos provar que ele é difícil

Page 17: Aula01

Linguagens e Problemas

● Exemplo: Reconhecer se um arquivo texto em ASCII pertence a linguagem dos programas C.

– Um compilador C converte um arquivo ASCII para executável.

– Se o problema de reconhecimento fosse mais fácil que a conversão, então usaríamos o conversor para reconhecer.

Page 18: Aula01

Linguagens e Problemas

● Teríamos uma contradição a hipótese: se o teste de pertinência a C é difícil, o problema da conversão também é difícil.

Page 19: Aula01

Universos das Linguagens

Page 20: Aula01

Máquina de Turing

● Motivação de seu estudo:– Provar para o programador que existem

problemas que não podem ser resolvidos

– Provar que alguns problemas podem ser resolvidos, mas usam um período de tempo muito grande

● Convencer ao programador que apenas algumas instâncias do problema bem especificadas podem ser resolvidas em tempo hábil

Page 21: Aula01

Máquina de Turing

● Máquina abstrata– Seria ineficiente construí-la no mundo real

● Utilizar programas em uma linguagem (C, Java) dificultam as provas, pois:– Cada estado de um programa é representado pelas

suas variáveis

– Mais difícil de adaptar problemas como “uma gramática é ambígua?”, “uma fórmula booleana pode assumir V como resultado?”

Page 22: Aula01

Máquina de Turing

● Histórico:– D. Hilbert indagou se era possível encontrar um

algoritmo para determinar a falsidade ou verdade de uma proposição matemática.

– K. Gödel demonstrou o teorema da incompletude.

– Diversas noções de computação vieram à tona.● Funções recursivas e outras.

– Turing propôs a M.T.

Page 23: Aula01

Máquina de Turing

Page 24: Aula01

Máquina de Turing

● M = (Q,Σ,Г,δ,q0,B,F)

● Q é o conjunto de estados● Σ é o alfabeto de entrada● Г é o alfabeto de saída, ou símbolos da fita.

– Σ⊂Г

● δ é a funçao de transição– δ: Q x Г→ Q x Г x {E,D}

– {E,D} = {L,R} = {←,→}

Page 25: Aula01

Máquina de Turing

● q0 é o estado inicial.

– q0∈Q

● B é o simbolo branco. – B∈Г e B∉Σ

● F é o conjunto de estados finais.– F⊆Q

Page 26: Aula01

Descrição instantânea

● Notação para descrever o que faz a M.T.● Suponhamos que a esquerda e a direita

de uma D.I. (ou ID) é infinitamente branco.

X1X

2...X

i-1qX

iX

i+1...X

n

Page 27: Aula01

Descrição instantânea

● Usamos ⊢ para refletir um movimento

● Usamos ⊢* para indicar zero ou mais movimentos

● Suponha δ(q,Xi) = (p,Y,L)

– X1X2...Xi-1qXiXi+1...Xn⊢X1X2...pXi-1YXi+1...Xn

● Suponha δ(q,Xi) = (p,Y,R)

– X1X2...Xi-1qXiXi+1...Xn⊢X1X2...Xi-1YpXi+1...Xn

Page 28: Aula01

Descrição instantânea

● Se i=1 e movimento à esquerda:

– qX1X2...Xn⊢qBX1X2...Xn

● Se i=n, Y=B e movimento à esquerda:

– X1X2...Xn-1qXn⊢X1X2...Xn-2pXn-1

Page 29: Aula01

Descrição instantânea

● Se i=1, Y=B e movimento à direita:

– qX1X2...Xn p⊢ X2...Xn

● Se i=n e movimento à direita:

– X1X2...Xn-1qXn⊢X1X2...Xn-2YpB

Page 30: Aula01

Exemplo 1

● Uma M.T. Para reconhecer {0n1n|n≥1}

● M = ({q0,q1,q2,q3,q4},{0,1},{0,1,X,Y,B},δ,q0,B,{q4})

Page 31: Aula01

Exemplo 1

Page 32: Aula01

Exemplo 1

● q0: estado inicial e M entra toda vez que retorna ao 0 restante mais à esquerda.

● q1: indica que deve ir a direita enquanto for 0 ou Y, troca 1 por Y e anda à direita para encontrar novos Ys.

● q2: volta a esquerda até encontrar um X, andando à esquerda enquanto for Y ou 0.

Page 33: Aula01

Exemplo 1

● q3: lê Ys até encontrar um B a direita.

● q4: estado final, indica que foi reconhecida a palavra. Trava para indicar reconhecimento!

Page 34: Aula01

Exemplo 1

q00011 X⊢ q1011 X0⊢ q111 X⊢ q20Y1⊢q2X0Y1⊢

Xq00Y1 XX⊢ q1Y1 XXY⊢ q11 XX⊢ q2YY⊢

Xq2XYY XX⊢ q0YY XXY⊢ q3Y XXYY⊢ q3B⊢

XXYYBq4B

Page 35: Aula01

Exemplo 1

q00010 X⊢ q1010 X0⊢ q110 X⊢ q20Y0⊢q2X0Y0⊢

Xq00Y0 XX⊢ q1Y0 XXY⊢ q10 XXY0⊢ q1B

Page 36: Aula01

Diagramas de transição

Page 37: Aula01

Exemplo 2

● Ao invés de reconhecer uma linguagem, uma M.T. para calcular.– m∸n = max(m-n,0)

● M = ({q0, … ,q6},{0,1},{0,1,B},δ,q0,B,{})

● Entrada é da forma: 0m10n

– 0000100 = 4∸2

● Saída é da forma: 0m∸n

Page 38: Aula01

Exemplo 2

Page 39: Aula01

Exemplo 2

Page 40: Aula01

Exemplo 2

● q0: estado inicial. Inicia o ciclo de substituição de 0 por B. Vai para q5 se encontrar 1.

● q1: Pesquisa à direita, passando por 0s até achar 1. Em seguida vai para q2.

● q2: Salta 1s até encontrar 0. Vai para q4 se encontrar B e vai para q3 se encontrar 0, substituindo-o por 1

Page 41: Aula01

Exemplo 2

● q3: M se move à esquerda até encontrar B. Ao encontrar muda para q0.

● q4: Subtração está completa, mas um 0 sem correspondência foi encontrado.Troca o 1 por B.

● q5: Troca os símbolos restantes por B ao final do cálculo.

Page 42: Aula01

Exemplo 2

● q6:Pára a máquina quando termina o cálculo.

Page 43: Aula01

Exemplo 2

● 0000100

Page 44: Aula01

Linguagens aceitas pela M.T.● Seja M = (Q,Σ,Г,δ,q0,B,F)

● L(M) é o conjunto de strings w tais que q0w ⊢* αpβ para algum p∈F e quaisquer strings α e β.

● O conjunto das linguagens aceitas por M.T. são chamadas de linguagens recursivamente enumeráveis.

– Recursiva vem de formalismos computacionais anteriores à M.T.

– Enumeráveis vem da noção que tais strings podem ser enumeradas (colocadas em ordem) assim como os conjuntos enumeráveis ( , ,ℕ ℤ ℚ)

Page 45: Aula01

Máquina de Turing e sua parada● A noção de aceitação está relacionada

comumente a parada da M.T.

– Reconhecimento de {0n1n|n≥1}● Dizemos que a M.T. pára quando entra em

um estado q tal que δ(q,X) é indefinido

– A M.T. para calcular “monus” pára para qualquer entrada.

Page 46: Aula01

Máquina de Turing e sua parada● Suponhamos que sempre pára quando se

aceita uma string.● As linguagens das M.T. que sempre param

mesmo quando se rejeita uma string são consideradas recursivas.

Page 47: Aula01

Exercícios

● Mostre as D.I.s do Exemplo 1 para: 00, 000111 e 00111

● Projete uma M.T. que reconheça as seguintes linguagens:– O conjunto de strings com o número igual de 0s

e 1s.

– {anbncn|n≥1}

– {wwR| w∈{0,1}*}

Page 48: Aula01

Exercícios

● Considere a seguinte Máquina de Turing:

M = ({q0,q1,q2,qf},{0,1},{0,1,B},δ,q0,B,{qf})

Descreva o que faz M se δ for definida com

a) δ(q0,0)=(q1,1,R); δ(q1,1)=(q1,1,R); δ(q1,B)=(qf,B,R)

b) δ(q0,0)=(q0,B,R); δ(q0,1)=(q1,B,R); δ(q1,1)=(q1,B,R); δ(q1,B)=(qf,B,R)

c) δ(q0,0)=(q1,1,R); δ(q1,1)=(q2,0,L); δ(q2,1)=(q0,1,R); δ(q1,B)=(qf,B,R)

Page 49: Aula01

Referência

● [1] HOPCROFT, John E.; ULLMAN, Jeffrey D.; MOTWANI, Rajeev. Introdução à teoria de autômatos, linguagens e computação. [Rio de Janeiro]: Campus, c2003. p. 328-352

● Imagens da versão em inglês