Variantes de Máquina de Turing

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Linguagens Livre-de-contexto
FAPE - Curso de Ciência da Computação
FAPE - Curso de Ciência da Computação
Linguagem Fabrício Dias
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS
Percursos em um grafo 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Máquinas de Turing Não Deterministas
Equivalência de Autômatos
Problema de Correspondência de Post (PCP)
Máquinas de Turing Teoria da Computação.
Mestrado em Ciência da Computação Profa. Sandra de Amo
Problema da Aceitação ATM
Teoria da Computação Sandra de Amo
Complexidade de Linguagens Influência do Modelo de Computação
Teorema da Recursão Teoria da Computação
Pós-graduação em Ciência da Computação – UFU
esquerda p/ direita,read only
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
autômatos finitos com transições e
Identificando Linguagens Não Regulares
Máquina de Turing e Computabilidade
Linguagem de Prog. e Programas
Construção de Compiladores
Exercícios Linguagens Formais.
Informática Teórica Engenharia da Computação
Máquinas de Turing, Procedimentos, Algoritmos e Tese de Church
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Lema do Bombeamento Linguagens Livres de Contexto
Erick Vagner Cabral Igor Lucena Vitor Baptista
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
SIPSER – Capítulo 3: A tese de Church-Turing
Ling. Formais e Autômatos AFN-ε
Autómatos de Pilha. UM NOVO MODELO PARA OS AUTÓMATOS FINITOS As linguagens regulares são aceites por autómatos finitos. E as linguagens não regulares?
Inteligência Artificial
Linguagem de Programação JAVA
Máquina de Turing Universal
Máquinas de Turing.
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Fundamentos de linguagens de programação
MÁQUINAS DE TURING Acadêmicos: Karen Juliani Tosta Tomaz RA – 47566
Engenharia/Ciência da Computação
Informática Teórica Aula 8 Por: Tarcisio Coutinho da Silva
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Tese de Church-Turing.
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Informática Teórica Arthur Ramos David Hulak
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Informática Teórica Engenharia da Computação
1 Máquinas de Turing 3 Exercícios Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens.
Transcrição da apresentação:

Variantes de Máquina de Turing Teoria da Computação

Máquinas de Turing com Várias Fitas

Definição : Mk = (Q, Σ, Γ, δ, q0, qa, qr) k = número de fitas ESTADOS SIMBOLOS DE INPUT Estado de Aceitação ESTADO INICIAL TRANSIÇÃO DE ESTADOS Estado de Rejeição SIMBOLOS DA FITA - inclui o simbolo B (branco) B  Σ δ : Q x Γk  Q x Γk x {L,R}k δ(q,(s1,s2,...,sk)) = (q’,(s’1,s’2,...,s’k),(L,R,R,L...,R))

δ(q0,(0,B,B)) = (q1,(1,0,1),(R,R,R)) 2 1 2 B B B B B B B B B B B B B B Fita 1 2 1 2 B B B B qo Fita 2 B B B B B B B B B B B qo Fita 3 B B B B B B B B B B B qo

δ(q1,(0,B,B)) = (q2,(0,0,0),(L,R,L)) 1 2 1 2 B B B B B B B B 1 B B B B 2 1 2 B B B B q1 B B B B B B B B B B q1 1 B B B B B B B B B B q1

δ(q1,(0,B,B)) = (q2,(0,0,0),(L,R,L)) 1 2 1 2 B B B B B B B 1 B B B B B 2 1 2 B B B B q2 B B B B B B B B B q2 1 B B B B B B B B B q2

Linguagem aceita M = máquina de Turing com k fitas L(M) = conjunto dos strings aceitos por M String aceito por M = a partir da configuração inicial é possível chegar numa configuração de aceitação (estado final qa).

Teorema Seja M uma máquina de Turing com k fitas. Então existe uma máquina de Turing S simples (com uma fita) tal que : L(M) = L(S) Isto é: Toda máquina de Turing com k fitas é equivalente a uma máquina de Turing simples (com 1 única fita)

Como simular uma configuração de M’ numa máquina com 1 fita: B B B B B B B B B q2 B B B B B B B B B q2 1 B B B B B B B B B q2 # 1 # B # 1 #

Construção da Máquina Simples S S = No input w faça: Transforme o input w no correspondente input w’ que simula w na fita 1 de M’. Para simular um movimento de S: Varra a fita de S, a partir do primeiro # até o (k+1) – ésimo, e “memorize” os k simbolos com pontinhos. Aplique a transição de M’ correspondente. Varra a fita de S novamente a partir do primeiro #, aplicando as modificações ditadas pela transição de M’ correspondente à sequência de simbolos memorizada. Caso um pontinho deva ser colocado em cima de um #, escreva B com pontinho neste lugar, e dê um shift na fita para a direita a partir desta posição.

