0% acharam este documento útil (0 voto)
51 visualizações27 páginas

TSED Linguagens e Automatos

Enviado por

mylena.eng25
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
51 visualizações27 páginas

TSED Linguagens e Automatos

Enviado por

mylena.eng25
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 27

EEE046 - Sistemas a Eventos Discretos

- Introduction to Automata Theory, Language, and Computation. J. Hopcroft, R. Motwani, J. Ullman, Ed. Addison Wesley, 2a edição, 2001

Introduction to Discrete Event Systems. C. Cassandras and S. Lafortune. Springer, 2008, New York, 2nd edition

Linguagens e Autômatos
Prof. Patrícia N. Pena
LACSED - Lab. de Análise e Controle de Sistemas a Eventos Discretos

DELT - Departamento de Engenharia Eletrônica

Introdução
Este material é uma versão estendida dos slides utilizados para gravar as videoaulas. É um documento para
referência, um material em construção. Alguns exemplos foram removidos dos slides para serem resolvidos “ao
vivo” nos vídeos, por questões didáticas. Mantive as soluções no documento, para facilitar o entendimento.
Favor enviarem mensagem com quaisquer erros que encontrem <[email protected]>.

1 Principais Conceitos
Alfabeto

Definição 1 (Alfabeto). Alfabeto é um conjunto finito e não vazio de símbolos.

O símbolo para o alfabeto é convencionado como Σ, lê-se sigma (maiúsculo).


Exemplo 1. Exemplos de alfabetos:
• Σ = {0, 1}, o alfabeto binário;
• Σ = {a, b, . . . z}, o conjunto de todas as letras minúsculas;
• Σ = {α, β, . . . , ω}, o conjunto de letras gregas minúsculas.

Cadeia

Definição 2 (Cadeia). Cadeia é uma sequência finita de símbolos de um alfabeto.

- A cadeia ǫ (lê-se epsilon) é a cadeia vazia, ou a cadeia com zero ocorrências de símbolos;
- |s| ou comprimento da cadeia: número de posições para símbolos na cadeia;
- Cadeia pode ser chamada também de palavra, traço.

1
Exemplo 2. Exemplos de cadeias:
• Do alfabeto Σ = {0, 1}:
– 0, 010, 010010, ǫ
• Do alfabeto Σ = {a, b, . . . y, z}:
– aab, aabd, carro, ǫ

Exemplo 3. Comprimento das cadeias:


• |010010| = 6;
• |aab| = 3, |aabd| = 4, |carros| = 6, |ǫ| = 0;

Prefixo e Sufixo

Definição 3 (Prefixo de uma cadeia). Uma cadeia t é prefixo de s se existe u tal que s = tu.

Notação 1 (Prefixo). Usa ≤ para denotar prefixo. Ex: ǫ ≤ carro, c ≤ carro, . . . carr ≤ carro, carro ≤
carro

Sufixo: u é sufixo de s se existe t tal que s = tu.


Exemplo 4. Prefixos (Muito importante):
• ǫ, 0, 00, 001, 0010, 00100, 001001, 0010010 são prefixos de 0010010;
• ǫ, a, aa, aab, aabd são prefixos de aabd;
• ǫ, c, ca, car, carr, carro são prefixos de carro;
Exemplo 5. Sufixos:
• 010010, 10010, 0010, 010, 10, 0, ǫ são sufixos de 0010010;
• aabd, abd, bd, d, ǫ são sufixos de aabd;
• carro, arro, rro, ro, o, ǫ são sufixos de carro;

Potências de um Alfabeto

Definição 4 (Potências de um Alfabeto). Σk denota o conjunto de cadeias de comprimento k, com símbolos


de Σ.

Exemplo 6. Seja o alfabeto Σ = {0, 1}:


• Σ0 = {ǫ} → todas as cadeias de comprimento k = 0;
• Σ1 = {0, 1} → todas as cadeias de comprimento k = 1;
• Σ2 = {00, 01, 10, 11} → todas as cadeias de comprimento k = 2;
• Σ3 = {000, 001, 010, 100, 011, 101, 110, 111} → todas as cadeias de comprimento k = 3;

2
Fechamento Kleene

Definição 5 (Fechamento de Kleene). O conjunto de todas as cadeias possíveis de serem formadas com
símbolos de um alfabeto é denotado, convencionalmente, por:

Σ∗ = Σ0 ∪ Σ1 ∪ Σ2 ∪ Σ3 ∪ . . .

Exemplo 7. Seja o alfabeto Σ = {0, 1},

• Σ∗ = {ǫ} ∪ {0, 1} ∪ {00, 10, 01, 11} ∪ {000, 001, 010, 100,

011, 101, 110, 111} ∪ . . .

• Σ∗ = {ǫ, 0, 1, 00, 01, 10, 11, 000, 001, 010, 100, 011, 101, . . . }

Relembrando...
Alfabeto Conjuntos de cadeias definidas sobre o alfabeto Σ

Σ Σ0
ǫ
β
α ααα Σ∗
α
αβα
ǫ ααβ
β
Σ1 βαα
αββ ββα
α
αα βαβ
β αβ βββ
símbolos βα ββ
Σ5
Σ2
Σ6
ββ Σ4
βα

αα αβ
Σ7 . . . Σ∞

Σ3
ααβ
βαα αβα cadeias
ββα
βαβ αββ
ααα βββ

• Alfabeto: conjunto finito de símbolos

• Σk : conjuntos finito de cadeias de comprimento k, k = 0, . . . , ∞

• Σ∗ : conjuntos de todas as cadeias que podem ser formadas, conjunto infinito

• Σ1 6= Σ:
Σ = {α, β} α e β são símbolos do alfabeto;
Σ1 = {α, β} α e β são cadeias de comprimento 1 sobre o alfabeto Σ;

