DCC013
Linguagens Formais
e Autômatos
Tipos de Gramáticas – segundo a hierarquia de
Chomsky existem quatro tipos:
Tipo 0 ou Irrestritas:
◼ P = { → | (NT)+, (NT)* }
Tipo 1 ou Sensível ao Contexto
◼ P = { → | ||||, (NT)+, (NT)+}.Exceto S→
Tipo 2 ou Livre de Contexto
◼ P = { A→ | AN, (NT)+}. Exceto S→
Tipo 3 ou Regular
◼ A→aB ou A→Ba ou A→a, ou seja:
◼ P = { A→aX ou A → Xa | AN, aT, XN{}}
Linguagens Regulares - Preliminares
Tipo 3 Tipo 2 Tipo 1 Tipo 0 T+
(GR) (GLC) (GSC) (GI)
Linguagens Regulares - Preliminares
3
Esquematicamente:
Regulares(3)
Livres de Contexto(2)
Exemplo
G = ({S, A, B}, {a, b}, P, S), onde P = { S → aB | bA
A → a | aS | bAA
B → b | bS | aBB }
1) Qual o tipo de G? 2) L(G)?
Linguagens Regulares - Preliminares
4
Livre de contexto;
Exemplo
G = ({S, B}, {a, b}, P, S), onde P = { S → aS | bB | a | b
B → bB | b }
1) Qual o tipo de G? 2) L(G)?
Linguagens Regulares - Preliminares
5
Regular
Exemplos (L(G) = {w|w{a,b}*, |w| mod 2 = 1})
1) Qual o tipo de G1? 2) Qual o tipo de G2? 3) Qual o tipo de G3?
Linguagens Regulares - Preliminares
6
GLC(2)
G2
S → aSa | aSb | bSa | bSb | a | b G1
S → SSS | a | b
G3
S → aA | bA | a | b A → aS | bS
4) Como L(G)=L(G1)=L(G2)=L(G3), qual é tipo de L(G)?
GLC(2) GR(3)
O autômato finito (AF) é uma máquina abstrata
que reconhece linguagens regulares;
Modelo matemático com entradas e saídas. Se é
fornecido ao AF uma sequência de símbolos como entrada, ele responderá se esta sequência pertence a linguagem ou não;
O AF pode assumir um número finito de estados;
Um estado resume os estados anteriores pelos
quais passou e os símbolos que já foram lidos na entrada.
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Um autômato finito, pode ser vista como uma
máquina composta basicamente por três partes:
Fita: Dispositivo de entrada que contém a
informação a ser processada. A fita é finita à esquerda e à direita;
Unidade de Controle: Reflete o estado corrente da
máquina. Possui uma unidade de leitura (cabeça de leitura), que acessa uma unidade da fita de cada vez. Após cada leitura a cabeça move-se uma célula para a direita;
Programa ou Função de Transição: Função que
comanda as leituras e define o estado da máquina.
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Autômato Finito como uma máquina com
controle finito (fita, controle e função de transição):
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
9
Fita
a a b c c b a a
q
Controle
Cabeçote de leitura
Estado corrente
Def. formal de autômato finito determinístico
(AFD). Um AFD é um quíntupla (, Q, , q0, F):
Q : conjunto finito de estados
: alfabeto de entrada (simplesmente alfabeto) q0 Q: estado inicial
F Q: conjunto de estados finais
: função de transições, :Q → Q
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
A função programa de um AFD pode ser
representada como um grafo orientado finito
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
11
Uma transição
Estado inicial Estado final
p q
Estado anterior
Novo estado
a
q0
qf
Exemplo: autômato finito determinístico
M1 = ({a, b}, {q0, q1, q2, qf}, 1, q0, {qf})
L(M1) = {w | w possui aa ou bb como
subpalavra}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
12
1 a b
* q0 q1 q2 qf q1 qf q1 qf q2 q2 qf qf
q1 b q2
Exemplo: M2 = ({0, 1}, { q1, q2, q3}, 2, q1, {q2}).
L(M2) = {w | w contém pelo menos um 1 e um
número par de 0s segue o último 1}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
13
2 0 1
q1 q2 q3
q1 q3 q2
q2 q2
–
* q1
1
0
0 1
0
q2 q3
Exemplo: M3 = ({0, 1}, { q1, q2}, 3, q1, {q2})
L(M3) = {w | w termina com um 1}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
14
3 0 1
q1 q2
q1 q1
q2 q2 *
3
q1
0
0 1
Exemplo: M4 = ({a, b}, {s, q1, q2, r1, r2}, 4, s, {r1,
q1})
L(M4) = {w | w começa e termina com o mesmo
símbolo}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
15
q2
b
b a
a
4 s
r1 q1
r2
a a b b
Exemplo: N = ({a, b}, {q0, q1, q2}, , q0, {q2})
Transições: (q0, a) = q1,
(q1, a) = q1,
(q1, b) = q2.
Logo, L(N) = {anb | n1}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
16
q0
a
a b
q2 q1
Exemplo: Que linguagem aceita A2?
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
17
A2
q2
1
0 0
1
q1
q0
q3
0 0
Exemplo: Que linguagem aceita A3?
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
18
q0 0
1 1
q3 q2
A3
q1 1
0
0
Definição Formal de Computação:
Sejam 𝐴 = 𝑄, , 𝛿, 𝑞0, 𝐹 um AFD e 𝑤 = 𝑤1𝑤2𝑤3 … 𝑤𝑛 uma palavra sobre .
Dizemos que A aceita 𝑤 se existe uma sequência de estados de
𝑄, 𝑟 = 𝑟0, 𝑟1, … , 𝑟𝑛, tal que:
1. 𝑟0 = 𝑞0; e
2. 𝛿 𝑟𝑖, 𝑤𝑖+1 = 𝑟𝑖+1 para todo 0 ≤ 𝑖 ≤ 𝑛 − 1; e 3. 𝑟𝑛 ∈ 𝐹.
A sequência 𝑟 é chamada de trajetória de 𝐴 sobre
𝑤. Ou computação de 𝑤 sobre A.
A linguagem aceita por um AFD A é
◼ 𝐿 𝐴 = 𝑤|𝐴 aceita 𝑤
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Extensão da função para o domínio 𝑄 × Σ∗
1. መ𝛿 𝑞, 𝜀 = 𝑞;
2. መ𝛿 𝑞, 𝑎𝑢 = መ𝛿 𝛿 𝑞, 𝑎 , 𝑢 para 𝑎 ∈ Σ e 𝑢 ∈ Σ∗.
መ𝛿 𝑞, 𝑢 = 𝑝 significa que M, iniciando no estado 𝑞, e
tendo a sequência 𝑢 na fita de entrada, entrará no estado 𝑝, após o cabeçote mover-se para a direita
𝑢 células;
Uma sentença é aceita por 𝑀 se መ𝛿 𝑞0, 𝑢 = 𝑝 para
algum 𝑝 ∈ 𝐹, ou seja
𝐿 𝑀 = 𝑢| መ𝛿 𝑞0, 𝑢 = 𝑝 ∈ 𝐹
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Exemplo: Seja 𝐴2 = 𝑄, Σ, 𝛿, 𝑞0, 𝐹 , onde:
Q = 𝑞0, 𝑞1, 𝑞2, 𝑞3 , Σ = 0,1 , F = 𝑞0 𝛿 𝑞0, 0 = 𝑞2
𝛿 𝑞1, 0 = 𝑞3 𝛿 𝑞2, 0 = 𝑞0 𝛿 𝑞3, 0 = 𝑞1 𝛿 𝑞0, 1 = 𝑞1 𝛿 𝑞1, 1 = 𝑞0 𝛿 𝑞2, 1 = 𝑞3 𝛿 𝑞3, 1 = 𝑞2
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Exemplo: Reconhecimento da cadeia 𝑤
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
22
𝑤 = 110101
መ𝛿 𝑞0, 𝟏10101 ⊢ መ𝛿 𝛿 𝑞0, 1 , 10101 ⊢ መ𝛿 𝑞1, 𝟏0101 ⊢ መ𝛿 𝛿 𝑞1, 1 , 0101 ⊢ መ𝛿 𝑞0, 𝟎101 ⊢ መ𝛿 𝛿 𝑞0, 0 , 101 ⊢ መ𝛿 𝑞2, 𝟏01 ⊢ መ𝛿 𝛿 𝑞2, 1 , 01 ⊢ መ𝛿 𝑞3, 𝟎1 ⊢ መ𝛿 𝛿 𝑞3, 0 , 1 ⊢ መ𝛿 𝑞1, 𝟏 ⊢ መ𝛿 𝛿 𝑞1, 1 , 𝜀 ⊢ መ𝛿 𝑞0, 𝜀 ⊢ 𝑞0
Exemplo: Reconhecimento da cadeia 𝑤
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
23
𝑤 = 1011
መ𝛿 𝑞0, 1011 ⊢ መ𝛿 𝛿 𝑞0, 1 , 011 ⊢ መ𝛿 𝑞1, 011 ⊢ መ𝛿 𝛿 𝑞1, 0 , 11 ⊢ መ𝛿 𝑞3, 11 ⊢ መ𝛿 𝛿 𝑞3, 1 , 1 ⊢ መ𝛿 𝑞2, 1 ⊢ መ𝛿 𝛿 𝑞2, 1 , 𝜀 ⊢ መ𝛿 𝑞3, 𝜀 ⊢ 𝑞3
Discussão: o que é Determinismo?
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
24
4 2 1
0
3 0
1 1
1
1 0
0
Para todo AFD A e para
toda palavra 𝑤 ∈ Σ∗ ,
Definição: Linguagens Regulares ou do Tipo
3.
Uma linguagem aceita por um autômato finito é
uma Linguagem Regular ou do Tipo 3.
Exercício. Desenvolver AFDs que reconheçam
as seguintes linguagens sobre = {a, b}:
1.{w | termina com aa}
2.{w | w possui aaa como subpalavra}
3.{w | w possui um número ímpar de a e b}
4.{w | w possui número par de a e ímpar de b ou vice-versa}
5.{w | o quinto símbolo da esquerda para a direita de w é a}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Exercício. Desenvolver AFDs que reconheçam as
seguintes linguagens sobre = {a, b}:
6.{w | w possui aa ou bb como subpalavra}
7.{w | w não contém dois ou mais 1’s consecutivos}
8.{w | |w| mod 3 = 0}
Desenvolver AFDs para as linguagens:
1.Identificadores de linguagens de programação
2.Inteiros com ou sem sinal (+ ou -)
3.Reais com ou sem sinal (+ ou -). Pode haver ou não
dígitos após a , (vírgula). Ex: 45; 58,6; -54.; +.859
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Autômato Finito Não-Determinístico (AFND ou AFN)
Não-determinismo é uma importante
generalização dos AF’s, essencial para a teoria da computação e para a teoria das linguagens formais.
Qualquer AFND pode ser simulado por um
autômato finito determinístico
Em AFNDs, a função programa leva de um par
(estado, símbolo) a um conjunto de estados possíveis.
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Autômato Finito Não-Determinístico
Pode-se entender que o AFN assume
simultaneamente todas as alternativas de estados possíveis {p1, p2, ..., pn} a partir do estado atual q Q e do símbolo recebido a
;Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
28
Exemplo de transições não determinística
q
p2 pn
a
p1
a a
Def.: Autômato Finito Não-Determinístico.
Um AFN é uma quíntupla
𝑀 = Σ, 𝑄, 𝛿, 𝑞0, 𝐹 , onde: Σ : alfabeto de símbolos de entrada;
𝑄 ≠ ∅ : conjunto finito de estados;
𝛿 : função programa ou função de transição
𝛿: 𝑄 × Σ → 2 𝑄
𝑞0 ∈ 𝑄: estado inicial;
𝐹 ⊂ 𝑄 - conjunto de estados finais.
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
Autômato Finito Não-Determinístico
Portanto, os componentes do AFND são os
mesmos do AFD, com exceção da função programa:
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
30
p
p
2p
na
p
1a
a
Autômato Finito Não-Determinístico
Exemplo: AFND M5 = ({a, b}, {q0, q1, q2, qf}, 5, q0,
{qf}):
M5 reconhece a linguagem L(M5) = {w | w possui
aa ou bb como sub-palavra}
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
31
5 a b
q0 q1 q2 qf
{q0, q1} {qf}
-{qf}
{q0, q2} -{qf} {qf}
*
M5 q1 q2
Autômato Finito Não-Determinístico
Exemplo: AFN
𝑀6 = 𝑎, 𝑏 , 𝑞0, 𝑞1, 𝑞2, 𝑞𝑓 , 𝛿6, 𝑞0, 𝑞𝑓 :
M6 reconhece a linguagem :
𝐿 𝑀6 = 𝑤𝑎𝑎𝑎|𝑤 ∈ 𝑎, 𝑏 ∗
𝐿 𝑀6 = 𝑤|𝑤 ∈ 𝑎, 𝑏 ∗ e 𝑤 termina com 𝑎𝑎𝑎
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
32
q0
a a
qf q1
M6
q2 a
Autômato Finito Não-Determinístico
Exemplo: AFN M7 = ({a, b}, {q0, q1, qf}, 7, q0,
{qf}):
M7 reconhece a linguagem :
𝐿 𝑀7 = 𝑢𝑎𝑎𝑤|𝑢, 𝑤 ∈ 𝑎, 𝑏 ∗
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
33
M7 q0
a a
qf q1
a b
a
Autômato Finito Não-Determinístico
Não determinismo:
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
34
q0 início
a ---q0 b ---a ---a ---b ---a ---X X q1 q0
q0 q1
q0 q1 qf
q0 qf
q0 qf
X Aceita q0 a a qf q1 a b a b
M7 :
X = Rejeita
computação de M7
sobre a entrada
Autômato Finito Não-Determinístico
Não determinismo: computação de M7 sobre a
entrada ababb:
Linguagens Regulares
–
Gramáticas
Regulares e Autômatos Finitos
35
q0 início
a ---q0 b ---a ---b ---b ---X q1 q0
q0 q1 q0 q0 X q0 a a qf q1 a b a b
M7 :
X
No não determinismo:
para rejeitar uma cadeia de entrada – em uma
computação – todas as trajetórias devem ser rejeitadas.
para aceitar uma cadeia de entrada – em uma
computação – basta apenas uma trajetória que a aceita.
Aceitar: consome toda a cadeia de entrada e para
num estado final;
Rejeitar: consome toda a cadeia de entrada e para
num estado não final; ou a cadeia não é consumida (sem transição para uma entrada).