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
worldn”?
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:
– David Hilbert indagou se era possível encontrar
um algoritmo para determinar a falsidade ou
verdade de uma proposição matemática.
– Kurt Gödel demonstrou o teorema da
incompletude.
– Diversas noções de computação vieram à tona.
● Funções recursivas de Alonzo Church 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.
X1
X2
...Xi-1
qXi
Xi+1
...Xn
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

01 maquinas de turing

  • 1.
    Máquinas de Turing YuriTavares dos Passos
  • 2.
    Introdução ● As Máquinasde 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.
    Introdução ● Considere oseguinte problema: – É possível fazer um programa que diga se um program em C pode imprimir na tela “hello worldn”?
  • 4.
  • 6.
    Introdução ● Envolve oteorema de Fermat – Resolvido recentemente! ● O problema geral sobre impressão de “hello world” é possível ser resolvido?
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
    Introdução ● O queacontece com H2 quando H2' imprime “yes”? ● E quando imprime “hello world”?
  • 12.
    Introdução ● Se H2imprimir “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!
  • 13.
    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.
  • 14.
    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.
  • 15.
    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.
  • 16.
    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
  • 17.
    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.
  • 18.
    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.
  • 19.
  • 20.
    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
  • 21.
    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?”
  • 22.
    Máquina de Turing ●Histórico: – David Hilbert indagou se era possível encontrar um algoritmo para determinar a falsidade ou verdade de uma proposição matemática. – Kurt Gödel demonstrou o teorema da incompletude. – Diversas noções de computação vieram à tona. ● Funções recursivas de Alonzo Church e outras. – Turing propôs a M.T.
  • 23.
  • 24.
    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} = {←,→}
  • 25.
    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
  • 26.
    Descrição instantânea ● Notaçãopara descrever o que faz a M.T. ● Suponhamos que a esquerda e a direita de uma D.I. (ou ID) é infinitamente branco. X1 X2 ...Xi-1 qXi Xi+1 ...Xn
  • 27.
    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
  • 28.
    Descrição instantânea ● Sei=1 e movimento à esquerda: – qX1X2...Xn⊢qBX1X2...Xn ● Se i=n, Y=B e movimento à esquerda: – X1X2...Xn-1qXn⊢X1X2...Xn-2pXn-1
  • 29.
    Descrição instantânea ● Sei=1, Y=B e movimento à direita: – qX1X2...Xn p⊢ X2...Xn ● Se i=n e movimento à direita: – X1X2...Xn-1qXn⊢X1X2...Xn-2YpB
  • 30.
    Exemplo 1 ● UmaM.T. Para reconhecer {0n1n|n≥1} ● M = ({q0,q1,q2,q3,q4},{0,1},{0,1,X,Y,B},δ,q0,B, {q4})
  • 31.
  • 32.
    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.
  • 33.
    Exemplo 1 ● q3:lê Ys até encontrar um B a direita. ● q4: estado final, indica que foi reconhecida a palavra. Trava para indicar reconhecimento!
  • 34.
    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
  • 35.
    Exemplo 1 q00010 X⊢q1010 X0⊢ q110 X⊢ q20Y0⊢q2X0Y0⊢ Xq00Y0 XX⊢ q1Y0 XXY⊢ q10 XXY0⊢ q1B
  • 36.
  • 37.
    Exemplo 2 ● Aoinvé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
  • 38.
  • 39.
  • 40.
    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
  • 41.
    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.
  • 42.
    Exemplo 2 ● q6:Páraa máquina quando termina o cálculo.
  • 43.
  • 44.
    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 (ℕ,ℤ,ℚ)
  • 45.
    Máquina de Turinge 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.
  • 46.
    Máquina de Turinge 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.
  • 47.
    Exercícios ● Mostre asD.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}*}
  • 48.
    Exercícios ● Considere aseguinte 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)
  • 49.
    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