Você está na página 1de 20

CTC34 Automata e Linguagens Formais

Aula 7 Prof. Carlos H. C. Ribeiro carlos@comp.ita.br Ramal: 5895 Sala: 106

Mquinas de Turing MTs e Funes Inteiras Linguagens recursivamente enumerveis Artifcios para o projeto de MTs Variaes de MTs Mquinas equivalentes a MTs

A Mquina de Turing
Baseada em sequncias de operaes elementares. No apresenta limitaes de memria ou tempo. Vrias possveis realizaes. Realizao computacional de um procedimento. a mquina computacional abstrata mais poderosa. Isto no significa ser capaz de computar qualquer funo...
Matemtico e filsofo ingls, um dos fundadores da Cincia da Computao. Projetou a mquina Bombe, para decifrar cdigos em mensagens alems criptografadas (2a. Guerra Mundial). Artigos pioneiros e importantes (vrios decisivos) em Inteligncia Artificial e Cincia Cognitiva. Trabalhos em Biologia, Fsica e Qumica. Pesquisador extremamente original, um dos grandes gnios do sculo.
Allan Turing (1912-1954)

CTC34 - Automata e Linguagens Formais

Um Modelo da Mquina de Turing


Fita dividida em clulas, finita esquerda, infinita direita. Cabea de leitura + controle da cabea (registrador de estados). Cadeias escritas a partir da clula mais esquerda.

... a

...

...

Controle

1. Modifica-se o estado do controle 2. Imprime-se um smbolo na clula lida, apagando-se o que estava. 3.Move-se a cabea para direita ou esquerda. O poder computacional adicional da MT em relao a um 2-AF est em sua capacidade de escrever na fita.
CTC34 - Automata e Linguagens Formais 3

Mquina de Turing: Definies


Uma Mquina de Turing (modelo bsico) denotada M=(Q,,,,q0,B,F) onde:
Q o conjunto finito de estados; o alfabeto finito de smbolos da fita; B o smbolo em branco (blank); - {B} o conjunto de smbolos de entrada; a funo de transio de Q em Q{L,R} (pode ser uma funo no definida para alguns argumentos); q0 Q o estado inicial; F Q o conjunto de estados finais.

Uma configurao instantnea de uma MT um tripla 1q2 em que q o estado e 12 a string de * correspondente ao contedo da fita at o smbolo diferente de B mais direita ou at o smbolo esquerda da cabea de leitura (o que estiver mais direita). A cabea est sobre o smbolo mais esquerda de 2 (se 2 = a cabea est sobre o smbolo B).

CTC34 - Automata e Linguagens Formais

Mquina de Turing: Mais Definies


Seja X1X2 ... Xi-1 q Xi ... Xn uma configurao instantnea. Assume-se que se i=n+1, entao Xi = B. Ento: Caso 1: movimento para a esquerda (q, Xi )=(p,Y,L). Se i=1, no existe uma prxima C.I. Se i>1, X1X2 ... Xi-1 q Xi ... Xn X1X2 ... Xi-2 p Xi-1 Y... Xn , e se qualquer sufixo de Xi-1 Y... Xn em branco, este apagado. Caso 2: movimento para a direita (q, Xi )=(p,R,L). X1X2 ... Xi-1 q Xi ... Xn X1X2 ... Xi-1 Y p Xi+1... Xn . A notao * indica que uma configurao instantnea pode ser obtida a partir de outra por zero ou mais movimentos da mquina M. Def. A linguagem L(M) aceita por uma MT M o subconjunto de * que leva M a um estado final a partir da configurao inicial definida por: Cadeia posicionada a partir da posio mais esquerda da fita; Cabea de leitura posicionada sobre clula mais esquerda da fita. M no estado q0 ; Formalmente: L(M)={w | w * e q0w * 1p2 para algum pF, 1,2 *} Assume-se que, ao reconhecer uma cadeia, a MT pra (halts) - nenhum movimento adicional possvel. Mas observe que para cadeias no aceitas a mquina pode no parar nunca...
CTC34 - Automata e Linguagens Formais 5

Exemplo: MT para reconhecer L={0n1n | n1}


Inicialmente na fita: 0n1n Operao: substitui 0 mais esquerda por X, a seguir move-se para direita e substitui 1 mais esquerda por Y. Move-se ento para a esquerda, at se encontrar o X mais direita. Move-se ento uma clula para a direita (onde deve estar agora o 0 mais esquerda) e repete-se o ciclo. Aceitao: a) Se ao se procurar um 1 encontra-se um B, realiza-se uma parada sem aceitao. b) Se, aps mudar um 1 para Y, M no encontrar mais 0s, tenta-se achar 1s. Se no se encontra nenhum, ocorre aceitao. Q={q0,q1,q2,q3,q4} ={0,1} ={0,1,X,Y,B} F={q4}

