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