Máquinas de Turing 
Yuri Tavares dos Passos
Introdução 
● As Máquinas de Turing (M.T.) são úteis 
para provar que alguns problemas: 
– não podem ser resolvidos ou 
– ...
Introdução 
● Considere o seguinte problema: 
– É possível fazer um programa que diga se um 
program em C pode imprimir na...
Introdução
Introdução 
● Envolve o teorema de Fermat 
– Resolvido recentemente! 
● O problema geral sobre impressão de 
“hello world”...
Introdução
Introdução
Introdução
Introdução
Introdução 
● O que acontece com H2 quando H2' 
imprime “yes”? 
● E quando imprime “hello world”?
Introdução 
● Se H2 imprimir “hello world”, significa que a 
entrada H2 não imprimiria tal palavra. 
● Se H2 não imprimir ...
Linguagens e Problemas 
● Nesta disciplina trataremos linguagens 
como se fossem problemas a serem 
resolvidos 
– Pertinên...
Linguagens e Problemas 
● Exemplo: O problema de testar se um 
número binário é primo. 
● Lp é o conjunto das cadeias dos ...
Linguagens e Problemas 
● Na prática, decidir se faz parte ou não de 
um conjunto não generaliza a noção de 
problema. 
– ...
Linguagens e Problemas 
● Em alguns momentos, estamos usando 
linguagens não como problemas de 
decisão: 
– {0n1n|n≥1} 
● ...
Linguagens e Problemas 
● Exemplo: Reconhecer se um arquivo texto 
em ASCII pertence a linguagem dos 
programas C. 
– Um c...
Linguagens e Problemas 
● Teríamos uma contradição a hipótese: se o 
teste de pertinência a C é difícil, o 
problema da co...
Universos das 
Linguagens
Máquina de Turing 
● Motivação de seu estudo: 
– Provar para o programador que existem 
problemas que não podem ser resolv...
Máquina de Turing 
● Máquina abstrata 
– Seria ineficiente construí-la no mundo real 
● Utilizar programas em uma linguage...
Máquina de Turing 
● Histórico: 
– D. Hilbert indagou se era possível encontrar um 
algoritmo para determinar a falsidade ...
Máquina de Turing
Máquina de Turing 
● M = (Q,Σ,Г,δ,q0,B,F) 
● Q é o conjunto de estados 
● Σ é o alfabeto de entrada 
● Г é o alfabeto de s...
Máquina de Turing 
● q0 é o estado inicial. 
– q0∈Q 
● B é o simbolo branco. 
– B∈Г e B∉Σ 
● F é o conjunto de estados fin...
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...
Descrição instantânea 
● Usamos ⊢ para refletir um movimento 
● Usamos ⊢* para indicar zero ou mais 
movimentos 
● Suponha...
Descrição instantânea 
● Se i=1 e movimento à esquerda: 
– qX1X2...Xn⊢qBX1X2...Xn 
● Se i=n, Y=B e movimento à esquerda: 
...
Descrição instantânea 
● Se i=1, Y=B e movimento à direita: 
– qX1X2...Xn⊢pX2...Xn 
● Se i=n e movimento à direita: 
– X1X...
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})
Exemplo 1
Exemplo 1 
● q0: estado inicial e M entra toda vez que 
retorna ao 0 restante mais à esquerda. 
● q1: indica que deve ir a...
Exemplo 1 
● q3: lê Ys até encontrar um B a direita. 
● q4: estado final, indica que foi reconhecida 
a palavra. Trava par...
Exemplo 1 
q00011⊢Xq1011⊢X0q111⊢Xq20Y1⊢q2X0Y1⊢ 
Xq00Y1⊢XXq1Y1⊢XXYq11⊢XXq2YY⊢ 
Xq2XYY⊢XXq0YY⊢XXYq3Y⊢XXYYq3B⊢ 
XXYYBq4B
Exemplo 1 
q00010⊢Xq1010⊢X0q110⊢Xq20Y0⊢q2X0Y0⊢ 
Xq00Y0⊢XXq1Y0⊢XXYq10⊢XXY0q1B
Diagramas de transição
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},...
Exemplo 2
Exemplo 2
Exemplo 2 
● q0: estado inicial. Inicia o ciclo de substituição 
de 0 por B. Vai para q5 se encontrar 1. 
● q1: Pesquisa à...
Exemplo 2 
● q3: M se move à esquerda até encontrar B. 
Ao encontrar muda para q0. 
● q4: Subtração está completa, mas um ...
Exemplo 2 
● q6:Pára a máquina quando termina o 
cálculo.
Exemplo 2 
● 0000100
Linguagens aceitas pela 
M.T. 
● Seja M = (Q,Σ,Г,δ,q0,B,F) 
● L(M) é o conjunto de strings w tais que q0w ⊢* αpβ para 
alg...
Máquina de Turing e sua 
parada 
● A noção de aceitação está relacionada 
comumente a parada da M.T. 
– Reconhecimento de ...
Máquina de Turing e sua 
parada 
● Suponhamos que sempre pára quando se 
aceita uma string. 
● As linguagens das M.T. que ...
Exercícios 
● Mostre as D.I.s do Exemplo 1 para: 00, 
000111 e 00111 
● Projete uma M.T. que reconheça as 
seguintes lingu...
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...
Referência 
● [1] HOPCROFT, John E.; ULLMAN, Jeffrey 
D.; MOTWANI, Rajeev. Introdução à teoria 
de autômatos, linguagens e...
Aula01
Próximos SlideShares
Carregando em…5
×