q0: Estado inicial; revisitado imediatamente antes da substituio do 0 mais esquerda por um X. Ao ler um Y, muda para estado q3. q1: Usado para se buscar para a direita, ignorando-se 0s e Ys at se encontrar o 1 mais esquerda. Ao se encontrar o 1, muda-se para Y e entra-se no estado q2. Caso se encontre um B ou X antes do 1, a string rejeitada. q2: Usado para se fazer uma busca para a esquerda por um X, muda ento para estado q0 e move cabea para direita, at se encontrar o 0 mais esquerda. q3: Varre sequencia de Ys, e checa se no existem 1s remanescentes. Se os Ys so seguidos por um B, entra-se estado q4 e aceita, caso contrrio rejeita.
CTC34 - Automata e Linguagens Formais 6

MT para reconhecer L={0n1n | n1}


Smbolo

Estado q0 q1 q2 q3 q4

0 (q1,X,R) (q2,0,L) -

1 -

X -

Y (q3,Y,R) (q1,Y,R)

B -

(q1,0,R) (q2,Y,L)

(q0,X,R) (q2,Y,L) -

(q3,Y,R) (q4,B,R)

Exemplos de computao
CTC34 - Automata e Linguagens Formais 7

Computao de Funes Inteiras


Uma MT pode tambm ser vista como um computador para funes inteiras. Representao: Inteiro i0: string 0i Separao entre inteiros como argumentos de uma funo:
(i1,i2,...,ik) 0i1,1, 0i2,1,...,1, 0i(k

Parada em uma fita com contedo 0m: f(i1,i2,...,ik) = m, onde f e a funo calculada (computada) pela MT. OBS1: Uma mesma MT pode computar uma funo de um argumento, uma outra funo de dois argumentos, etc. OBS2: Domnio da funo pode ser um subconjunto de k.

CTC34 - Automata e Linguagens Formais

Computao de Funes Inteiras: Exemplo


Uma MT para realizar subtrao de inteiros de acordo com a seguinte definio: m-n=m-n se mn, e m-n=0 se m<n.
Considere a MT M=({q0,q1,q2,q3,q4,q5,q6},{0,1},{0,1,B},,q0,B,), definida da seguinte maneira: Inicialmente na fita: 0m10n Computao: parada com 0m-n na fita. Operao: substitui 0 inicial por B, a seguir inicia busca de 1 seguido de 0, substitui o 0 por 1. M entao volta para esquerda at encontrar um B, e recomea ciclo.

Fim da operao:
Ao procurar um 0 quando avanando a cabeca, M encontra um B. Nesse caso, os n 0s em 0m10n foram mudados para 1, e n+1 dos m 0s foram mudados para B. M entao substitui os n+1 1s por um 0 e n Bs, deixando m-n 0s na fita. Ao iniciar um ciclo, M no consegue encontrar um 0 a ser transformado em B, pois os primeiros m 0s j foram modificados. Neste caso, n m e portanto m-n = 0. M ento substitui todos os 0s e 1s restantes por Bs. Um exemplo de computao.
CTC34 - Automata e Linguagens Formais 9

Linguagens Recursivamente Enumerveis


A classe de linguagens aceitas por MTs a classe das linguagens recursivamente enumerveis (inclui as linguagens livres de contexto). Problema de parada (halting):
se w L(M), ocorre parada da MT em algum momento. se w L(M), pode no ocorrer parada nunca. Problema: no posso esperar pra sempre pra saber se ocorrer ou no o halting...

O problema de parada pode portanto inviabilizar um procedimento mecnico (tal como ocorre com AFDs) para determinar se uma dada string ou no reconhecida por uma MT.

CTC34 - Automata e Linguagens Formais

10

Artifcios para o Projeto de MTs


No existem receitas simples para o projeto de uma MT. Alguns artifcios, porm, podem ser teis: Armazenamento da informao nos estados. Utilizao de mltiplas fitas. Checagem de smbolos. Deslocamento de smbolos. Programao estruturada (utilizao de subrotinas).

CTC34 - Automata e Linguagens Formais

11

Armazenamento da Informao
Estado pode ser escrito como um par de elementos:
Primeiro elemento: controle Segundo elemento: informao

No existe nenhuma modificao do modelo bsico: um par de elementos um estado...

CTC34 - Automata e Linguagens Formais

12

Exemplo
Uma MT que:
L o primeiro smbolo da fita (0 ou 1). Registra o smbolo como parte do estado. verifica se o smbolo no aparece mais na fita.

Correponde a uma MT que aceita a linguagem regular (01* + 10*). A idia :


Primeiro componente do estado controla avano da cabea. Segundo componente do estado lembra-se do primeiro smbolo lido.

CTC34 - Automata e Linguagens Formais

13

M=(Q, {0,1}, {0,1,B}, , [q0, B], B, F} Q={[q0, 0], [q0, 1], [q0, B], [q1, 0], [q1, 1], [q1, B]} 1) A partir do estado inicial ([q0, B]): avana para estado seguinte e armazena smbolo lido como segundo componente do estado: ([q0,B],0) = ([q1,0],0,R) ([q0,B],1) = ([q1,1],1,R)