3
Convenção
Convenção usam-se letras do início do alfabeto (a, b, c) para denotar símbolos e letras do final do alfabeto
para denotar cadeias (w, x, y e z).

Apesar da convenção, o que define se um elemento é um símbolo ou uma cadeia é o conjunto ao qual ele
pertence.
• a ∈ Σ → a é símbolo pois Σ é um conjunto de símbolos;
• a ∈ Σ∗ → a é cadeia pois Σ∗ é um conjunto de cadeias.

Exemplo 8. Seja o alfabeto Σ = {0, 1}.


• Seja a ∈ Σ → a = 0 ou a = 1, símbolos de Σ;
• Seja a ∈ Σ1 → a = 0 ou a = 1, cadeias de comprimento 1;
• Seja a ∈ Σ2 → a = 00 ou a = 01 ou a = 10 ou a = 11, cadeias de comprimento 2;
• Seja a ∈ Σ∗ → a ∈ {ǫ, 0, 1, 00, 01, 10, 11, 000, 001, . . . }, ou seja, a é uma cadeia de Σ∗ ;

Concatenação
Σ+ às vezes se deseja retirar o elemento ǫ do conjunto de cadeias.
Σ+ = Σ1 ∪ Σ2 ∪ Σ3 ∪ . . . e
Σ∗ = Σ+ ∪ {ǫ}

Definição 6 (Concatenação de Cadeias). Sejam x e y cadeias. A cadeia xy denota a concatenação de x e


y.

ǫ (lê-se épsilon) é a cadeia vazia, cadeia de comprimento zero. O ǫ concatenado com qualquer cadeia dá
a própria cadeia. Ex: αβǫ = αβ = ǫαβ.

Exemplo 9. Sejam as cadeias x = a1 a2 . . . ai e y = b1 b2 . . . bj , a concatenação de x e y gera a cadeia


xy = a1 a2 . . . ai b1 b2 . . . bj . O comprimento da cadeia xy é |xy| = j + i.

Exemplo 10. Sejam as cadeias:


- x = 0011 e w = 1001, xw = 00111001 e wx = 10010011;
- ǫw = wǫ = w: ǫ é a identidade na concatenação;

4
2 Linguagens
Linguagens

Definição 7 (Linguagens). Uma linguagem L sobre um alfabeto Σ é um subconjunto de Σ∗ , L ⊆ Σ∗ .

• A linguagem sobre um alfabeto não precisa necessariamente incluir cadeias com todos os símbolos de
Σ;
• Uma linguagem L sobre Σ = {α, β} é também uma linguagem sobre Σ = {α, β, γ}.
• Os alfabetos são finitos. As linguagens podem ser infinitas, ou seja, ter um número infinito de cadeias.

Exemplo 11. Linguagens definidas sobre todos os alfabetos:


a) Σ∗ : linguagem composta de todas as cadeias possíveis;
b) ∅: linguagem vazia;
c) {ǫ}: linguagem composta de 1 elemento, a cadeia vazia;
Exemplo 12. Conjunto de palavras do português é uma linguagem sobre o conjunto de letras;
Exemplo 13. Para o conjunto Σ = {α, β, γ}, são linguagens:
a) L1 = {ǫ, α, β, γ, αβ, αγ, βγ, αβγ}
b) L2 = {conjunto de cadeias iniciadas com o símbolo α} = {α, αα, αβ, αγ, ααγ, ααβ, . . . }
c) L3 = Σ∗

Para visualizar...

Σ∗
L2 α αβα
ǫ
L4 αα

ααα ααβ
β

αβ αββ
L3 βαα ββα

βα L1 ββ βαβ βββ

Σ4 . . . Σ∞

São exemplos de linguagens sobre o alfabeto Σ = {α, β}:

• Σ∗ : conjuntos de todas as cadeias que podem ser formadas a partir do alfabeto Σ, é um conjunto infinito;

• L1 = {} ⊂ Σ∗ : Conjunto vazio, podendo ser representado também como L1 = ∅;

• L2 = {α, αα, ααα} ⊂ Σ∗ , exemplo em que não há ocorrência de todos os símbolos do alfabeto;

5
• L3 = {βαα, ββα, βαβ, βββ} ⊂ Σ∗ , composta de todas as cadeias de comprimento 3 que começam com
β;

• L4 = {ǫ} ⊂ Σ∗ : linguagem não-vazia que contém somente a cadeia vazia.

• Lk ⊂ Σ∗ : as potências de um alfabeto são também linguagens.

Relembrando...

Notação 2. Uso de ∈, ⊆, ⊂, ⊇, ⊃

• Um elemento pertence (∈) a um conjunto.


• Um conjunto está contido (⊆, ⊂) em outro conjunto. Um conjunto contém (⊇, ⊃) outro conjunto.
– ⊂→ indica que é estritamente contido; ⊆→ indica que é contido ou igual.
– ⊃→ indica que contém estritamente; ⊇→ indica que contém ou é igual.

Linguagens são conjuntos de cadeias, então quando se pretende relacionar linguagens entre si, utilizam-se
⊆, ⊂, ⊇, ⊃. Usado também para caracterizar subalfabetos de um alfabeto.
Exemplo 14. Seja Σ = {α, β}.
• β ∈ Σ: símbolo β pertence ao alfabeto Σ.
• α ∈ L2 : cadeia α pertence à linguagem L2 ⊆ Σ∗ .

Exemplo 15. Seja Σ = {α, β, γ}.


• L1 ⊂ L2 : uma linguagem contida em outra linguagem. Pode ser representado como L2 ⊃ L1 .
• L1 ⊆ Σ∗ : uma linguagem contida ou igual à outra linguagem. Pode ser representado como Σ∗ ⊇ L1
• {β, γ} ⊂ Σ: é um subalfabeto de Σ. Pode ser representado como Σ ⊃ {β, γ}.

