Aula01

220 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
220
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

×