2) A partir do estado ([q1, X]): se o smbolo armazenado no estado for diferente do smbolo da fita, simplesmente avana: ([q1,0],1) = ([q1,0],1,R) ([q1,1],0) = ([q1,1],0,R)

CTC34 - Automata e Linguagens Formais

14

3) M entra no estado final ([q1, B]) caso chegue a um B sem ter antes encontrado um smbolo igual quele armazenado no estado. Escreve o smbolo repetido no lugar do B, para referncia, e volta a cabea: ([q1,0],B) = ([q1,B],0,L) ([q1,1],B) = ([q1,B],1,L)

4) Parada sem aceitao: [q1,0] e smbolo 0 ou [q1,1] e smbolo 1 (transies no definidas).

CTC34 - Automata e Linguagens Formais

15

Armazenamento de Informao em Mltiplas Fitas


Estado escrito como uma n-upla de elementos:
Primeiro elemento: controle Elementos restantes: informao (vrias)

c B B

1 0 B B 1 0

1 B 0

1 1 1

1 0 0

1 1 1

$ B B

B B B ...

Controle
CTC34 - Automata e Linguagens Formais 16

Exemplo: Verificador de Nmeros Primos (> 2)


1. Nmero (base 2) escrito na primeira fita (cercado por c e $).

c B B

1 0 B B B B

1 B B

1 B B

$ B B

B B B ...

B B B B

Controle

CTC34 - Automata e Linguagens Formais

17

2. Copia contedo da primeira fita para terceira fita, escreve dois em binrio na segunda:

c c c

1 0 1 0 1 0

1 $ 1

1 B 1

1 1

$ B $

B B B ...

B B
1

Controle
3. Subtrai contedo da segunda do contedo da terceira, tantas vezes quantas forem possveis. O que sobra na terceira fita portanto o resto da diviso.

c c c

1 0 1 0 1 0

1 $ 1

1 B 1

1 0

$ B $

B B B
18

B B
1

...

CTC34 - Automata e Linguagens Formais

c c c

1 0 1 0 1
0

1 $ 1
.. .

1 B 0

1 1

$ B $

B B B ...

B B
1

c c c

1 0 1 0 1 $

1 1 B

1 1 B

1 1

1 1

$ $ B

B B B ...

B B

Controle

Sobrou 0 na terceira? Nmero no primo, parada da MT (s/ aceitao) Seno...


CTC34 - Automata e Linguagens Formais 19

4. Copio contedo da primeira fita para terceira fita, incremento o contedo da segunda de uma unidade:

c c c

1 0 1 1 1 0

1 $ 1

1 B 1

1 1

$ B $

B B B ...

B B
1

Controle
5. Contedo da segunda fita igual ao da primeira? Nmero primo, pra com aceitao. Seno volto ao passo 3.

CTC34 - Automata e Linguagens Formais

20

Checagem de Smbolos
til para visualizar reconhecimento de linguagens definidas por smbolos repetidos. til para comparar comprimentos de substrings em linguagens do tipo aibjck. Truque: utilizar uma fita extra que marca se o smbolo correspondente da outra fita foi ( ) ou no (B) considerado.

CTC34 - Automata e Linguagens Formais

21

Exemplo
Uma MT que reconhece {wcw | w (a+b)*}
Idia: 1. Marca o primeiro smbolo e registra-o no estado, avana sobre todos os smbolos no-marcados at achar o c.

B a

B B b b

B c

B a

B B b
b

B B

B B ...

B B a b b

B c

B a

B B b
b

B B

B B ...

CTC34 - Automata e Linguagens Formais

22

2. Aps achar c, continua avanando, agora sobre smbolos marcados. Se o primeiro aps c for igual ao registrado no estado, marca-o e volta para primeira posio aps o smbolo marcado. Recomea o processo a partir de 1. Caso contrrio, pra sem aceitao.
3

