Prof. Diógenes Furlan
Teoria da
Computação
Linguagens Formais e Autômatos
Módulo 2
2015
Autômato de Pilha
Modelo reconhecedor de palavras para LLCs.
Modelo da Máquina
fita de entrada
...
cabeça de leitura
função de transição pilha
Funcionamento
Fita Pilha
Início palavra a ser avaliada (cabeça no inicio da fita)
vazia
(cabeça na base da pilha) Meio um símbolo é lido
(cabeça move-se para direita)
um símbolo da pilha é manipulado:
- empilhado (cabeça move-se para cima) - desempilhado (cabeça move-se para baixo) Fim (cabeça da fita após o ultimo
símbolo da palavra) Mudança de estado
Depende do estado atual, do símbolo entrada e do símbolo na pilha (argumento).
Condição de Parada
a) palavra termina e maquina assume um estado final: palavra de entrada é aceita;
b) palavra termina e maquina assume um estado não final: palavra de entrada é rejeitada;
c) função de transição é indefinida para o argumento: máquina pára e palavra de entrada é rejeitada.
Representação da função de transição
λ
→
símbolo lido da fita
α →
manipulação da pilha (empilha, desempilha, ε, ?) ...
q
iq
jλ
/ α
cabeça
Símbolos Especiais
•
? : testa se a palavra de entrada foi totalmente lida ou testa se a pilha está vazia
• ε : movimento vazio da fita ou da pilha (não lê, não grava).
•
emp(A) ou e(A): empilha o símbolo A
•
des(A) ou d(A): desempilha o símbolo A
ExemplosSe ler b da fita, e existir um A no topo da pilha, empilha mais um A:
Não ler da fita e empilhar um símbolo X:
Se fita vazia, desempilhar B:
Se ler b da fita, não desempilhar nada:
Se pilha estiver vazia, ler b da fita:
Loop:
Exercícios
1) L = {a
nb
n| n>=1}
2)
S → aSa | b3) Linguagem de parênteses casados 4) L = {a
nb
mc
md
n| n,m>=1}
5) L = {a
ib
j| i≠j e i,j>=1}
6) L = {a
nc
mb
2n| n,m>=1}
7) L = {w.w
r| w é palavra sobre {a,b}}
8) L = {palavras com numero de a’s igual ao numero de b’s}
9) L = {a
n+mb
ma
n| n,m>=0}
10) L = {ε}
11) L = {w | w é qq palavra sobre {a,b}, com tamanho par}
12) Linguagem de parênteses e colchetes casados 13) Fazer um AP que fica em loop infinito
14) L = {a
nb
nc
n| n>=1} Impossível. Por quê?
p
ε / emp(X)q
p
b / ?q
p
b / εq
p
? / des(B)q
p
ε / emp(A)q
ε / des(A)
p
b / d(A),e(AA)q
Autômato com Duas Pilhas (A2P)
Mesmo poder computacional da MT.
Modelo da Máquina
fita de entrada
...
cabeça de leitura
pilha 1 pilha 2
Representação da função de transição
λ
→
símbolo lido da fita
α →
manipulação da pilha 1 (empilha, desempilha, ε, ?)
β →manipulação da pilha 2 (empilha, desempilha, ε, ?)
Exercícios
1) a
nb
nc
n, n ≥ 0 2) a
nb
mc
nd
m, n,m ≥ 0 3) a
nb
nc
nd
n, n ≥ 0
4) w.c.w, onde w ∈ {a,b}*
5) a
mb
nc
p, m > n > p ≥ 0 6) a
mb
nc
p, 0 < m < n < p
7) Inverter a entrada (e deixar na pilha) 8) a
1b
2a
3b
4a
5b
6...a
n-1.b
n, onde n é par
Desafios:
9) a
mb
nc
p, m ≠ n ≠ p
10) www (palavra com 3 substrings idênticas) 11) (a+b+c)*, onde |a| = |b| = |c|
12) a
nb
n-1a
n-2b
n-3...a
2b
113) Linguagem com qtdade. par de símbolos a,b,c (para cada um).
... ...
p
λ/ α / β q
Máquina de Turing (MT)
1Modelo da Máquina
fita de entrada
$ a a # # ...
Controle pode:
- ler um valor da fita - escrever um valor na fita - se mover na fita
Símbolos Especiais
•
$: indica o inicio da fita;
•
#: branco, preenchendo a fita após o término da palavra.
Representação da função de transição
α →
símbolo lido da fita
β →símbolo gravado na fita
m
→sentido do movimento (dir / esq / ε)
Condições de parada
a) Máquina assume um estado final: máquina pára e a palavra de entrada é aceita.
b) Função de transição é indefinida para o argumento (símbolo lido e estado corrente): máquina pára e a palavra de entrada é rejeitada.
1 Alan Turing, em 1937, percebeu que o cálculo era um processo rígido, do tipo que podia ser seguido por uma máquina. Essa máquina iria operar unicamente segundo regras e seria capaz de calcular tudo para o que houvesse um algoritmo, isto é, uma seqüência precisa de passos conduzindo a uma conclusão. E então criou uma máquina que era um computador teórico, hoje conhecido como Máquina de Turing. Turing havia mapeado a teoria dos computadores antes que um só deles tivesse sequer sido construído. Somente a partir de 1939, quando foi designado para trabalhar em missões de informação secreta contra a Alemanha nazista, ele participou da criação de um dos primeiros precursores do computador digital eletromagnético, o Colossus.
p
α / β / mq
controle
c) Argumento corrente define um movimento à esquerda e a cabeça da fita já se encontra na célula mais à esquerda: máquina pára e a palavra de entrada é rejeitada.
Exemplos
Altera símbolo na fita (a por A):
Só movimenta:
Exercícios
1) a* (AF)
2) 0n1n, n ≥ 1 (AP)
3) wwr, onde w ∈ {a,b}*, |w| ≥ 2 e wr é o reverso de w 4) Substituir todo a por 0 e todo b por 1. A={a,b}
5) Palavras com o mesmo número de a’s e b’s, em qualquer ordem.
6) anbncn, n ≥ 0
7) wcw, onde w ∈ {a,b}*
8) Encontre um MT que substitua, em uma fita contendo algarismos iguais a 0 e 1, todos os 0’s por 1’s e todos os 1’s por 0’s.
9) Inverter a entrada. A={a,b}
10) Substituir ab por ba. A={a,b,c}
11) Crie uma MT que faça uma cópia da entrada no final da fita. Pôr um
* entre a parte original e a cópia. A={a,b}
12) Implemente uma MT que entra em loop infinito, ou seja, nunca pára.
Desafios:
13) Colocar símbolos em ordem crescente dentro da palavra (abcabc → aabbcc). A={a,b,c}
14) Identificar uma entrada formada por duas cópias de uma mesma palavra w na fita (ww).
15) Identificar uma entrada contendo 0’s e 1’s intercalados, e em número ascendente de ocorrência (011203140516...
a
n-1.a
n), onde n é par.16) Linguagem com quantidade par de símbolos a,b,c separadamente.
p
a / A / dirq
p
a / a / dirq
Gramática Irrestrita
• Tipo 0 - Gramáticas irrestritas: geram linguagens estruturadas em frases
• Tipo 1 - Gramáticas sensíveis ao contexto: geram linguagens sensíveis ao contexto
• Tipo 2 - Gramáticas livres de contexto: geram linguagens livres de contexto
• Tipo 3 - Gramáticas regulares: geram linguagens regulares
Gramática Reconhecedor
Irrestrita
Máquina de Turing
Sensível ao Contexto
Máquina de Turing com Memória Limitada
Livre de ContextoAutômato de Pilha
Regular