Máquinas de Turing Não Deterministas

Exemplo δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q0,1) = {(q0,1,R)} δ(q0,B) = {(qa,B,R), (q1,B,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} q0 1 1 B B q0 q0 q0 q0 q0 qa q0 q1 q0 q1 q1 1 1 1 q0 q1 1 1 q0 B B q1 B qa q1 B B qr qr q1

Exemplo δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q0,1) = {(q0,1,R)} δ(q0,B) = {(qa,B,R), (q1,B,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} q0 1 1 B B q0 q0 q0 q0 q0 q1 qr q0 q1 q0 q1 q1 1 1 1 q0 q1 1 1 q0 B B q1 B q1 qa B B qr qr q1

Exemplo δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q0,1) = {(q0,1,R)} δ(q0,B) = {(qa,B,R), (q1,B,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} q0 1 1 B B q0 q0 q0 q0 q0 q1 q1 q0 q1 q0 q1 q1 1 1 1 q0 q1 1 1 q0 B B q1 B q1 qa B B qr qr q1 looping

Árvore de execução A cada string w está associada uma árvore de execução Aw da máquina M. Possibilidades: Existe um ramo que termina em qa Nao existem ramos que terminam em qa Todos os ramos terminam em qr Existem ramos infinitos

M aceita w, w pertence a L(M) L(M) = Linguagem aceita pela máquina não-determinista M = conjunto dos strings para os quais existe um caminho na árvore de execução que termina em qa qr M aceita w, w pertence a L(M) qa looping M não aceita w qr M não aceita w qr looping

Se para qualquer string w, sua árvore de execução é finita, então M decide L(M) Se existe string w tal que a árvore de execução de M é infinita, então M não decide L(M) L(M) é a linguagem aceita por M mas M não decide L(M).

Equivalência: Máquinas deterministas e não-deterministas Seja M’ uma máquina de Turing não-determinista. Então, existe uma máquina de Turing M DETERMINISTA tal que L(M) = L(M’) Isto é, os strings aceitos por M são exatamente aqueles aceitos por M’.

Prova Seja M’ uma máquina não-derminista Seja N = número máximo de escolhas possíveis para os comandos de M’ Exemplo : δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q0,1) = {(q0,1,R)} δ(q0,B) = {(qa,B,R), (q1,1,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} N = 2

Vamos construir uma máquina determinista M de 3 fitas equivalente a M’ FITA DE INPUT 1 1 FITA DE CÁLCULO FITA DAS POSSIBILIDADES 1 1 2 Serão executados 3 passos de M’ Passo 1 : opção 1 Passo 2 : opção 1 Passo 3 : opção 2

Ordena-se todos os strings finitos sobre o alfabeto {1,2,…,N} cada string indica o número de passos da máquina M’ que serão executados e as opções consideradas em cada passo. Para cada um destes strings z : Coloca-se z na terceira fita Coloca-se o string de input w na primeira fita Utiliza-se a segunda fita para efetuar os passos indicados na terceira fita em cima do input w da primeira fita Se a máquina M’ aceita w então em algum momento um destes cálculos termina em qa

δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q1,0) = {(q1,0,R)} δ(q0,B) = {(qa,B,R), (q1,B,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} q0 1 1 B B q0 q1 q0 1 1 B B q0 q0 q1 q1 1 1 1 q0 q0 q0 q0 q1 1 1 q0 B B q1 B 1 1 B qa q1 B B qr q0 q0 q0 qr q1

δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q0,1) = {(q0,1,R)} δ(q0,B) = {(qa,B,R), (q1,B,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} q0 1 1 B B q0 q1 q0 1 1 B B q0 q0 q1 q1 1 1 1 q0 q0 q1 q0 q1 1 1 q0 B B q1 B 1 2 B qa q1 B B qr q0 q0 q1 qr q1

δ(q0,0) = {(q0,0,R),(q1,1,R)} δ(q1,0) = {(q1,0,R)} δ(q0,B) = {(qa,B,R), (q1,B,R)} δ(q1,0) = {(q1,0,R)} δ(q1,1) = {(q1,1,R) δ(q1,B) = {(qr,B,R), (q1,B,R)} q0 1 1 B B q0 q1 q0 q0 1 1 B B q0 q0 q1 q1 1 1 1 q0 q0 q0 q0 q0 qa q0 q1 1 1 q0 B B q1 B 1 1 1 1 1 B qa q1 B B qr q0 q0 q0 q0 q0 qa qr q1