B B a b b

B c

B a

B B b
b

B B

B B ...

B B
4

B c
a

B B b
b

B B

B B ...

b b

CTC34 - Automata e Linguagens Formais

23

3. Quando terminar (ou seja, aps marcar o ltimo antes de c), tem que conferir se no sobrou nenhum no-marcado aps o c.

B a b b c
a

B B ...

B a b b c
a
. . .

B B ...

10

B a b b c
a

B B ...

CTC34 - Automata e Linguagens Formais

24

Formalmente, M=(Q, ,, , q0, B, F} onde 1. Q={[qi, d] | q {q1,q2,...,q9} e d=a,b ou B} 2. ={[B,d] | d=a,b ou c}, ou seja: um smbolo de entrada sempre um smbolo comum acompanhado do B (que fica na segunda fita). 3. ={[X,d] | X=B ou e d=a,b,c ou B} 4. q0=[q1,B] 5. F={[q9,B]}

CTC34 - Automata e Linguagens Formais

25

Funo de Transio (d = a ou b; e = a ou b) 1. ([q1,B],[B,d])=([q2,d],[ ,d],R) 2. ([q2,d],[B,e])=([q2,d],[B,e],R) 3. ([q2,d],[B,c])=([q3,d],[B,c],R)

L smbolo em q1, vai p/ q2 guardando smbolo, marca fita e avana p/ direita.

Em q2 continua avanando p/ direita, enquanto no aparece o c.

Ao achar o c, muda para estado q3. Continua avanando p/ direita.

4. ([q3,d],[ ,e])=([q3,d],[ ,e],R) 5. ([q3,d],[B,d])=([q4,B],[ ,d],L)

Continua avanando p/ direita, ignorando os smbolos j marcados.

Achou um smbolo no-marcado aps o c. Muda p/ estado q4, limpa a memria, marca a posio e inicia a volta.

CTC34 - Automata e Linguagens Formais

26

6. ([q4,B],[ ,d])=([q4,B],[ ,d],L) 7. ([q4,B],[B,c])=([q5,B],[B,c],L)

Em q4 continua avanando p/ esquerda, ignorando os smbolos j marcados.

Ao achar o c, muda para estado q5. Continua avanando p/ esquerda.

8. ([q5,B],[B,d])=([q6,B],[B,d],L)

Smbolo esquerda de c no marcado: muda estado, continua avano p/ esquerda. Se estiver marcado, tenho que fazer teste (transio 11).

9. ([q6,B],[B,d])=([q6,B],[B,d],L)

Continua avanando p/ esquerda, ignorando os smbolos no marcados.

10. ([q6,B],[ ,d])=([q1,B],[ ,d],R)

Achou um smbolo marcado antes do c. Muda p/ estado q1, limpa a memria, e reinicia a ida (transio 1)

CTC34 - Automata e Linguagens Formais

27

11. ([q5,B],[ ,d])=([q7,B],[ ,d],R)

O estado q5 indica que o c foi encontrado na ltima transio, aps a qual a cabea foi p/ esquerda (transio 7). Smbolo esquerda de c marcado, comea o teste: muda p/ estado q7, volta p/ direita

12. ([q7,B],[B,c])=([q8,B],[B,c],R)

Teste em andamento: ao achar c, muda p/ q8 e continua avanando p/ direita.

13. ([q8,B],[ ,d])=([q8,B],[ ,d],R)

Teste em andamento: smbolo direita de c marcado, continua avanando p/ direita.

14. ([q8,B],[B,B])=([q9,B],[ ,B],L)

Termina o teste: achou [B,B], vai p/ estado final e pra (com aceitao). P/ qualquer outro [X,Y] na fita com estado q8, ocorre parada sem aceitao.

CTC34 - Automata e Linguagens Formais

28

Deslocamento de Smbolos
Uma operao til: deslocar smbolos diferentes de B para a direita. Idia:
L o smbolo da fita, armazena-o no estado. Substitui o smbolo da fita por aquele que havia sido lido quando da leitura realizada quando cabea estava na posio imediatamente a esquerda.

Um exemplo: Ex. 7.6, Hopcroft/Ullman

CTC34 - Automata e Linguagens Formais

29

Subrotinas
A operao de MTs pode ser decomposta em um conjunto de subrotinas, que correspondem a diferentes partes de um programa. Idia: uso estados especficos para controlar as chamadas e retornos da subrotina. Um exemplo: Ex. 7.7, Hopcroft/Ullman

CTC34 - Automata e Linguagens Formais

30

Diagramas de Transio para MTs