Linguagens
É comum definir a linguagem usando a seguinte notação:

L = {w ∈ Σ∗ | algo sobre w}.

Leia-se a linguagem L é composta do conjunto de cadeias w tal que o que está à direita do símbolo | se
verifica.

• Seja Σ1 = {0, 1} e Σ2 = {α, β}:


– L1 = {w ∈ Σ∗1 |igual número de 0s e 1s } =
– L3 = {w ∈ Σ∗2 |possui comprimento 3 e começa com β} =

• L1 = {ǫ, 01, 10, 0110, 1100 . . . }


• L3 = {βαα, ββα, βαβ, βββ}

6
Linguagens

• Pode-se também substituir w por alguma expressão com parâmetros para descrever a linguagem em
termos deste parâmetro.

– L2 = {0n 1n ∈ Σ∗1 |n ≥ 1}: a linguagem L2 é formada do conjunto de cadeias compostas de n zeros


seguidos de n uns.
– L4 = {0i 1j ∈ Σ∗1 |0 ≤ i < j}: a linguagem L3 é formada de zeros (possivelmente nenhum) seguidos
de no mínimo um símbolo 1 a mais que o número de símbolos 0s.

• L2 = {01, 0011, 000111, . . . }

• L4 = {1, 011, 0111, 00111, 001111, 00000111111 . . . }

3 Linguagens para modelar SED


As linguagens podem ser usadas para modelar o comportamento de sistemas que se deseja controlar. Uma
bomba que liga e desliga, uma esteira que avança e para.

Linguagens para Modelar Sistemas

Bomba

Esteira

Passos para modelagem:

1. Determina os símbolos associando-os aos eventos que ocorrem nos sistema

– Σbomba = {αb , βb } −→ alfabeto da bomba, onde αb liga a bomba e βb desliga a bomba;


– Σesteira = {αe , βe } −→ alfabeto da esteira, onde αe liga a esteira e βe desliga a esteira;

2. Descreve as cadeias que são executadas neste sistema. Para tanto, assume-se um estado inicial, tipica-
mente o equipamento está desligado.

– As cadeias são sempre executadas a partir da condição inicial, no caso equipamento desligado.
– ǫ −→ nada acontece e a bomba e a esteira permanecem desligadas;
– αb , αe −→ o respectivo equipamento é ligado.
– αb βb , αe βe −→ o respectivo equipamento é ligado e desligado.
– αb βb αb , αe βe αe −→ o respectivo equipamento é ligado, desligado e religado.
– αb βb αb βb , αe βe αe βe −→ o equipamento é ligado, desligado, religado e desligado.

3. Define a linguagem composta de todas as cadeias que o sistema executa, também chamada de compor-
tamento gerado, L.

– Lbomba = {ǫ, αb , αb βb , αb βb αb , αb βb αb βb , . . . }
– Lesteira = {ǫ, αe , αe βe , αe βe αe , αe βe αe βe , . . . }

7
4. Determina um subconjunto das cadeias de L que completam tarefas, também chamada de comporta-
mento marcado, Lm .

– Faz sentido considerar que uma tarefa está completa se ao final da execução da cadeia o equipa-
mento está desligado.
– Lbomba
m = {ǫ, αb βb , αb βb αb βb , . . . }
– Lesteira
m = {ǫ, αe βe , αe βe αe βe , . . . }

Linguagens para Modelar Sistemas

O comportamento sequencial de um sistema a eventos discretos (SED) pode ser descrito por meio de um
par de linguagens (L e Lm ) sobre o conjunto de eventos Σ, onde:

• Σ: conjunto de eventos que afetam o sistema;

• L ⊆ Σ∗ : descreve o comportamento gerado pelo sistema, ou seja, o conjunto de todas as cadeias de


eventos fisicamente possíveis de ocorrerem no sistema;
• Lm ⊆ L: descreve o comportamento marcado do sistema, ou seja, o conjunto de cadeias em L que
correspondem a tarefas completas que o sistema pode realizar.

8
4 Operações sobre linguagens
Operações sobre Linguagens

Definição 8 (Operações sobre Linguagens). Sejam A, B ⊆ Σ∗


- União: A ∪ B = A + B = {s ∈ Σ∗ |s ∈ A ou s ∈ B}
- Concatenação: AB = {st ∈ Σ∗ |s ∈ A, t ∈ B}

- Fechamento Kleene: A∗ = ∪ An , onde A0 = {ǫ} e An = An−1 A, ou seja,
n=0

A∗ = {ǫ} ∪ A ∪ AA ∪ AAA ∪ . . .

- Prefixo-fechamento: A = {s ∈ Σ∗ |∃t ∈ Σ∗ , st ∈ A}

Exemplo 16. União, com A = {0, 01} e B = {2, 23} e Σ = {0, 1, 2, 3}:
- A ∪ B = A + B = {0, 01, 2, 23}.

Exemplo 17. Concatenação, com A = {0, 01} e B = {2, 23} e Σ = {0, 1, 2, 3}:
- AB = {02, 023, 012, 0123}.

Exemplo 18. Fechamento Kleene:


- A = {0, 11}: A2 = {00, 011, 110, 1111}, An = An−1 A

Exemplo 19. Prefixo-fechamento:


- A = {0, 11}: A = {ǫ, 0, 1, 11}.

Operações sobre Linguagens

Exemplo 20. Dados A = {a, ab, abd} e B = {a, aa, acb}:


- AB={aa, aaa, aacb, aba, abaa, abacb, abda, abdaa, abdacb}
- AB =
AB = {aa, aaa, aacb, aba, abaa, abacb, abda, abdaa, abdacb}
AB = {ǫ, a, aa, ab, aaa, aac, aba, abd, aacb, abaa, abac, abda, abacb, abdaa, abdac, abdacb}
– ǫaa, aa, aaǫ, aba, aaaǫ, aacb, abaǫ, abda, aacbǫ ∈ AB,
– abaaǫ, abacb, abdaǫ, abacbǫ, abdaaǫ, abdacb ∈ AB

