Upload
yuri-passos
View
74
Download
4
Embed Size (px)
Citation preview
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
– são naturalmente difíceis de se resolver
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”?
Introdução
Introdução
● Envolve o teorema de Fermat– Resolvido recentemente!
● O problema geral sobre impressão de “hello world” é possível ser resolvido?
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 “hello world”, significa que sua entrada H2 imprimiria tal palavra
● Absurdo!
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.
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.
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.
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
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.
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.
Universos das Linguagens
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
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?”
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.
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 saída, ou símbolos da fita.
– Σ⊂Г
● δ é a funçao de transição– δ: Q x Г→ Q x Г x {E,D}
– {E,D} = {L,R} = {←,→}
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
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
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
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
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
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 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.
Exemplo 1
● q3: lê Ys até encontrar um B a direita.
● q4: estado final, indica que foi reconhecida a palavra. Trava para indicar reconhecimento!
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
Exemplo 1
q00010 X⊢ q1010 X0⊢ q110 X⊢ q20Y0⊢q2X0Y0⊢
Xq00Y0 XX⊢ q1Y0 XXY⊢ q10 XXY0⊢ q1B
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},{0,1,B},δ,q0,B,{})
● Entrada é da forma: 0m10n
– 0000100 = 4∸2
● Saída é da forma: 0m∸n
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 à 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
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.
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 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 ( , ,ℕ ℤ ℚ)
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.
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.
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}*}
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)
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