Mquina de Turing M=(Q,,,,q0,B,F):
Cada n = um estado Arco X/Y R ligando q a p (q,X)=(p,Y,R) Arco X/Y L ligando q a p (q,X)=(p,Y,L) Estado inicial e estados de aceitao: como em AFDs. Y/Y,R 0/0,R

Exemplo 1:

Y/Y,R

0/X,R 0

1/Y,L 1

0/0,L Y/Y,L

X/X,R q 3 q B/B,R 4

L = 0 n1n
31

Y/Y,R
CTC34 - Automata e Linguagens Formais

Exemplo 2
B/B,R 0/0,R 1/1,R 1/1,R q 2 0/1,L q 3 0/0,L 1/1,L q B/B,R 6 q B/0,R 5 q

0/B,R

1/B,R

B/B,L

0/B,R 1/B,R

0/0,L 1/B,L

L=?
32

CTC34 - Automata e Linguagens Formais

Exemplo 3: Visualizao de sub-rotinas


Uma MT para executar multiplicaes:
Incio: 0m10n1 na fita Fim: 0mn na fita Estratgia:
1. 2. 3. Em geral, a fita conter 0i10n10kn para algum k. Mudamos um 0 no primeiro grupo para B e adicionamos n 0s ao ltimo grupo. Resultado: 0i-110n10(k+1)n O processo acima executado m vezes, e a cada vez um 0 no primeiro grupo trocado por B. Quando o primeiro grupo de 0s tiver sido completamente trocado por Bs, teremos mn 0s no segundo grupo. Etapa final: trocar os 10n por B.

4.

CTC34 - Automata e Linguagens Formais

33

Exemplo 3: Visualizao de sub-rotinas


0/0,R 1/1,R

0/X,R

B/0,L

3 1/1,L

1/1,L q q 1/1,R B/B,R

X/X,R 4 5

0/0,L

X/0,L

Rotina copy

CTC34 - Automata e Linguagens Formais

34

Programa de multiplicao usando a rotina copy

B/B,R

9 0/0,L

0/B,R 1/1,R 6 0/0,L q 1/1,L

8 B/B,R

0/0,R q 1/B,R q 1/B,R q

12

11

10

0/B,R
CTC34 - Automata e Linguagens Formais 35

Modificaes da Mquina de Turing (1)


Fita infinita nas duas direes.
Similar MT usual, mas admitindo deslocamento nas duas direes (parte esquerda do smbolo inicial na fita ocupado com Bs).

Teorema: L reconhecida por um MT com fita infinita nas duas direes sss L reconhecida por uma MT usual.

CTC34 - Automata e Linguagens Formais

36

Modificaes da Mquina de Turing (2)


MT multifita.
Similar MT usual, mas admitindo vrias k fitas infinitas bidirecionais e k cabeas, comandadas por um nico controle. Para cada estado do controle e conjunto de smbolos lidos por cada uma das cabeas:
muda estado; imprime um novo smbolo em cada uma das fitas; move ou no cada uma das cabeas independentemente, para a direita ou esquerda.

Teorema: L reconhecida por um MT multifita sss L reconhecida por uma MT usual.

CTC34 - Automata e Linguagens Formais

37

Modificaes da Mquina de Turing (3)


MT no-determinstica
Similar MT usual, mas admitindo escolha no-determinstica do trio <novo estado, novo smbolo a ser impresso, direo de movimento da cabea>.

Teorema: L reconhecida por um MT no-determinstica sss L reconhecida por uma MT usual.

CTC34 - Automata e Linguagens Formais

38

Modificaes da Mquina de Turing (4)


MT multidimensional
Similar MT usual, mas admitindo fita como uma matriz infinita (no espao n-dimensional). Inicialmente, a string a ser reconhecida escrita em uma das direes, todo o resto da matriz sendo ocupado por Bs. Para cada estado do controle e smbolo lido:
muda estado; imprime um novo smbolo na matriz; move cabea em uma das n direes, sentido positivo ou negativo.

Teorema: L reconhecida por um MT multidimensional sss L reconhecida por uma MT usual.


CTC34 - Automata e Linguagens Formais 39

Modificaes da Mquina de Turing (5)


MT multicabeas
Similar MT usual, mas admitindo fita lida por k cabeas independentes. Para cada estado do controle e conjunto de smbolos lidos pelas cabeas:
muda estado; cada cabea imprime um novo smbolo; move ou no cabeas independentemente, para direita ou esquerda

Teorema: L reconhecida por um MT multicabeas sss L reconhecida por uma MT usual.

CTC34 - Automata e Linguagens Formais

40