9
abdacbǫ ∈ AB
ǫ, a, b, aa ∈ Σ∗ , com Σ = {a, b, c, d}
AB = {s ∈ Σ∗ | ∃t ∈ Σ∗ , st ∈ AB}

- A3 =A2 A, A2 = A1 A, A1 = A0 A

– A1 = {a, ab, abd}


A2 = {aa, aab, aabd, aba, abab, ababd, abda, abdab, abdabd}
A3 = {aaa, aaba, aabda, abaa, ababa, ababda, abdaa, abdaba, abdabda, aaab, aabab, aabdab,
abaab, ababab, ababdab, abdaab, abdabab, abdabdab, aaabd, aababd, aabdabd, abaabd, abababd,
ababdabd, abdaabd, abdababd, abdabdabd}

5 Expressões Regulares
Expressões Regulares

• Expressões regulares consistem em uma outra forma de definir linguagens;

• Tipicamente utilizada para implementar mecanismos de busca de texto;

• É uma forma de declarar as cadeias que queremos aceitar.

Exemplo 21. Sistemas para busca: usam notação de expressões regulares para descrever padrões que o
usuário quer encontrar no arquivo.

Expressões Regulares
Se u, v são cadeias de eventos:

- u = {u}

- (u + v) = {u} ∪ {v} = {u, v}

- u∗ = {ǫ, u, uu, uuu, . . . }

- uv = {uv}

Definição 9 (Expressão Regular). Definição recursiva:

1. São expressões regulares:

- ∅: conjunto vazio; ǫ: linguagem {ǫ};σ: linguagem {σ}, ∀σ ∈ Σ

2. Se s e t são expressões regulares, então st, s∗ , t∗ , (s + t)∗ são expressões regulares;

3. Toda expressão regular é obtida pela aplicação das regras 1 e 2 um número finito de vezes.

10
Expressões Regulares

Exemplo 22. Seja Σ = {α, β}. Considere que ǫ = {ǫ}, α = {α}, β = {β} são linguagens compostas de
uma cadeia de comprimento 1.

- L1 = {β, αα, βα}.


Considere os passos recursivos:

– αα = {α}{α} = {αα} (concatenação)


– βα = {β}{α} = {βα} (concatenação)
– β + αα + βα = {β} + {αα} + {βα} = {β, αα, βα} (união)
– L1 = β + αα + βα → expressão regular

- L2 = {αβα, αα}. Considere os passos recursivos:

– αα = {α}{α} = {αα} (concatenação)


– αβ = {α}{β} = {αβ} (concatenação)
– αβα = {αβ}{α} (concatenação)
– αβα + αα = {αβα} + {αα} = {αβα, αα} (união)
– L2 = αβα + αα → expressão regular

- L3 = {ǫ, αβ, αβαβ, αβαβαβ, . . . }. Considere os passos recursivos:

– αβ = {α}{β} = {αβ} (concatenação)


– αβαβ = {αβ}{αβ} = {αβαβ} (concatenação)
– αβαβαβ = {αβαβ}{αβ} = {αβαβαβ} (concatenação)
– ...

Pode ser reescrito usando L∗ = {αβ}∗ :

– L0 = {ǫ}
– L1 = L0 L = {ǫ}{αβ} = {αβ} (concatenação)
– L2 = L1 L = {αβ}{αβ} = {αβαβ} (concatenação)
– L3 = L2 L = {αβαβ}{αβ} = {αβαβαβ} (concatenação)
– L∗ = L0 ∪ L1 ∪ L2 ∪ L3 ∪ · · · ∪ L∞ (união)

L2 = L∗ = (αβ)∗ → expressão regular

Expressões Regulares

Exemplo 23. Seja Σ = {α, β, γ}:

11
- L = (α + β), calcule L∗ .

L∗ = ∪ Ln = L0 ∪ L1 ∪ L2 ∪ . . . (1)
n=0
L0 = ǫ
L1 = L0 L = ǫ(α + β) = (α + β)
L2 = L1 L = (α + β)(α + β) = (αα + αβ + βα + ββ)
L3 = L2 L = (αα + αβ + βα + ββ)(α + β)
= (ααα + ααβ + αβα + αββ + βαα + βαβ + ββα +
βββ) (2)
.. ..
. = .

(α + β)∗ = {ǫ, α, β, αα, αβ, βα, ββ, ααα, ααβ, αβα,


αββ, βαα, βαβ, ββα, βββ, . . . }

- γ(α+β)∗ = {γ, γα, γβ, γαα, γαβ, γβα, γββ, γααα, γααβ, γαβα, γαββ, γβαα, γβαβ, γββα, γβββ, . . . }

- (αβ)∗ + γ = {ǫ, γ, αβ, αβαβ, αβαβαβ, . . . }

Expressões Regulares

É importante ser capaz de interpretar uma linguagem dada sua expressão regular.

Exemplo 24. L = (αβ)∗ → Linguagem formada do conjunto de cadeias que alternam α e β, começando
com α e incluindo a cadeia vazia.

É importante ser capaz de escrever a expressão regular a partir de uma linguagem descrita de outra
forma.

Exemplo 25. L = {w ∈ Σ∗ | cadeias de comprimento 3 começando com β} → L = βαα + βαβ + ββα + βββ.

Expressões Regulares

Definição 10 (Ordem de precedência). Para expressões regulares, a ordem de precedência é:

1. Fechamento Kleene

2. Concatenação
3. União

Exemplo 26.
α + βγ ∗ = (α + (β(γ)∗ ))
(αγ)∗ + βγ ∗ = (αγ)∗ + (β(γ)∗ )

