SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
Alvaro Oliveira
 
Nondeterministic Finite Automata
Nondeterministic Finite AutomataNondeterministic Finite Automata
Nondeterministic Finite Automata
Adel Al-Ofairi
 

Mais procurados (20)

Introduction to Automata Languages and Computation
Introduction to Automata Languages and ComputationIntroduction to Automata Languages and Computation
Introduction to Automata Languages and Computation
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Topological Sort Algorithm.pptx
Topological Sort Algorithm.pptxTopological Sort Algorithm.pptx
Topological Sort Algorithm.pptx
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
 
Context free langauges
Context free langaugesContext free langauges
Context free langauges
 
Aula02
Aula02Aula02
Aula02
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2
 
Moore Mealy Machine Conversion
Moore Mealy Machine Conversion Moore Mealy Machine Conversion
Moore Mealy Machine Conversion
 
Spanning trees
Spanning treesSpanning trees
Spanning trees
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefBD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
 
context free language
context free languagecontext free language
context free language
 
Nondeterministic Finite Automata
Nondeterministic Finite AutomataNondeterministic Finite Automata
Nondeterministic Finite Automata
 

Semelhante a 01 maquinas de turing

Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude Loiane
Loiane Groner
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
Ricardo Bolanho
 

Semelhante a 01 maquinas de turing (20)

05 indecibilidade
05 indecibilidade05 indecibilidade
05 indecibilidade
 
Teoria da Computação
Teoria da ComputaçãoTeoria da Computação
Teoria da Computação
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
2º/2012 - Prova 03 de Autômatos e Computabilidade
2º/2012 - Prova 03 de Autômatos e Computabilidade2º/2012 - Prova 03 de Autômatos e Computabilidade
2º/2012 - Prova 03 de Autômatos e Computabilidade
 
Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude Loiane
 
Python
PythonPython
Python
 
06-Complementos de LRE e LR - Reducoes.pdf
06-Complementos de LRE e LR - Reducoes.pdf06-Complementos de LRE e LR - Reducoes.pdf
06-Complementos de LRE e LR - Reducoes.pdf
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Estudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptx
Estudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptxEstudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptx
Estudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptx
 
Programação Lógica com Restrições
Programação Lógica com RestriçõesProgramação Lógica com Restrições
Programação Lógica com Restrições
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Linguagens não recursivamente enumeráveis e Hierarquia de Chomsky
Linguagens não recursivamente enumeráveis e Hierarquia de ChomskyLinguagens não recursivamente enumeráveis e Hierarquia de Chomsky
Linguagens não recursivamente enumeráveis e Hierarquia de Chomsky
 
Floyd-Warshall
Floyd-WarshallFloyd-Warshall
Floyd-Warshall
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Definições de Máquinas de Turing
Definições de Máquinas de TuringDefinições de Máquinas de Turing
Definições de Máquinas de Turing
 
Introducao ao python
Introducao ao pythonIntroducao ao python
Introducao ao python
 
Topicos de econometria de séries temporais 2020_1
Topicos de econometria de séries temporais 2020_1Topicos de econometria de séries temporais 2020_1
Topicos de econometria de séries temporais 2020_1
 
02 maquinas de turing modificadas
02 maquinas de turing modificadas02 maquinas de turing modificadas
02 maquinas de turing modificadas
 

Mais de Yuri Passos

Mais de Yuri Passos (17)

03-Notacoes O omega teta Complexidade e Corretude.pdf
03-Notacoes O omega teta Complexidade e Corretude.pdf03-Notacoes O omega teta Complexidade e Corretude.pdf
03-Notacoes O omega teta Complexidade e Corretude.pdf
 
04-Extensoes de MTs.pdf
04-Extensoes de MTs.pdf04-Extensoes de MTs.pdf
04-Extensoes de MTs.pdf
 
09 problemas de grafos np-completos
09 problemas de grafos np-completos09 problemas de grafos np-completos
09 problemas de grafos np-completos
 
10 maquinas probabilisticas
10 maquinas probabilisticas10 maquinas probabilisticas
10 maquinas probabilisticas
 
Teorema de rice
Teorema de riceTeorema de rice
Teorema de rice
 
04 tese de church-turing
04 tese de church-turing04 tese de church-turing
04 tese de church-turing
 
08 SAT e Variacões
08 SAT e Variacões08 SAT e Variacões
08 SAT e Variacões
 
Aula06 matriz em C
Aula06 matriz em CAula06 matriz em C
Aula06 matriz em C
 
Aula04 ponteiros e conversao
Aula04   ponteiros e conversaoAula04   ponteiros e conversao
Aula04 ponteiros e conversao
 
Aula02 condicionais
Aula02   condicionaisAula02   condicionais
Aula02 condicionais
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticao
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula05
Aula05Aula05
Aula05
 

01 maquinas de turing

  • 1. Máquinas de Turing Yuri Tavares dos Passos
  • 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. Introdução ● Considere o seguinte problema: – É possível fazer um programa que diga se um program em C pode imprimir na tela “hello worldn”?
  • 5.
  • 6. Introdução ● Envolve o teorema de Fermat – Resolvido recentemente! ● O problema geral sobre impressão de “hello world” é possível ser resolvido?
  • 11. Introdução ● O que acontece com H2 quando H2' imprime “yes”? ● E quando imprime “hello world”?
  • 12. 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!
  • 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.
  • 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.
  • 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çã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
  • 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 ● 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
  • 29. 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
  • 30. 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})
  • 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
  • 37. 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
  • 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ára a máquina quando termina o cálculo.
  • 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 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.
  • 46. 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.
  • 47. 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}*}
  • 48. 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)
  • 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