Aula01

221 visualizações

Publicada em

Aula sobre Máquina de Turing

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
221
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
5
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula01

  1. 1. Máquinas de Turing Yuri Tavares dos Passos
  2. 2. 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
  3. 3. Introdução ● Considere o seguinte problema: – É possível fazer um programa que diga se um program em C pode imprimir na tela “hello wordn”?
  4. 4. Introdução
  5. 5. Introdução ● Envolve o teorema de Fermat – Resolvido recentemente! ● O problema geral sobre impressão de “hello world” é possível ser resolvido?
  6. 6. Introdução
  7. 7. Introdução
  8. 8. Introdução
  9. 9. Introdução
  10. 10. Introdução ● O que acontece com H2 quando H2' imprime “yes”? ● E quando imprime “hello world”?
  11. 11. 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!
  12. 12. 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.
  13. 13. 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.
  14. 14. 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.
  15. 15. 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
  16. 16. 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.
  17. 17. 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.
  18. 18. Universos das Linguagens
  19. 19. 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
  20. 20. 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?”
  21. 21. 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.
  22. 22. Máquina de Turing
  23. 23. 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} = {←,→}
  24. 24. 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
  25. 25. 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. X1X2...Xi-1qXiXi+1...Xn
  26. 26. 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
  27. 27. 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
  28. 28. Descrição instantânea ● Se i=1, Y=B e movimento à direita: – qX1X2...Xn⊢pX2...Xn ● Se i=n e movimento à direita: – X1X2...Xn-1qXn⊢X1X2...Xn-2YpB
  29. 29. 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})
  30. 30. Exemplo 1
  31. 31. 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.
  32. 32. Exemplo 1 ● q3: lê Ys até encontrar um B a direita. ● q4: estado final, indica que foi reconhecida a palavra. Trava para indicar reconhecimento!
  33. 33. Exemplo 1 q00011⊢Xq1011⊢X0q111⊢Xq20Y1⊢q2X0Y1⊢ Xq00Y1⊢XXq1Y1⊢XXYq11⊢XXq2YY⊢ Xq2XYY⊢XXq0YY⊢XXYq3Y⊢XXYYq3B⊢ XXYYBq4B
  34. 34. Exemplo 1 q00010⊢Xq1010⊢X0q110⊢Xq20Y0⊢q2X0Y0⊢ Xq00Y0⊢XXq1Y0⊢XXYq10⊢XXY0q1B
  35. 35. Diagramas de transição
  36. 36. 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
  37. 37. Exemplo 2
  38. 38. Exemplo 2
  39. 39. 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
  40. 40. 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.
  41. 41. Exemplo 2 ● q6:Pára a máquina quando termina o cálculo.
  42. 42. Exemplo 2 ● 0000100
  43. 43. 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 (ℕ,ℤ,ℚ)
  44. 44. 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.
  45. 45. 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.
  46. 46. 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}*}
  47. 47. 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)
  48. 48. 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

×