12
Exercício 1. Seja Σ = {α, β} onde α corresponde ao acesso de uma tarefa a um recurso e β corresponde
ao acesso de outra tarefa ao mesmo recurso. Interprete:

1. A = (αβ)∗

2. B = (α + β)∗

3. C = (αβ)∗ + (βα)∗

Linguagem Regular

Definição 11 (Linguagem Regular). Qualquer linguagem que possa ser descrita como uma expressão regular
é uma linguagem regular.

Exercício 2. Se L é uma linguagem finita, então L é uma linguagem regular?

Exercício 3. Para qualquer alfabeto Σ, a linguagem Σ∗ é uma linguagem regular?

Exercício 4. Qualquer linguagem é uma linguagem regular?

Exercício 5. Seja Σ = {a, b}

• L1 é definida sobre Σ tal que:

L1 = {w ∈ Σ∗ |w termina com aa, ab, ba ou bb}.

A única exigência aqui é que tenha comprimento maior ou igual a 2. Sendo assim, a expressão regular
deve conter todas as cadeias possíveis de serem formadas que tenham pelo menos 2 símbolos. Algumas
opções:
L1 = (0 + 1)∗ (0 + 1)(0 + 1)
L1 = (0 + 1)∗ (00 + 01 + 10 + 11)
A linguagem é regular pois pode ser descrita por uma expressão regular.

• L2 é definida sobre Σ = {a, b}, tal que toda cadeia de L2 contém pelo menos um par de as consecutivos.
Não há qualquer tipo de restrição em relação à posição do par de as. A expressão deve poder gerar
o par de as no início, no meio ou no final da cadeia. Não há restrição quanto à existência de outros
pares de as.
L2 = (a + b)∗ aa(a + b)∗

• Descreva em palavras L3 = (a + b)∗ ab(a + b)∗ Conjunto de cadeias que possuem pelo menos um ab.

13
Definição 12 (Projeção Natural). Sejam Σ e Σi conjuntos de eventos, com Σi ⊆ Σ. Pi : Σ∗ → Σ∗i é a
projeção natural de Σ∗ para Σ∗i , e é definida recursivamente por:

Pi (ǫ) = ǫ

ǫ se σ ∈
/ Σi
Pi (σ) =
σ se σ ∈ Σi
Pi (sσ) = Pi (s)Pi (σ) with s ∈ Σ∗ , σ ∈ Σ.

Em palavras, a projeção natural apaga os eventos de uma cadeia que não pertencem a Σi .

Exemplo 27. Seja Σ = {α, β, γ} e Σ1 = {α, γ} e P1 : Σ∗ → Σ∗1 :

- P1 (βαβγγ) = αγγ

- P1 (αβ ∗ (γ + β)) = α(γ + ǫ) = αγ + α

Definição 13 (Projeção de linguagem). Sejam Σ e Σi conjuntos de eventos, com Σi ⊆ Σ. Pi : Σ∗ → Σ∗i .

Pi (L) = {ui ∈ Σ∗i | ui = Pi (u) para algum u ∈ L}.

Exemplo 28. Seja Σ = {α, β, γ} e Σ1 = {α, γ}, P1 : Σ∗ → Σ∗1 e L = αβ ∗ +ββγ ∗ , então P1 (L) = αǫ+ǫǫγ ∗ =
α + γ∗.

Definição 14 (Projeção Inversa). Sejam Σ e Σi conjuntos de eventos, com Σi ⊆ Σ. Pi : Σ∗ → Σ∗i .

Pi−1 (Li ) = {u ∈ Σ∗ | Pi (u) ∈ Li }.

Exemplo 29. Seja Σ = {α, β, γ} e Σ1 = {α, γ} e P1 : Σ∗ → Σ∗1 :

- P1−1 (αγ + α) = β ∗ αβ ∗ γβ ∗ + β ∗ αβ ∗

14
6 Autômatos de Estados Finitos
Autômatos de Estados Finitos Determinísticos

• A linguagem regular pode ser descrita por um autômato de estados finitos.

• O autômato pode ser determinístico ou não-determinístico.

– Se determinístico, o autômato não pode estar em mais de um estado ao mesmo tempo;


– Se não-determinístico, o autômato pode estar em vários estados ao mesmo tempo.

• É mais fácil expressar uma expressão regular em termos de um AFN (Autômato Finito Não-determinístico).

• Qualquer AFN pode ser determinizado em um AFD (Autômato Finito Determinístico).

Autômatos de Estados Finitos Determinísticos

Definição 15 (AFD). O autômato de estados finitos determinístico é uma quíntupla A = (Q, Σ, δ, q0 , F )


onde:

- Q é o conjunto finito e não-vazio de estados


- Σ é o conjunto de eventos

- δ : Q × Σ → Q é a função de transição de estados

- q0 ∈ Q é o estado inicial

- F ⊆ Q é o conjunto de estados finais

Autômatos de Estados Finitos Determinísticos

Exemplo 30. Seja o autômato A = (Q, Σ, δ, q0 , F ) com as seguintes características:

- Q = {x, y, z}

- Σ = {α, β, γ}
- δ(x, α) = x, δ(x, β) = δ(x, γ) = z,

δ(y, α) = x, δ(y, β) = δ(y, γ) = y,

δ(z, β) = z, δ(z, α) = δ(z, γ) = y,

- q0 = x,

- F = {x, z}.

O autômato A possui três estados, seu conjunto de eventos possui três elementos, o estado inicial é x e os
estados finais são {x, z}.

15
δ α β γ
→ ⋆x x z z
y x y y
⋆z y z y

Tabela de Transição de Estados

O autômato pode ser representado por meio da tabela de transição ou pelo diagrama de transição.

• Tabela de Transição: A tabela de transição apresenta a funçao δ. A partir de dois argumentos (estado
de origem e evento) retorna o estado destino.

Diagrama de Transição de Estados

Definição 16. Diagramas de Transição de Estados são grafos direcionados onde os nós representam os
estados e os ramos representam os eventos.

α β, γ

x α y

β, γ α, γ
z
β

Extensão da função de transição δ

Definição 17. Extensão da função de transição δ : Q × Σ → Q para δ : Q × Σ∗ → Q.

- δ(q, ǫ) = q

- δ(q, sσ) = δ(δ(q, s), σ), s ∈ Σ∗ , σ ∈ Σ

Exemplo 31. Seja q = x e sσ = αββ:

α β, γ δ(x, αββ) = δ(δ(x, αβ), β) (3)


= δ(δ(δ(x, α), β), β)
x α y = δ(δ(δ(δ(x, ǫ), α), β), β)
= δ(δ(δ(x, α), β), β)
β, γ α, γ
= δ(δ(x, β), β)
z
= δ(z, β)
β = z

16
Exemplo 32. Seja q = x e sσ = γαβ:

α β, γ δ(x, γαβ) = δ(δ(x, γα), β) (4)


= δ(δ(δ(x, γ), α), β)
x α y = δ(δ(δ(δ(x, ǫ), γ), α), β)
= δ(δ(δ(x, γ), α), β)
β, γ α, γ
= δ(δ(z, α), β)
z
= δ(y, β)
β = y

δ(z, βββαβγγ) = δ(δ(z, βββαβγ), γ)


= δ(δ(δ(z, βββαβ), γ), γ)
= δ(δ(δ(δ(z, βββα), β), γ), γ)
= δ(δ(δ(δ(δ(z, βββ), α), β), γ), γ)
= δ(δ(δ(δ(δ(δ(z, ββ), β), α), β), γ), γ)
= δ(δ(δ(δ(δ(δ(δ(z, β), β), β), α), β), γ), γ)
= δ(δ(δ(δ(δ(δ(δ(δ(z, ǫ)β), β), β), α), β), γ), γ)
= δ(δ(δ(δ(δ(δ(z, β), β), α), β), γ), γ)
= δ(δ(δ(δ(δ(z, β), α), β), γ), γ)
= δ(δ(δ(δ(z, α), β), γ), γ)
= δ(δ(δ(y, β), γ), γ)
= δ(δ(y, γ), γ)
= δ(y, γ)
= y

Cadeia reconhecida por AFD

Definição 18. Uma cadeia s ∈ Σ∗ é reconhecida por um AFD A = (Q, Σ, δ, qo , F ) se δ(q0 , s) ∈ F .

Na definição original, δ(q, σ) está definida para todo q ∈ Q e σ ∈ Σ.

AFD para modelar SED

Tipicamente, não faz sentido forçar que δ(q, σ) esteja definida para todo q ∈ Q e σ ∈ Σ. Assim, passa-se
a falar de um gerador que possui duas linguagens, a gerada e a marcada.
• Gerador
• Função de eventos factíveis: ΣA (q) = {σ : σ ∈ Σ e δ(q, σ)!}.
A notação δ(q, σ)! significa que o evento σ ∈ Σ está definido no estado q.

17
Definição 19. A linguagem marcada por um gerador A = (Q, Σ, δ, qo , F ) é dada por Lm (A) = {s ∈
Σ∗ |δ(q0 , s) ∈ F }.

A linguagem marcada corresponde à linguagem reconhecida pelo gerador, ou seja, o conjunto de cadeias
s que levam do estado inicial q0 para um dos estados finais.

Definição 20. A linguagem gerada por um gerador A = (Q, Σ, δ, qo , F ) é dada por L(A) = {s ∈ Σ∗ |δ(q0 , s)!}.

A linguagem gerada é o conjunto de cadeias fisicamente possíveis no autômato.

Linguagens de um AFD

Exemplo 33. Seja Σ = {α, β} um alfabeto e (αβ)∗ α uma linguagem regular. Esta linguagem é gerada pelo
autômato A = (Q, Σ, δ, q0 , F ) onde Σ = {α, β}, Q = {0, 1}, q0 = 0 e F = {1}. A função de transição é dada
por: δ(0, α) = 1 δ(1, β) = 0
α

0 1
β

- L(A) = (αβ)∗ (ǫ + α)

- Lm (A) = (αβ)∗ α

Linguagens de um AFD

Exercício 6. Seja Σ = {α, β}. Qual a linguagem reconhecida pelo seguinte AFD?
β α, β

α β
0 1 2

Teorema de Kleene (1956)

Definição 21. Se L é regular, existe um autômato G com um número finito de estados tal que Lm (G) = L.
Se G tem um número finito de estados, então Lm (G) é regular.

18
Autômatos de Estados Finitos Não-Determinísticos

No autômato não-determinístico é possível estar em vários estados ao mesmo tempo.

Definição 22 (AFN). O autômato de estados finitos não-determinístico é uma quíntupla A = (Q, Σ, δ, q0 , F )


onde:
- Q é o conjunto finito e não-vazio de estados

- Σ é o conjunto de eventos

- δ : Q × Σ → A, onde A ⊆ Q (ou δ : Q × Σ → 2Q ), é a função de transição de estados

- q0 ∈ Q é o estado inicial

- F ⊆ Q é o conjunto de estados finais

Autômatos de Estados Finitos Não-Determinísticos

A diferença na definição do AFN está na função de transição que retorna, no caso de AFN, um conjunto
de estados.

Exercício 7. Defina formalmente o autômato apresentado abaixo.


α, β

α β
0 1 2

Linguagem de um AFN

Definição 23. Uma cadeia s é reconhecida por um AFN A = (Q, Σ, δ, q0 , F ) se

δ(q0 , s) ∩ F 6= ∅.

Definição 24 (Linguagem de um AFN). A linguagem reconhecida por um AFN A = (Q, Σ, δ, q0 , F ) é dada


por
Lm (A) = {s ∈ Σ∗ |δ(q0 , s) ∩ F 6= ∅}

Em palavras, Lm (A) é o conjunto de cadeias de Σ∗ tal que δ(q0 , s) contém pelo menos um estado
pertencente a F .

19
Linguagem de um AFN

Exercício 8. Seja o AFN A = (Q, Σ, δ, q0 , F ) a seguir. As linguagens gerada e marcada são:


α, β

α β
0 1 2
L(A) =(α + β)∗ (ǫ + α + αβ).
Lm (A) =(α + β)∗ αβ.

Linguagem de um AFN

Exercício 9. Seja o AFN A = (Q, Σ, δ, q0 , F ) a seguir


α
α
0 1
β

L(A) =(α + αβ)∗ (ǫ + α)


Lm (A) =(α + αβ)∗ .

7 Equivalência entre AFN e AFD


Equivalência entre AFD e AFN

Teorema 1. Uma linguagem é reconhecida por um autômato de estados finitos não-determinístico se e


somente se for reconhecida por um autômato de estados finitos determinístico.

É muitas vezes mais fácil construir um autômato de estados finitos não-determinístico que reconhece uma
linguagem que seu correspondente determinístico.
Em geral, o AFD tem aproximadamente o mesmo número de estados que o AFN, mas mais transições.
No pior caso, o menor AFD que reconhece uma linguagem tem 2n estados enquanto o menor AFN que
reconhece a mesma linguagem tem apenas n estados.

Equivalência entre AFD e AFN

Como construir um AFD a partir de um AFN?

Metodologia 1. Começa-se com um AFN N = (QN , Σ, δN , q0 , FN ). O objetivo é descrever um AFD


D = (QD , Σ, δD , q0 , FD ) tal que Lm (N ) = Lm (D).
- QD é o conjunto de subconjuntos de QN ;
- FD é o conjunto S de subconjuntos de QN tal que S ∩ FN 6= ∅;
- Para cada conjunto S ⊆ QN e para cada elemento a ∈ Σ,

δD (S, a) = ∪ δN (p, a)
p∈S

20
Observação 1 Um conjunto QN de n elementos vai gerar um conjunto QD de 2n elementos. Nem todos
estes estados são acessíveis a partir do estado q0 então vários dos estados de QD poderão ser eliminados.

Observação 2 FD é composto dos elementos de QD que possuem estados de FN .

Observação 3 Para computar δD (S, a) olham-se os estados p componentes de S, e faz-se a união de todos
os estados para os quais os estados p movem com a ocorrência do símbolo a.

Exemplo 34. Seja o AFN abaixo. Este AFN é descrito a seguir.


- QN = {0, 1};

- Σ = {α, β};

α - δN tal que
α δN (0, α) = {0, 1}
0 1 δN (0, β) = ∅
δN (1, α) = ∅
β δN (1, β) = {0}

- q0 = 0

- FN = {0}

O primeiro passo é determinar QD :


QD = ∅, {0}, {1}, {0, 1} .


O conjunto de estados finais F D é formado dos estados de QD que tenham interseção não vazia com F N ,
ou seja,
F D = {0}, {0, 1} .


O estado inicial é q0 = 0 e a tabela de transição é construída a seguir.


α, β
α
δD α β ∅ 1
∅ ∅ ∅
β
→ ⋆{0} {0, 1} ∅ β
{1} ∅ {0} α α
⋆{0, 1} {0, 1} ∪ ∅ = {0, 1} ∅ ∪ {0} = {0} 0 01
β
A transição δD ({0, 1}, α) foi obtida da seguinte forma:

δD ({0, 1}, α) = δN ({0}, α) ∪ δN ({1}, α)


= {0, 1} ∪ ∅
= {0, 1}

Exercício 10. Obtenha um AFD que reconhece a mesma linguagem que o AFN abaixo.

21
α, β

0 α 1 2
a) β

α β

0 α 1 2
b) β

Projeção Natural em Geradores

Metodologia 2 (Projeção aplicada a geradores). 1. Substitui os eventos em Σ − Σi por transição-ε;


2. Colapsa estados ligados por transição-ε;

3. Determiniza.

Exemplo 35. Seja o gerador A, Σ = {α, β, γ}, Σ1 = {α, γ} e P1 : Σ∗ → Σ∗1 :

γ γ
A A
α β γ α ε γ
0 1 2 3 0 1 2 3

P1 (A)
γ
Lm (A) = αγ ∗ βγ
α γ
P1 (Lm (A)) = αγ ∗ γ 0 1, 2 3

Projeção Natural em Geradores


A complexidade da operação de projeção natural é exponencial, no pior caso.

- Ao aplicar a projeção sobre geradores, pode-se obter um gerador não-determínístico.

22
- O procedimento de determinização é, no pior caso, de complexidade exponencial.

Exemplo 36. Seja o gerador A, Σ = {α, β, γ}, Σ1 = {α, γ} e P1 : Σ∗ → Σ∗1 , A′ = P1 (A), sendo A′ um
γ
A
α γ δ A′ α γ
0 1 2
→ {0} {1} ∅
AFD:
γ {1} ∅ {1, 2}
A′ = P1 (A)
⋆{1, 2} ∅ {1, 2}
α γ
0 1 2

Projeção Inversa em Geradores

Procedimento:

1. Adicionar auto-laços com o conjunto de eventos adicional a cada estado.

Observação 1 Não altera o número de estados do gerador.

Observação 2 Não recupera a linguagem antes da projeção, mas uma linguagem que contém a original.

Exemplo 37. Seja o gerador A, Σ = {α, β, γ}, Σ1 = {α, γ} e P1 : Σ∗ → Σ∗1 :


γ β β γ, β
A′ P −1 (A′ )
α γ α γ
0 1 2 0 1 2

Lm (A) = αγγ ∗
−1
P (Lm (A)) = β ∗ αβ ∗ γ(β + γ)∗

23
8 Equivalência entre AFD
Definição 25. Dois AFD A e B são equivalentes se e somente se Lm (A) = Lm (B).

Exemplo 38. Os dois AFD A e B abaixo são equivalentes.

α, β
0 1
β

α α, β β 0 1
α, β α, β

2 3
α
Lm (A) = Lm (B) = (α + β)(α + β)∗

Em muitos casos, não existe um único modelo para um sistema. É desejável obter aquele com menor
número de estados.

Definição 26 (AFD Mínimo). Um AFD A = (QA , Σ, δA , q0A , FA ) é mínimo se e somente se para todo AFD
B = (QB , Σ, δB , q0B , FB ), com Lm (A) = Lm (B), |QA | ≤ |QB |.

Em palavras, um AFD A é mínimo se e somente se para todo AFD B tal que as linguagens reconhecidas
por cada um deles é igual, o número de estados de A deve ser menor que o número de estados de B.

Observação Se A possui estados não-acessíveis (que não podem ser acessados a partir do estado inicial)
então A não é mínimo.

Agregação de Estados em um Autômato

Para sistemas pequenos é possível reduzir o número de estados de um modelo utilizando lógica e bom
senso. Para sistemas de maior porte, pode haver explosão combinatorial.

Definição 27 (Estados Equivalentes). Seja A = (Q, Σ, δ, q0 , F ) um AFD e seja R um subconjunto de


estados, R ⊆ Q. Diz-se que o conjunto R é constituído de estados equivalentes em relação a F se, para
quaisquer x, y ∈ R, com x 6= y e qualquer cadeia s:

δ(x, s) ∈ F se e somente se δ(y, s) ∈ F.

Observação 1 se x ∈ F e y ∈
/ F , então x e y não podem ser equivalentes.

Observação 2 se δ(x, σ) = δ(y, σ), para qualquer σ ∈ Σ então x e y são equivalentes.

Observação 3 a propriedade acima se mantém se, para alguns eventos, δ(x, σ) = y e δ(y, σ) = x.

Observação 4 em geral, se R é tal que R ⊆ F ou R ∩ F = ∅, então R é constituído de estados equivalentes


se δ(x, σ) = z ∈
/ R implica δ(y, σ) = z para quaisquer x, y ∈ R.

24
Observação 5 se F = Q, então todos os estados são equivalentes em relação a F .

Exemplo 39. Seja A o AFD que deve detectar a sequência αβγ.


α α
A β
β
α
0 1 2 γ 3
α
γ α
β, γ β
4 γ

β, γ

Pode-se perceber que o estado 4 é equivalente ao estado 0 pois:

- δ(0, α) = δ(4, α) = 1;

- δ(0, β) = δ(4, β) = 4;

- δ(0, γ) = δ(4, γ) = 4.

Algoritmo para Identificação de Estados Equivalentes

Metodologia 3 (Identificação de Estados Equivalentes). 1. Montar uma tabela com todos os pares de
estados;

2. Marcar (p, q) para todo p ∈ F e q ∈


/ F;

3. Para todo par (p, q) não marcado no passo 1:

(a) se (δ(p, σ), δ(q, σ)) está marcado para algum σ ∈ Σ, então:
i. Marcar (p, q)
ii. Marcar todos os pares (m, n) não marcados na lista de (p, q). Repetir para cada (m, n) até
que nenhuma marcação seja possível
(b) se (δ(p, σ), δ(q, σ)) não está marcado para nenhum σ ∈ Σ então:
i. se δ(p, σ) 6= δ(q, σ) então acrescentar (δ(p, σ), δ(q, σ)) à lista de (p, q).

Exemplo 40. Seja A o AFD abaixo.


α α
A β
β
α
0 1 2 γ 3
α
γ α
β, γ β
4 γ

β, γ

25
Primeiro marca na tabela todos os pares em que um estado é marcado e o outro não marcado. Como só
o estado 3 é marcado, 3 não pode ser equivalente a nenhum outro estado (x preto na tabela).
α
0,1 −→ 1,1
1 x β
2 x x ↓γ ց
α
3 x x x 4,4 4,2 −→ 1,1
4 Eq x x x β
0 1 2 3 ↓γ ց
3,4 4,4
Depois analisa cada par da tabela, avaliando suas transições e colocando novos pares alcançados na lista
daquele par. Se alcançar um estado que já tem x (estados com retângulo), o x se estende a todos os pares
da lista (coloridos).
α α α α
0,2 −→ 1,1 1,2 −→ 1,1 1,4 −→ 1,1 0,4 −→ 1,1
β β β β
↓γ ց ↓γ ց ↓γ ց ↓γ ց
3,4 4,4 4,3 2,4 4,4 2,4 4,4 4,4

Minimização de AFD

Metodologia 4 (Minimização de AFD). 1. Eliminar qualquer estado que não possa ser alcançado a par-
tir do estado inicial.
2. Particionar os estados restantes em blocos de modo que:

(a) todos os estados no mesmo bloco sejam equivalentes;


(b) nenhum par de estados de blocos distintos seja equivalente.

Exemplo 41. Considerando o Exemplo 40, minimize o autômato A.


α α
A β
β
0
α 1 2 3
γ
α
γ α
β, γ β
4 γ 1 x
2 x x
β, γ 3 x x x
α α 4 Eq x x x
B γ β
β 0 1 2 3
0, 4 1 2 3
α γ
α
β, γ β
γ

Exercício 11. Minimizar o AFD abaixo.

26
0 1
β
α α, β β
α, β
2 3
α

27

Você também pode gostar