Buscar

LFA I - Manual

Prévia do material em texto

INSTITUTO SUPERIOR DE CIÊNCIAS E TECNOLOGIA 
DE MOÇAMBIQUE 
 
 
 
 
Linguagens Formais e Autómatos I 
(Parte Teórica, 93 Exemplos e Problemas resolvidos. 56 Problemas propostos com 
respostas) 
 
 
 
 
Boris Tanana 
 
 
 
 
 
 
 
Maputo, 2019 
ii 
Índice 
 
INTRODUÇÃO .............................................................................................................................. 5 
Capítulo 1 ........................................................................................................................................ 6 
Preliminares Relações binárias. Funções .................................................................................... 6 
Conjuntos finitos e infinitos. Cardinalidades .............................................................................. 8 
Capítulo 2 ........................................................................................................................................ 9 
Linguagens Formais. Conceitos básicos ..................................................................................... 9 
Operações sobre as palavras ..................................................................................................... 10 
Ordenação das palavras............................................................................................................. 12 
Ordem lexicográfica.................................................................................................................. 12 
Ordem canónica ........................................................................................................................ 12 
Operações sobre linguagens ...................................................................................................... 14 
Problemas resolvidos ................................................................................................................ 16 
Problemas propostos ................................................................................................................. 17 
Respostas................................................................................................................................... 18 
Capítulo 3 ...................................................................................................................................... 19 
Linguagens Regulares. Expressões Regulares .......................................................................... 19 
Problema de representação finita de linguagens ....................................................................... 19 
Linguagens Regulares (LR) ...................................................................................................... 19 
Expressões Regulares (ER) ....................................................................................................... 20 
Propriedades das ER’s .............................................................................................................. 22 
Problemas propostos ................................................................................................................. 23 
Respostas................................................................................................................................... 24 
Capítulo 4 ...................................................................................................................................... 26 
Autómatos Finitos Determinísticos........................................................................................... 26 
Diagrama de transição de um AFD ........................................................................................... 27 
Caminho de computação ........................................................................................................... 28 
Extensão da função de transição ............................................................................................... 29 
Linguagem reconhecida (aceite) por um AFD.......................................................................... 30 
Problemas resolvidos ................................................................................................................ 36 
Problemas propostos ................................................................................................................. 39 
iii 
Respostas................................................................................................................................... 40 
Capítulo 5 ...................................................................................................................................... 45 
Autómatos Finitos Não Determinísticos com 𝝀 – arcos ........................................................... 45 
𝝀 – Fecho................................................................................................................................... 53 
Simulação de um AFND – 𝝀 por um AFD ............................................................................... 54 
Problemas resolvidos ................................................................................................................ 57 
Problemas propostos ................................................................................................................. 60 
Respostas................................................................................................................................... 62 
Capítulo 6 ...................................................................................................................................... 64 
Autómatos Finitos e Expressões Regulares .............................................................................. 64 
Algoritmo de eliminação de estados ......................................................................................... 66 
Problemas resolvidos ................................................................................................................ 67 
Problemas propostos ................................................................................................................. 75 
Respostas................................................................................................................................... 76 
Capítulo 7 ...................................................................................................................................... 78 
Minimização de Autómatos Finitos Determinísticos. Lema de Repetição para LR’s .............. 78 
Construção de AFD mínimo ..................................................................................................... 79 
Lema de Repetição para LR’s ................................................................................................... 80 
Problemas resolvidos ................................................................................................................ 81 
Problemas propostos ................................................................................................................. 86 
Respostas................................................................................................................................... 88 
Capítulo 8 ...................................................................................................................................... 89 
Gramáticas e Linguagens Formais. A hierarquia de Chomsky. Autómatos e Gramáticas 
Regulares................................................................................................................................... 89 
Hierarquia de Chomsky ............................................................................................................ 92 
Autómatos e Gramáticas Regulares ..........................................................................................93 
Problemas resolvidos ................................................................................................................ 96 
Problemas propostos ................................................................................................................. 98 
Respostas................................................................................................................................... 99 
Capítulo 9 .................................................................................................................................... 101 
Gramáticas Independentes de Contexto. Árvores de Derivação. Ambiguidade ..................... 101 
Árvores de derivação. Derivações esquerda e direita. Ambiguidade .................................... 103 
Representação de produções por árvores ................................................................................ 103 
iv 
Derivações esquerdas e direitas .............................................................................................. 107 
Eliminação de ambiguidade .................................................................................................... 109 
Linguagens inerentemente ambíguas ...................................................................................... 111 
Lema de Repetição para linguagens independentes de contexto ............................................ 112 
Problemas resolvidos .............................................................................................................. 113 
Problemas propostos ............................................................................................................... 117 
Respostas................................................................................................................................. 118 
Capítulo 10 .................................................................................................................................. 120 
Autómatos de Pilha ................................................................................................................. 120 
Problemas resolvidos .............................................................................................................. 124 
Problemas propostos ............................................................................................................... 126 
Respostas................................................................................................................................. 127 
Bibliografia ................................................................................................................................. 129 
 
 
 
 
 
 
 
 
 
 Linguagens Formais e Autómatos 
5 
INTRODUÇÃO 
 
 O conceito de linguagem formal começou por ser introduzido pelos linguistas, nos anos 50 
do século XX, com o objectivo de criarem um modelo matemático das linguagens naturais. A 
teoria das linguagens formais tornou-se muito importante quando surgiram as linguagens artificiais 
na ciência da computação. 
 As linguagens de programação permitem abreviar toda a “maquinaria” necessária em 
linguagem-computador para efectuar uma operação. Levantam-se no entanto, vários problemas, 
por exemplo, tradução de linguagens de programação para linguagem máquina ou especificação 
de linguagem de programação. 
 A primeira situação ocorre, por exemplo, na compilação dum programa fonte: define-se 
formalmente o compilador e estudam-se as diversas fases de compilação. Nesta cadeira damos 
alguns tópicos que nos permitirão mais tarde fazer isso. 
 Ao longo dos anos 50 do século XX, os compiladores foram considerados programas 
notoriamente difíceis de se escrever. O primeiro compilador Fortran, por exemplo, consumiu 18 
homens-ano para implementar. Descobrimos desde então, técnicas sistemáticas para o tratamento 
de muitas das importantes tarefas que ocorrem durante a compilação. Igualmente, foram 
desenvolvidas boas linguagens de implementação, ambientes de programação e ferramentas de 
software. 
 Com esses avanços, até mesmo um compilador substancial pode ser escrito num projecto 
de estudantes com duração de um semestre. 
 
 
 
 Linguagens Formais e Autómatos 
6 
Capítulo 1 
 
Preliminares 
Relações binárias. Funções 
 
Sejam 𝐴 e 𝐵 conjuntos, 𝑎 ∈ 𝐴, 𝑏 ∈ 𝐵. Chama-se par ordenado ao objecto (𝑎, 𝑏). 
Dizemos que 𝒂 é a primeira componente de (𝑎, 𝑏) e 𝒃 é a segunda componente de (𝑎, 𝑏). Dois 
pares ordenados (𝑎, 𝑏) e (𝑐, 𝑑) são iguais (𝑎, 𝑏) = (𝑐, 𝑑) se e só se 𝑎 = 𝑐 e 𝑏 = 𝑑. 
 O produto cartesiano de dois conjuntos 𝐴 e 𝐵, denota-se por 𝐴 × 𝐵, é o conjunto de 
todos os pares ordenados (𝑎, 𝑏) com 𝑎 ∈ 𝐴, 𝑏 ∈ 𝐵 
𝐴 × 𝐵 = {(𝑎, 𝑏) | 𝑎 ∈ 𝐴, 𝑏 ∈ 𝐵}. 
Uma relação binária 𝑅 de um conjunto 𝐴 em um conjunto 𝐵 é um subconjunto de 𝐴 × 𝐵 
𝑅 ⊆ 𝐴 × 𝐵. 
Uma relação binária 𝑅 num conjunto 𝐴 é um subconjunto de 𝐴 × 𝐴 = 𝐴2 
𝑅 ⊆ 𝐴2. 
Seja 𝑅 ⊆ 𝐴2. 
𝑅 diz-se reflexiva se (𝑎, 𝑎) ∈ 𝑅, para todo o 𝑎 ∈ 𝐴. 
∀𝑎 ∈ 𝐴, (𝑎, 𝑎) ∈ 𝑅. 
𝑅 diz-se simétrica se para quaisquer 𝑎, 𝑏 ∈ 𝐴 tais que (𝑎, 𝑏) ∈ 𝑅, se tem (𝑏, 𝑎) ∈ 𝑅. 
∀𝑎, 𝑏 ∈ 𝐴 (𝑎, 𝑏) ∈ 𝑅 ⇒ (𝑏, 𝑎) ∈ 𝑅. 
𝑅 diz-se transitiva se para quaisquer 𝑎, 𝑏, 𝑐 ∈ 𝐴 tais que (𝑎, 𝑏) 𝑒 (𝑏, 𝑐) ∈ 𝑅, se tem 
(𝑎, 𝑐) ∈ 𝑅. 
∀𝑎, 𝑏, 𝑐 ∈ 𝐴 (𝑎, 𝑏) ∈ 𝑅 ∧ (𝑏, 𝑐) ∈ 𝑅 ⇒ (𝑎, 𝑐) ∈ 𝑅. 
 Linguagens Formais e Autómatos 
7 
𝑅 diz-se relação de equivalência se 𝑅 for simultaneamente reflexiva, simétrica e 
transitiva. 
Dada uma relação de equivalência 𝑅 num conjunto 𝐴, designemos por [𝑎]𝑅 a classe de 
equivalência de 𝑎 ∈ 𝐴, isto é, o conjunto de todos elementos 𝑥 ∈ 𝐴 tais que (𝑎, 𝑥) ∈ 𝑅 
[𝑎]𝑅 = {𝑥 | (𝑎, 𝑥) ∈ 𝑅}. 
Por 𝐴 𝑅⁄ designa-se o conjunto de todas as classes de equivalência 𝑅 em 𝐴 e chama-se conjunto 
quociente 
𝐴 𝑅⁄ = {[𝑎]𝑅|𝑎 ∈ 𝐴}. 
Note-se que cada classe de equivalência é não vazia; classes de equivalência são disjuntas; 𝐴 é 
uma união das classes de equivalência determinadas por 𝑅. 
Uma função dum conjunto 𝐴 num conjunto 𝐵 é uma relação binária 𝑅 ⊆ 𝐴 × 𝐵 tal que 
para cada 𝑎 ∈ 𝐴 existe exactamente um par ordenado em 𝑅 com primeira componente 𝑎. 
Tal como é hábito escrevermos 𝑓: 𝐴 → 𝐵 para indicar que 𝑓 é uma função de 𝐴 em 𝐵 e 
escrevemos 𝑓(𝑎) = 𝑏 para indicar que (𝑎, 𝑏) ∈ 𝑓. 
Uma função 𝑓: 𝐴 → 𝐵 diz-se: 
• Injectiva – se dados dois elementos distintos 𝑎1, 𝑎2 ∈ 𝐴, se tem 𝑓(𝑎1) ≠ 𝑓(𝑎2); 
• Sobrejectiva – se para cada 𝑏 ∈ 𝐵, existe 𝑎 ∈ 𝐴 tal que 𝑓(𝑎) = 𝑏; 
• Bijectiva – se é simultaneamente injectiva e sobrejectiva. 
Toda a relação binária 𝑅 ⊆ 𝐴 × 𝐵 tem uma inversa 𝑅−1 ⊆ 𝐵 × 𝐴 definida por 
𝑅−1 = {(𝑏, 𝑎) | (𝑎, 𝑏) ∈ 𝑅}. 
Recordemos que no entanto, nem sempre a relação inversa de uma função é uma função. 
Mas se 𝑓: 𝐴 → 𝐵 é uma bijecção então a inversa, 𝑓−1: 𝐵 → 𝐴 é uma função. De facto, 𝑓−1 é uma 
bijecção de 𝐵 em 𝐴. 
 
 Linguagens Formais e Autómatos 
8 
Conjuntos finitos e infinitos. Cardinalidades 
 
 Dois conjuntos 𝐴 e 𝐵 se dizem equipotentes se existe uma bijecção 𝑓: 𝐴 → 𝐵. A relação 
de equipotência é uma relação de equivalência. As classes desta equivalência são cardinalidades 
de conjuntos que pertencem a essa classe. 
Cardinalidade de um conjunto 𝐴 designa-se por |𝐴|. Assim, |𝐴| = |𝐵| ⇔ ∃ 𝑓: 𝐴 → 𝐵, 𝑓 é uma 
bijecção. 
 Um conjunto 𝐴 diz-se finito se é equipotente a {1, 2, … , 𝑛}, para algum 𝑛 ∈ ℕ. 
 Se 𝐴 é equipotente a {1, 2, … , 𝑛} então |𝐴| = 𝑛. Portanto a cardinalidade dum conjunto 
finito é o seu número de elementos. 
 Um conjunto diz-se infinito se não é finito. Como sabemos, os conjuntos ℕ, ℤ, ℚ e ℝ são 
infinitos.No entanto, nem todos os conjuntos infinitos são equipotentes. 
 Um conjunto 𝐴 diz-se enumerável (ou numerável ou contável) se 𝐴 é finito ou 
equipotente ao conjunto ℕ. 
 Um conjunto 𝐴 diz-se infinito enumerável se 𝐴 é equipotente a ℕ, i.é |𝐴| = |ℕ|. 
A cardinalidade de ℕ designa-se por ℵ0 (alefe-zero). 
Prova-se que |ℕ| = |ℤ| = |ℚ| = ℵ0 e que ℝ não é enumerável |ℝ| = ℂ (contínuo). 
Prova-se ainda que: 
• A união de um número finito de conjuntos enumeráveis é um conjunto enumerável; 
• A união duma colecção infinita enumerável de conjuntos enumeráveis é um conjunto 
infinito enumerável. 
Finalmente, formulamos o famoso 
Teorema (de Cantor) 
Seja 𝐴 conjunto qualquer. Então |𝐴| < |𝑃(𝐴)|. 
Também prova-se que |𝑃(ℕ)| = ℂ. 
 Linguagens Formais e Autómatos 
9 
Capítulo 2 
 
Linguagens Formais. Conceitos básicos 
 
Definição 2.1. Um alfabeto é qualquer conjunto finito não vazio. De costume designa-se por Σ. 
Os elementos de Σ chamam-se letras (ou símbolos). 
Uma palavra sobre um alfabeto Σ é uma sequência finita de letras do alfabeto Σ. 
 Vamos usar uma notação simplificada para palavra, omitindo parêntesis e vírgulas. 
Escrevemos 𝑎1𝑎2 … 𝑎𝑛 em vez de (𝑎1, 𝑎2, … , 𝑎𝑛). Identificamos uma palavra que contenha só 
uma letra com a própria letra. 
 A sequência vazia chamamos palavra vazia. Denotamos geralmente essa palavra por 
𝜆 (𝜆 ∉ Σ). 
Exemplo 2.1. 
Σ1 = {𝑎, 𝑏, 𝑐, … , 𝑧} − alfabeto romano; 
Σ2 = {0, 1, … ,9, +, −,÷,×, (, )} − alfabeto de aritmética; 
Σ3 = {0, 1} − alfabeto binário; 
Σ4 = {𝑎, 𝑏, 𝑐, … , 𝑧, 0,1, … , 9, 𝑏𝑒𝑔𝑖𝑛, 𝑒𝑛𝑑, 𝑖𝑓, 𝑜𝑟, … } − alfabeto de Pascal. 
𝑎, 𝑎𝑎, 𝑎𝑏𝑐, 𝑐𝑎𝑏𝑜, 𝜆 − palavras sobre Σ1; 
(2 + 3) × 5, +)(3, 𝜆 − palavras sobre Σ2; 
0, 10, 111, 𝜆 − palavras sobre Σ3; 
𝑏𝑒𝑔𝑖𝑛 
 𝑓𝑜𝑟 𝑖 ≔ 1 𝑡𝑜 3 𝑑𝑜 
 𝑥 ≔ 𝑥 + 1 
𝑒𝑛𝑑 
 
− palavra sobre Σ4 
 Linguagens Formais e Autómatos 
10 
Definição 2.2. O comprimento duma palavra 𝑤 é o seu comprimento como sequência (ou número 
das letras com repetições que representam 𝑤). Designemos por |𝑤| o comprimento da palavra 𝑤. 
Exemplo 2.2. 
|𝑎𝑏𝑐| = 3, |𝑎𝑏| = 2, |𝜆| = 0 (alfabeto Σ1, Exemplo 2.1); 
|𝑏𝑒𝑔𝑖𝑛| = 1 (alfabeto Σ4, Exemplo 2.1). 
 
Definição 2.3. Duas palavras 𝑢 = 𝑎1𝑎2 … 𝑎𝑛 e 𝑣 = 𝑏1𝑏2 … 𝑏𝑘 são iguais se |𝑢| = |𝑣| (𝑛 = 𝑘) 
e 𝑎1 = 𝑏1, 𝑎2 = 𝑏2, … , 𝑎𝑛 = 𝑏𝑛 
𝑢 = 𝑣 ⇔ |𝑢| = |𝑣| ∧ 𝑎1 = 𝑏1, 𝑎2 = 𝑏2, … , 𝑎𝑛 = 𝑏𝑛. 
Por exemplo, 𝑎𝑏 ≠ 𝑏𝑎. 
 
Operações sobre as palavras 
 
 Definição 2.4. A concatenação (ou produto) das palavras 𝑢 = 𝑎1𝑎2 … 𝑎𝑛 e 𝑣 = 𝑏1𝑏2 … 𝑏𝑘 é a 
palavra 𝑢𝑣 = 𝑎1𝑎2 … 𝑎𝑛 𝑏1𝑏2 … 𝑏𝑘. 
 
 
Por exemplo, 𝑢 = 𝑎𝑏, 𝑣 = 𝑏𝑎. 
𝑢𝑣 = 𝑎𝑏𝑏𝑎 
𝑣𝑢 = 𝑏𝑎𝑎𝑏 
Podemos ver que em geral 𝑢𝑣 ≠ 𝑣𝑢. 
 
Definição 2.5. Seja 𝑢 uma palavra. Utilizando a concatenação podemos definir potências de 𝑢 
𝑢0 = 𝜆, 𝑢𝑛+1 = 𝑢𝑛 𝑢, 𝑛 ≥ 0 
u v 𝑢𝑣 = 
 
 Linguagens Formais e Autómatos 
11 
Definição 2.6. Seja 𝑢 = 𝑎1𝑎2 … 𝑎𝑛−1𝑎𝑛. A palavra inversa de 𝑢 é 𝑢
𝑅 = 𝑎𝑛𝑎𝑛−1 … 𝑎2𝑎1. 
Definição 2.7. Uma palavra tal que 𝑢 = 𝑢𝑅 chama-se palíndromo. 
Exemplo 2.3. 
𝜆, 𝑎, 𝑎𝑏𝑎 − são palíndromos; 
𝑎𝑏, 𝑎𝑎𝑏 − não são palíndromos. 
Exemplo 2.4. (Uma piada) 
Primeira frase do mundo é um palindromo. 
Esta frase é: “Madam I’m Adam”. 
 
Teorema 2.1. Sejam 𝑢, 𝑣, 𝑤 palavras quaisquer. 
1) 𝑢(𝑣𝑤) = (𝑢𝑣)𝑤; 
2) 𝜆𝑢 = 𝑢𝜆 = 𝑢; 
3) |𝑢𝑣| = |𝑢| + |𝑣|; 
4) (𝑢𝑣)𝑅 = 𝑣𝑅𝑢𝑅; 
5) |𝑢𝑅| = |𝑢|. 
 
Seja Σ um alfabeto. 
Por Σ∗ designemos o conjunto de todas as palavras sobre Σ (incluíndo a palavra vazia 𝜆). Por Σ+ 
designemos o conjunto de todas as palavras não vazias sobre Σ. Então Σ+ = Σ∗ ∖ {𝜆}. 
Segundo o Teorema 2.1, o conjunto Σ∗ em relação à concatenação forma uma estrutura algébrica 
que se chama monóide (concretamente monóide livre gerado por Σ) e o conjunto Σ+ é um 
semigrupo livre gerado por Σ. Livre significa que qualquer palavra em Σ∗ (ou em Σ+) tem uma 
única forma como concatenação de símbolos em Σ. 
 
 
 Linguagens Formais e Autómatos 
12 
Definição 2.8. Seja 𝑤 uma palavra 
 
 
 
x chama-se prefixo de 𝑤; 
u chama-se sub-palavra de 𝑤; 
y chama-se sufixo de 𝑤. 
Vamos usar as designações seguintes: 
 𝑝𝑟𝑒𝑓(𝑤), 𝑝𝑟𝑒𝑓2(𝑤), 𝑠𝑢𝑏(𝑤), 𝑠𝑢𝑏1(𝑤), 𝑠𝑢𝑓(𝑤), 𝑠𝑢𝑓3(𝑤). 
 
Ordenação das palavras 
 
Seja ∑ um alfabeto totalmente ordenado Σ = {𝑎1, 𝑎2, … , 𝑎𝑛} e 𝑎1 < 𝑎2 < ⋯ < 𝑎𝑛. 
 
Ordem lexicográfica 
 
Se 𝑥, 𝑦 ∈ Σ∗ então 
𝑥 <𝐿 𝑦 ⇔ 𝑦 = 𝑥𝑣, 𝑣 ∈ Σ
+ 𝑜𝑢 ∃𝑢, 𝑣, 𝑤 ∈ Σ∗, 𝑎, 𝑏 ∈ Σ ∶ 𝑥 = 𝑢𝑎𝑣, 𝑦 = 𝑢𝑏𝑤 𝑜𝑛𝑑𝑒 𝑎 < 𝑏. 
Por exemplo, ver <𝐿 verdade <𝐿 verme. 
 
Ordem canónica 
 
Se 𝑥, 𝑦 ∈ Σ∗ então 
𝑥 <𝐶 𝑦 ⇔ |𝑥| < |𝑦| 𝑜𝑢 |𝑥| = |𝑦| 𝑒 𝑥 <𝐿 𝑦 
Por exemplo, ver <𝐶 verme <𝐶 verdade. 
x u y 
𝑤 
 Linguagens Formais e Autómatos 
13 
Σ0 = {𝜆} 
Σ2 na ordem 
lexicográfica 
Σ na ordem 
lexicográfica 
 
 
 
 
 
 
 
 
 
 
 
Exemplo 2.5. Ordem canónica das palavras binárias, (Σ = {0, 1}, 0 < 1) 
𝜆 <𝐶 0 <𝐶 1 <𝐶 00 <𝐶 01 <𝐶 10 <𝐶 11 <𝐶 000 <𝐶 … . 
Assim temos a sequência seguinte: 
𝜆, 0, 1, 00, 01, 10, 11, 000, … . 
Se para cada palavra 𝑤 desta sequência concatenamos 1 como prefixo 1𝑤 então recebemos: 
1, 10, 11, 100, 101, 110, 111, 1000, … . 
Esta sequência representa em binário os números 
1, 2, 3, 4, 5, 6, 7, 8, … 
das palavras binárias na ordem canónica. Assim, se não há confusão em vez da sequência das 
palavras na ordem canónica podemos escrever os seus números em decimal. 
Exemplo 2.6. a) Que número tem a palavra 𝑤 = 01011 na ordem canónica? 
 b) Que palavra binária tem o número 37 na ordem canónica? 
 
Resposta: a) 43 ; b) 𝑤37 = 00101. 
 Linguagens Formais e Autómatos 
14 
Definição 2.9. Dado um alfabeto Σ. Uma linguagem formal sobre Σ, ou simplesmente, 
linguagem, é um subconjunto 𝐿 de Σ∗ (𝐿 ⊆ Σ∗). 
Exemplo 2.7. 𝐿1 = ∅, 𝐿2 = {𝜆}, 𝐿3 = Σ, 𝐿4 = Σ
∗, 
Σ = {𝑎, 𝑏}, 𝐿5 = {𝑎
𝑛𝑏𝑛| 𝑛 ≥ 0}, 𝐿6 = {𝑎
𝑝| 𝑝 é 𝑝𝑟𝑖𝑚𝑜}, 𝐿7 = {𝜆, 𝑎, 𝑎𝑏𝑎}. 
Qualquer linguagem de programação é uma linguagem sobre o conjunto dos símbolos usados. 
 
Operações sobre linguagens 
 
Sejam 𝐿1, 𝐿2 e 𝐿 três linguagens sobre Σ. Definimos as seguintes operações com 𝐿1, 𝐿2 e 𝐿. 
1) União, 𝐿1 ⋃ 𝐿2 = {𝑤|𝑤 ∈ 𝐿1 𝑜𝑢 𝑤 ∈ 𝐿2}; 
2) Intersecção, 𝐿1 ∩ 𝐿2 = {𝑤|𝑤 ∈ 𝐿1 𝑒 𝑤 ∈ 𝐿2}; 
3) Diferença, 𝐿1 ∖ 𝐿2 = {𝑤|𝑤 ∈ 𝐿1 𝑒 𝑤 ∉ 𝐿2}; 
4) Complemento, �̅� = {𝑤|𝑤 ∈ Σ∗ ∖ 𝐿}; 
5) Concatenação, 𝐿1𝐿2 = {𝑢𝑣|𝑢 ∈ 𝐿1 , 𝑣 ∈ 𝐿2}; 
6) Potências, 𝐿0 = {𝜆}, 𝐿𝑛+1 = 𝐿𝑛𝐿, 𝑛 ≥ 0; 
7) Fecho de Kleene, 𝐿∗ = 𝐿0 ∪ 𝐿 ∪ 𝐿2 ∪ … ∪ 𝐿𝑛 ∪ … = ⋃ 𝐿𝑛𝑛≥0 ; 
8) Fecho positivo, 𝐿+ = 𝐿 ∪ 𝐿2 ∪ … ∪ 𝐿𝑛 ∪ … = ⋃ 𝐿𝑛𝑛≥1 ; 
9) Linguagem inversa, 𝐿𝑅 = {𝑤𝑅|𝑤 ∈ 𝐿}. 
 
Exemplo 2.8. Σ = {𝑎, 𝑏}, 𝐿1 = {𝜆, 𝑎, 𝑎𝑏}, 𝐿2 = {𝑏, 𝑏𝑏}. 
𝐿1𝐿2 = {𝑏, 𝑏𝑏, 𝑎𝑏, 𝑎𝑏𝑏, 𝑎𝑏𝑏𝑏}; 
𝐿2𝐿1 = {𝑏, 𝑏𝑏, 𝑏𝑎, 𝑏𝑏𝑎, 𝑏𝑎𝑏, 𝑏𝑏𝑎𝑏} (em geral 𝐿1𝐿2 ≠ 𝐿2𝐿1); 
 𝐿1
𝑅 = {𝜆, 𝑎, 𝑏𝑎}, 𝐿2
𝑅 = {𝑏, 𝑏𝑏}. 
 
 
 Linguagens Formais e Autómatos 
15 
Exemplo 2.9. Seja Σ um alfabeto. 
 Σ0 = {𝜆}; 
 Σ1 = Σ0Σ = {𝜆} Σ = Σ; 
 Σ2 = Σ1Σ = Σ Σ = {𝑤|𝑤 ∈ Σ∗ 𝑒 |𝑤| = 2}; 
 Σ3 = Σ2Σ = {𝑤|𝑤 ∈ Σ∗ 𝑒 |𝑤| = 3}; 
 ⋮ 
 Σ𝑛 = {𝑤|𝑤 ∈ Σ∗ 𝑒 |𝑤| = 𝑛}; 
 ⋮ 
 Σ∗ = {𝜆} ∪ Σ ∪ Σ2 ∪ … ∪ Σ𝑛 ∪ … = ⋃ Σ𝑛𝑛≥0 . 
 
Exemplo 2.10. {𝑎}∗ = {𝜆, 𝑎, 𝑎2, … , 𝑎𝑛, … }; 
{𝑎𝑏}∗ = {𝜆, 𝑎𝑏, (𝑎𝑏)2, … , (𝑎𝑏)𝑛, … }; 
∅∗ = {𝜆}; ∅+ = ∅; {𝜆}∗ = {𝜆}; {𝜆}+ = {𝜆}. 
𝜆, 𝑎𝑏,𝑐, 𝑎𝑏𝑎𝑏𝑐𝑐𝑐 ∈ {𝑎𝑏}∗{𝑐}∗; 
𝑎, 𝑎𝑏𝑐𝑎, 𝑎𝑐 ∉ {𝑎𝑏}∗{𝑐}∗. 
 
Teorema 2.2. Sejam 𝐿, 𝐿1, 𝐿2, 𝐿3 linguagens quaisquer 
1) 𝐿∅ = ∅𝐿 = ∅; 
2) {𝜆}𝐿 = 𝐿{𝜆} = 𝐿; 
3) (𝐿1 ∪ 𝐿2)𝐿3 = 𝐿1𝐿3 ∪ 𝐿2𝐿3; 
4) 𝐿1(𝐿2 ∪ 𝐿3) = 𝐿1𝐿2 ∪ 𝐿1𝐿3. 
As propriedades 3) e 4) generalizam-se a uma união infinita. 
 
 Linguagens Formais e Autómatos 
16 
Teorema 2.3. Seja 𝐿 uma linguagem. Então 
1) 𝜆 ∈ 𝐿+ ⇔ 𝜆 ∈ 𝐿; 
2) 𝐿+ = 𝐿𝐿∗ = 𝐿∗𝐿. 
Demonstração. 
1) (⇐) imediata pois 𝐿 ⊆ 𝐿+. 
(⇒)Suponhamos que 𝜆 ∈ 𝐿+. Então existe 𝑛 ≥ 1 tal que 𝜆 ∈ 𝐿𝑛. 
Logo, existem 𝑢1, 𝑢2, … , 𝑢𝑛 ∈ 𝐿 tais que 𝜆 = 𝑢1𝑢2 … 𝑢𝑛, donde |𝜆| = |𝑢1 … 𝑢𝑛| = |𝑢1| + ⋯ +
|𝑢𝑛| = 0 pelo que |𝑢𝑖| = 0 , 𝑖 = 1, 2, … , 𝑛. Assim, 𝑢𝑖 = 𝜆 , 𝑖 = 1, 2, … , 𝑛 e 𝜆 ∈ 𝐿. 
2) Temos 𝐿𝐿∗ = 𝐿(⋃ 𝐿𝑛𝑛≥0 ) = ⋃ (𝐿𝐿
𝑛)𝑛≥0 = ⋃ 𝐿
𝑛+1
𝑛≥0 = ⋃ 𝐿
𝑘
𝑘≥1 = 𝐿
+. 
𝐿∗𝐿 = 𝐿+ demonstra-se da mesma maneira. 
 
Problemas resolvidos 
 
2.1. Sejam Σ = {0, 1}, 𝐿1 = {10, 11}, 𝐿2 = {00, 1}. Achar 𝐿1 ∩ 𝐿2, 𝐿1 ∪ 𝐿2, 𝐿1𝐿2, 𝐿2𝐿1,
𝐿1
2, 𝐿1
𝑅. 
Solução. 𝐿1 ∩ 𝐿2 = ∅, 𝐿1 ∪ 𝐿2 = {10, 11, 00, 1}, 𝐿1𝐿2 = {1000, 101, 1100, 111}, 
𝐿2𝐿1 = {0010, 0011, 110, 111}, 𝐿1
2 = {1010, 1011, 1110, 1111}, 𝐿1
𝑅 = {01, 11}. 
 
2.2. Considera a palavra 𝑎𝑎𝑎𝑏𝑎 de alfabeto Σ = {𝑎, 𝑏}. Indica se tal palavra pertence ou não a 
cada uma das seguintes linguagens: 
a) {𝑎, 𝑏}∗; b) {𝑎𝑎𝑎, 𝑏𝑎𝑏} {𝑏𝑎, 𝑏𝑏}; c) {𝑎𝑎𝑎}∗ {𝑏}∗ {𝑎}; d) {𝑎}∗ {𝑏}∗ {𝑎}∗; 
e) {𝑎𝑎}∗ {𝑎}∗ {𝑎, 𝑏𝑎, 𝑏𝑏, 𝜆}. 
Solução. a) Sim ({𝑎, 𝑏}∗ − todas as palavras sobre {𝑎, 𝑏}); b) Sim; 
c) Sim 𝑎𝑎𝑎 ∈ {𝑎𝑎𝑎}∗ 𝑏 ∈ {𝑏}∗ 𝑎 ∈ {𝑎}; d) Sim 𝑎𝑎𝑎 ∈ {𝑎}∗ 𝑏 ∈ {𝑏}∗ 𝑎 ∈ {𝑎}; 
e) Sim 𝑎𝑎 ∈ {𝑎𝑎}∗ 𝑎 ∈ {𝑎}∗ 𝑏𝑎 ∈ {𝑎𝑎, 𝑏𝑎, 𝑏𝑏, 𝜆}. 
 Linguagens Formais e Autómatos 
17 
2.3. Para cada uma das seguintes afirmações sobre linguagens diz se é verdadeira ou falsa: 
a) 𝐿1𝐿2 = 𝐿2𝐿1; b) 𝐿∅ = ∅𝐿 = ∅; c) 𝐿
∗𝐿∗ = 𝐿∗; d) (𝐿1 ∪ 𝐿2)
∗ = 𝐿1
∗ ∪ 𝐿2
∗. 
Solução. a) Falso, 𝐿1 = {𝑎}, 𝐿2 = {𝑏} 𝐿1𝐿2 ≠ 𝐿2𝐿1; b) Verdadeiro; c) Verdadeiro; 
d) Falso, 𝐿1 = {𝑎}, 𝐿2 = {𝑏}. Então (𝐿1 ∪ 𝐿2)
∗ ≠ 𝐿1
∗ ∪ 𝐿2
∗. 
 
Problemas propostos 
 
2.4. Sejam Σ = {0, 1}, 𝐿1 = {00, 000}, 𝐿2 = {10, 110}. Achar 𝐿1 ∩ 𝐿2, 𝐿1𝐿2, 𝐿2𝐿1, 𝐿2
𝑅, 𝐿1
2, 
𝐿1
∗. 
2.5. Sejam 𝐿1, 𝐿2 duas linguagens sobre Σ. É verdadeiro ou falso que |𝐿1𝐿2| = |𝐿1| |𝐿2|? 
2.6. Seja Σ um alfabeto. Achar a cardinalidade de: 
a) Σ∗; b) Conjunto ℒ de todas as linguagens sobre Σ. 
2.7. Para cada uma das seguintes afirmações sobre linguagens diz se é verdadeira ou falsa: 
a) (𝐿∗)∗ = 𝐿∗; b) (𝐿1 ∩ 𝐿2)
∗ = 𝐿1
∗ ∩ 𝐿2
∗; c) (𝐿1𝐿2)
∗ = 𝐿1
∗𝐿2
∗; 
d) Se 𝐿1 ⊆ 𝐿2 então 𝐿1
∗ ⊆ 𝐿2
∗; e) Se 𝐿1 ⊂ 𝐿2 então 𝐿1
∗ ⊂ 𝐿2
∗. 
2.8. Seja Σ um alfabeto. Mostre que para quaisquer linguagens 𝐿1, 𝐿2, 𝐿3 ⊆ Σ
∗ 
a) 𝐿1(𝐿2 ∪ 𝐿3) = 𝐿1𝐿2 ∪ 𝐿1𝐿3; b) (𝐿1 ∪ 𝐿2)𝐿3 = 𝐿1𝐿3 ∪ 𝐿2𝐿3. 
2.9. Seja Σ um alfabeto. Mostre que para quaisquer linguagens 𝐿1, 𝐿2, 𝐿3 ⊆ Σ
∗ 
a) 𝐿1(𝐿2 ∩ 𝐿3) ⊆ 𝐿1𝐿2 ∩ 𝐿1𝐿3; b) (𝐿1 ∩ 𝐿2)𝐿3 ⊆ 𝐿1𝐿3 ∩ 𝐿2𝐿3. 
2.10.* Descreve informalmente a linguagem 𝐿 sobre Σ = {𝑎, 𝐴} definida recursivamente: 
(B): 𝐴 ∈ 𝐿; 
(PR): Se 𝑢 ∈ 𝐿 então 𝑎𝑢, 𝑢𝑎, 𝐴𝑢𝐴 ∈ 𝐿. 
 Linguagens Formais e Autómatos 
18 
2.11.* Demonstrar que 𝐿 = 𝐿∗ ⇔ 𝐿2 ⊆ 𝐿. 
(Nota: * significa exercício mais difícil) 
Respostas 
 
2.4. 𝐿1 ∩ 𝐿2 = {00, 000, 10, 110}; 𝐿1𝐿2 = {0010, 00110, 00010, 000110}; 
𝐿2𝐿1 = {1000, 10000, 11000, 110000}, 𝐿2
𝑅 = {01, 011}, 𝐿1
2 = {0000, 00000, 000000}, 
𝐿1
∗ = {𝜆, 00, 000, … , 0𝑛, … } = {𝜆} ∪ {0𝑛|𝑛 ≥ 2}. 
 
2.5. Em geral |𝐿1𝐿2| ≠ |𝐿1| |𝐿2| (Exemplo 2.8. |𝐿1| = 3, |𝐿2| = 2, |𝐿1𝐿2| = 5). 
 
2.6. a) |Σ∗| = ℵ0; b) |ℒ| = |𝑃(Σ
∗)| = ℂ. 
 
2.7. a) Verdadeiro. b) Falso (𝐿1 = {𝑎}, 𝐿2 = {𝑎𝑎}). c) Falso (𝐿1 = {𝑎}, 𝐿2 = {𝑎𝑎}). 
d) Verdadeiro. e) b) Falso (𝐿1 = ∅, 𝐿2 = {𝜆}). 
 
2.9. 𝐿1 = {𝑎, 𝑎𝑏}, 𝐿2 = {𝑏𝑐}, 𝐿3 = {𝑐}. 
𝐿1(𝐿2 ∩ 𝐿3) ⊂ 𝐿1𝐿2 ∩ 𝐿1𝐿3; 𝐿1(𝐿2 ∩ 𝐿3) = 𝐿1∅ = ∅; 𝐿1𝐿2 ∩ 𝐿1𝐿3 = {𝑎𝑏𝑐}. 
 
2.10. 𝐿 – todas as palavras sobre Σ = {𝑎, 𝐴} que tem um número ímpar de letras 𝐴. 
𝐿 = {𝑤|𝑤 ∈ {𝑎, 𝐴}∗ ∶ |𝑤|𝐴 é 𝑢𝑚 𝑛ú𝑚𝑒𝑟𝑜 í𝑚𝑝𝑎𝑟}. 
 
 Linguagens Formais e Autómatos 
19 
Capítulo 3 
 
Linguagens Regulares. Expressões Regulares 
 
Problema de representação finita de linguagens 
 
 Um problema que é muito importante na teoria de computação é o de representar 
linguagens, se possível por representações finitas, no sentido de uma representação ainda ser uma 
palavra sobre algum alfabeto Σ. 
 Obviamente, se se trata de uma linguagem finita o problema está resolvido, basta enumerar 
as suas palavras. Mas nem todas as linguagens são finitas. O conjunto de todas as palavras sobre 
Σ tem cardinalidade ℵ0 (|Σ
∗| = ℵ0). Por outro lado faz sentido exigir que linguagens diferentes 
tenham representações (palavras) diferentes. Mas a cardinalidade de todas as linguagens sobre Σ, 
é igual a ℂ (|𝑃(Σ∗)| = ℂ). Isto significa que nem todas as linguagens vão admitir uma tal 
representação finita. 
 Vamos neste capítulo especificar um método que descreva (representa) uma certa classe 
de linguagens que se chamam linguagens regulares. 
 
Linguagens Regulares (LR) 
 
Definição 3.1. Seja Σ um alfabeto 
(Base) ∅, {𝜆} e {𝑎} para cada 𝑎 ∈ Σ são linguagens regulares sobre Σ; 
(Passo Recursivo) Se 𝐿1, 𝐿2 são linguagens regulares sobre Σ então (𝐿1 ∪ 𝐿2), (𝐿1𝐿2) e (𝐿1)
∗ 
são linguagens regulares sobre Σ; 
(Fecho) As linguagens regulares são todas e apenas as obtidas por regras (Base) e (Passo 
Recursivo). 
 Linguagens Formais e Autómatos 
20 
Exemplo 3.1. Σ = {0, 1}. Mostrar que 𝐿 = {01, 110} é uma linguagem regular. 
Solução. 𝐿 = {01, 110} = {0} {1} ∪ ({1}{1}){0} pela Definição 3.1 é uma LR. 
Teorema 3.1. Qualquer linguagem finita 𝐿 é uma LR. 
Demonstração. Está claro que qualquer linguagem finita 𝐿 é união finita das concatenações 
finitas. Logo pela Definição 3.1 𝐿 é uma LR. 
Exemplo 3.2. Σ = {𝑎, 𝑏}. 
a) 𝐿1 − 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑑𝑒 𝑡𝑜𝑑𝑎𝑠 𝑎𝑠 𝑝𝑎𝑙𝑎𝑣𝑟𝑎𝑠 𝑠𝑜𝑏𝑟𝑒 Σ 𝑞𝑢𝑒 𝑐𝑜𝑛𝑡é𝑚 𝑠𝑢𝑏𝑝𝑎𝑙𝑎𝑣𝑟𝑎 "𝑏𝑏". 
b) 𝐿2 = {𝑎𝑏𝑤𝑏𝑎| 𝑤 ∈ 𝛴
∗}. 
Mostrar que 𝐿1 e 𝐿2 são LR’s. 
a) 𝐿1 = {𝑎, 𝑏}
∗{𝑏𝑏} {𝑎, 𝑏}∗; 
{𝑎, 𝑏}∗ = ({𝑎} ∪ {𝑏})∗ é uma LR (pela Definição 3.1); 
{𝑏𝑏} = {𝑏} {𝑏} é uma LR (pela Definição 3.1); 
b) TPC. 
 
Expressões Regulares (ER) 
 
Uma expressão regular é uma linguagem formal para definir uma representação finita das 
linguagens regulares. 
Definição 3.2. Seja Σ um alfabeto e Σ1 = Σ ∪ {∅, 𝜆, +,∙, 
∗, (, )}; 
(Base) ∅, 𝜆 e 𝑎 para cada 𝑎 ∈ Σ são expressões regulares sobre Σ1; 
(Passo Recursivo) Se 𝑟, 𝑠 são expressões regulares sobre Σ1 então (𝑟 + 𝑠), (𝑟𝑠) e (𝑟)
∗ são 
expressões regulares sobre Σ1; 
(Fecho) As expressões regulares são todas e apenas as obtidas por regras (Base) e (Passo 
Recursivo). 
 Linguagens Formais e Autómatos 
21 
Vamos retirar parêntesis, sempre que não haja ambiguidade considerando que “ ∗ ” precede “ ∙ ” e 
“ ∙ ” precede “+”. Omitiremos também o símbolo “ ∙ ”. Usaremos a notação 𝑟+ para representar a 
expressão regular 𝑟𝑟∗ ou 𝑟∗𝑟. 
Por exemplo, ER 0 + 10∗ significa (0 + (1 ⋅ ((0)∗))). 
Cada expressão regular 𝑟 vai representar uma linguagem regular 𝐿(𝑟). Basta interpretar os 
símbolos +, ∙ e ∗ como união, concatenação e fecho de Kleene. Com mais pormenores: 
𝐿(∅) = ∅; 
𝐿(𝜆) = {𝜆}; 
𝐿(𝑎) = {𝑎} para cada 𝑎 ∈ Σ; 
Se 𝑟 e 𝑠 são ER’s então 
𝐿(𝑟 + 𝑠) = 𝐿(𝑟) ∪ 𝐿(𝑠); 
𝐿(𝑟𝑠)= 𝐿(𝑟) 𝐿(𝑠); 
𝐿(𝑟∗) = 𝐿(𝑟)∗. 
Exemplo 3.3. Encontrar ER’s entre as palavras seguintes (Σ = {𝑎, 𝑏}): 
1) 𝑎; 
2) 𝑎 + 𝜆; 
3) 𝑎 +; 
4) 𝑎 + 𝑏𝑎∗; 
5) (𝑎 + 𝑏)∗; 
6) 𝑎) + ( ∗. 
Solução. 
1), 2), 4), 5) são ER’s; 
3), 6) não são ER’s. 
 
 Linguagens Formais e Autómatos 
22 
Exemplo 3.4. Achar a linguagem que representa a ER (𝑎 + 𝑏)∗𝑎. 
Solução. 
𝐿((𝑎 + 𝑏)∗𝑎) = 𝐿((𝑎 + 𝑏)∗) 𝐿(𝑎) = 𝐿(𝑎 + 𝑏)∗ 𝐿(𝑎) = (𝐿(𝑎) ∪ 𝐿(𝑏))
∗
𝐿(𝑎) =
({𝑎} ∪ {𝑏})∗{𝑎} = {𝑎, 𝑏}∗{𝑎} = {𝑤|𝑤 ∈ {𝑎, 𝑏}∗ 𝑒 𝑡𝑒𝑚 𝑠𝑢𝑓𝑖𝑥𝑜 𝑎}. 
 
Propriedades das ER’s 
 
Definição 3.3. Duas expressões regulares 𝑟 e 𝑠 são equivalentes se elas representam a mesma 
linguagem. Neste caso usamos a notação 𝑟 ≡ 𝑠. Assim, 
𝑟 ≡ 𝑠 ⇔ 𝐿(𝑟) = 𝐿(𝑠). 
Exemplo 3.5. Mostrar que se 𝑟 é uma ER, então 𝑟 ≡ 𝑟 + ∅ ≡ ∅ + 𝑟. 
Solução. 
𝐿(𝑟 + ∅) = 𝐿(𝑟) ∪ 𝐿(∅) = 𝐿(𝑟) ∪ ∅ = 𝐿(𝑟). 
Logo, 𝑟 ≡ 𝑟 + ∅ . Analogamente, 𝑟 ≡ ∅ + 𝑟. 
Teorema 3.2. (Propriedades das ER’s) 
Sejam 𝑟, 𝑠, 𝑡 ER’s. Então, 
1) (𝑟𝑠) 𝑡 ≡ 𝑟(𝑠𝑡); 
2) (𝑟 + 𝑠) + 𝑡 ≡ 𝑟 + (𝑠 + 𝑡); 
3) 𝑟 + 𝑠 ≡ 𝑠 + 𝑟; 
4) 𝑟 + 𝑟 ≡ 𝑟; 
5) 𝑟(𝑠 + 𝑡) ≡ 𝑟𝑠 + 𝑟𝑡; 
6) (𝑟 + 𝑠)𝑡 ≡ 𝑟𝑡 + 𝑠𝑡; 
7) 𝑟∅ ≡ ∅𝑟 ≡ ∅; 
8) 𝑟𝜆 ≡ 𝜆𝑟 ≡ 𝑟; 
9) (𝑟∗)∗ ≡ 𝑟∗; 
10) (𝜆 + 𝑟)∗ ≡ 𝑟∗; 
11) 𝑟∗ ≡ 𝜆 + 𝑟𝑟∗ ≡ 𝜆 + 𝑟+; 
 Linguagens Formais e Autómatos 
23 
12) (𝑟 + 𝑠)∗ ≡ (𝑟∗ + 𝑠∗)∗. 
Demonstração. 
7) 𝐿(𝑟∅) = 𝐿(𝑟) 𝐿(∅) = 𝐿(𝑟)∅ = ∅ = 𝐿(∅). 
9) 𝐿((𝑟∗)∗) = 𝐿(𝑟∗)∗ = (𝐿(𝑟∗))
∗
= (𝑝𝑟𝑜𝑏𝑙𝑒𝑚𝑎 2.7(𝑎)) = 𝐿(𝑟)∗ = 𝐿(𝑟∗). 
 
Problemas propostos 
 
3.1. Abreviar as parêntesis: 
ER Abreviação 
(𝒓 + 𝒔) 
((𝒓 + 𝒔) + 𝒕) 
((𝒓𝒔) 𝒕) 
((𝒓𝒔) + (𝒓𝒕)) 
((𝒓∗)∗) 
((𝟎∗)(𝟏𝟏)) 
(((𝟎∗)(𝟏𝟏)) + ((𝟏𝟎)𝟏)) 
(((𝟎 + 𝟏)∗) ((𝟎𝟎)𝟎)) + ((𝟎𝟏)∗(𝟎𝟏))) 
 
 
3.2. Achar a linguagem que representa cada ER. 
ER 𝑳(𝒓) 
0 + 1 
0∗ 
0∗11 
(0 + 1)∗ 
1∗0(0 + 1)∗ 
 Linguagens Formais e Autómatos 
24 
 
3.3. Achar ER’s que representam as linguagens seguintes: 
a) 𝐿 = {0, 01, 000}; 
b) 𝐿 = {000, 00000}∗; 
c) 𝐿 = {03𝑛+1| 𝑛 ≥ 0}; 
d) 𝐿 = { 𝑤|𝑤 ∈ {0, 1}∗ 𝑛ã𝑜 𝑡𝑒𝑚 1′𝑠 𝑒 𝑡𝑒𝑚 𝑢𝑚 𝑛ú𝑚𝑒𝑟𝑜 𝑝𝑎𝑟 𝑑𝑒 0′𝑠}; 
e) 𝐿 = {01𝑛0| 𝑛 ≥ 3}; 
f) 𝐿 = {𝑤|𝑤 é 𝑢𝑚 𝑛ú𝑚𝑒𝑟𝑜 𝑏𝑖𝑛á𝑟𝑖𝑜 𝑞𝑢𝑒 é 𝑝𝑜𝑡ê𝑛𝑐𝑖𝑎 𝑑𝑒 4}. 
 
Respostas 
3.1. 
ER Abreviação 
(𝑟 + 𝑠) 𝑟 + 𝑠 
((𝑟 + 𝑠) + 𝑡) 𝑟 + 𝑠 + 𝑡 
((𝑟𝑠) 𝑡) 𝑟𝑠𝑡 
((𝑟𝑠) + (𝑟𝑡)) 𝑟𝑠 + 𝑟𝑡 
((𝑟∗)∗) (𝑟∗)∗ 
((0∗)(11)) 0∗11 
(((0∗)(11)) + ((10)1)) 0∗11 + 101 
(((0 + 1)∗) ((00)0)) + (((01)∗(01))) (0 + 1)∗000 + (01)∗01 
 
3.2. 
ER 𝑳(𝒓) 
0 + 1 {0, 1} 
0∗ {𝜆, 0, … , 0𝑛, … } 
0∗11 {11, 011, … , 0𝑛11, … } 
(0 + 1)∗ {𝜆, 0, 1, 00, 01, 10, 11, 000, … } 
1∗0(0 + 1)∗ { 𝑤|𝑤 ∈ {0, 1}∗ 𝑒 𝑡𝑒𝑚 𝑎𝑙𝑔𝑢𝑚 0} 
 Linguagens Formais e Autómatos 
25 
 
3.3. 
a) 0 + 01 + 000. 
b) (000 + 00000)∗. 
c) 0(000)∗. 
d) (00)∗. 
e) 0(111)+0. 
f) 1(00)+. 
 
 Linguagens Formais e Autómatos 
26 
Capítulo 4 
 
Autómatos Finitos Determinísticos 
 
Um autómato finito deteminístico é um modelo matemático de um sistema cujo 
comportamento pode ser descrito como uma sequência determinista, discreta e linear de 
acontecimentos (estímulo - resposta) no tempo. 
Num dado momento o sistema encontra-se em alguma das suas configurações internas que 
são em número finito. Tais configurações, ditas estados, funcionam como memória sobre passos 
anteriores, e permitem determinar o comportamento do sistema para estímulos subsequentes. 
Considera-se que cada estímulo (símbolo de entrada) determina um e só um estado 
posterior, ou seja tem um efeito determinístico. O estado seguinte é uma função (no sentido 
matemático) do estado actual e do símbolo de entrada. 
 
 
 
 
 
 
Vamos dar a definição formal 
Definição 4.1. Um autómato finito determinístico (AFD) é um sistema de cinco elementos 
𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) onde: 
1) 𝑄 conjunto finito (não vazio) de estados; 
2) Σ alfabeto de entrada (input); 
3) 𝛿: 𝑄 × Σ → 𝑄 função de transição; 
4) 𝐹 ⊆ 𝑄 conjunto de estados finais (aceitadores); 
5) 𝑞0 ∈ 𝑄 estado inicial. 
 a . . . 
 Estados 
Cursor
 
Fita
 
Controlo Central
 
 Linguagens Formais e Autómatos 
27 
Exemplo 4.1. 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) 
𝑄 = {𝑞0, 𝑞1, 𝑞2, 𝑞3}, Σ = {0,1}, 𝐹 = {𝑞1, 𝑞2}, 𝑞0 = 𝑞0. 
𝛿 0 1 
→ 𝑞0 𝑞1 𝑞3 
∗ 𝑞1 𝑞2 𝑞3 
∗ 𝑞2 𝑞2 𝑞2 
𝑞3 𝑞3 𝑞3 
 
Diagrama de transição de um AFD 
 
A um AFD fica associado um digrafo etiquetado: 
a) os vértices correspondem aos estados do autómato; 
b) a transição de estado 𝑞 para estado 𝑝 pelo símbolo de entrada 𝑎 corresponde um arco 
etiquetado por 𝑎 do vértice 𝑞 para o vértice 𝑝: 
 
 
 
c) Os estados finais são representados por duas circunferências: 
 
 
 
d) O estado inicial é apontado por uma seta: 
 
 
 
Este digrafo designa-se por diagrama de transição. 
 
𝑎 
𝑞 𝑝 𝛿(𝑞, 𝑎) = 𝑝 ⟹ 
𝑞 ∈ 𝐹 ⟹ 𝑞 
𝑞0 ⟹ 𝑞0 
 Linguagens Formais e Autómatos 
28 
Exemplo 4.2. Construir o diagrama de transição para o AFD 𝐴 do Exemplo 4.1. 
Solução. 
 
 
 
 
 
 
 
 
 
Caminho de computação 
 
Como a função de transição 𝛿 é bem-definida no conjunto 𝑄 × Σ, o diagrama de transição 
tem propriedade seguinte: para cada vértice (estado) 𝑞 e para cada letra (símbolo) de entrada 𝑎 
existe único arco com etiqueta 𝑎 que sai de 𝑞. 
Este implica que para cada palavra 𝑤 sobre Σ existe único caminho que começa em 𝑞0 e 
cujas etiquetas formam a palavra 𝑤. 
 Este caminho chama-se caminho de computação de palavra 𝑤 em autómato 𝐴 ou caminho 
que representa a palavra 𝑤 em autómato 𝐴. 
Exemplo 4.3. Achar caminho de computação de palavra 𝑤 em AFD 𝐴 do Exemplo 4.2. 
1) 𝑤 = 00 ; 2) 𝑤 = 011. 
Solução. 
1) 𝑤 = 00 
 
(𝑞0, 𝑞1, 𝑞2) − caminho de computação de 𝑤 = 00. 
0 0 
1 
𝑞0 
𝑞3 
𝑞2 𝑞1 
0,1 
0,1 
1 
0 
𝑞0 𝑞1 𝑞2 
0 
 Linguagens Formais e Autómatos 
29 
2) 𝑤 = 011 
 
 
 
(𝑞0, 𝑞1, 𝑞3, 𝑞3) − caminho de computação de 𝑤 = 011. 
 
Extensão da função de transição 
 
Definição 4.2. A extensão da função de transição 𝛿 de um AFD 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) é a função 
𝛿: 𝑄 × Σ∗ → 𝑄 tal que 
1) 𝛿(𝑞, 𝜆) = 𝑞, 𝛿(𝑞, 𝑎) = 𝛿(𝑞, 𝑎), para todos 𝑞 ∈ 𝑄 e 𝑎 ∈ Σ; 
2) para todos 𝑤 ∈ Σ∗ e 𝑎 ∈ Σ, 𝛿(𝑞, 𝑤𝑎) = 𝛿(𝛿(𝑞, 𝑤), 𝑎). 
Exemplo 4.4. Achar 𝛿(𝑞0, 010) para AFD do Exemplo 4.2. 
Solução. 
𝛿(𝑞0, 010) = 𝛿(𝛿(𝑞0, 01), 0) = 𝛿(𝛿(𝛿(𝑞0, 0), 1), 0) = 𝛿(𝛿(𝛿(𝑞0, 0), 1), 0) = 
𝛿(𝛿(𝑞1, 1), 0) = 𝛿(𝑞3, 0) = 𝑞3. 
Nota 4.1. Para achar o resultado de 𝛿(𝑞, 𝑤) é preciso considerar o caminho no diagrama de 
transição do autómato que começa no estado 𝑞 e as etiquetas de arcos correspondem as letras de 
palavra 𝑤. 
Exemplo 4.5. Achar 𝛿(𝑞0, 010) para AFD do Exemplo 4.2 usando Nota 4.1. 
Solução. 
 
 
Logo 𝛿(𝑞0, 010) = 𝑞3. 
0 
𝑞0 𝑞1 𝑞3 
1 
𝑞3 
1 
0 
𝑞0 𝑞1 𝑞3 
1 
𝑞3 
0 
 Linguagens Formais e Autómatos 
30 
Linguagem reconhecida (aceite) por um AFD 
 
Definição 4.3. Diz-se que um AFD 𝐴 reconhece (aceita) uma palavra 𝒘 quando o caminho de 
computação de 𝑤 termina num estado final. 
 A linguagem aceite ou reconhecida pelo AFD 𝑨 é o conjunto de todas palavras em Σ∗ 
que são aceites pelo AFD 𝐴 o qual denotamos por 𝐿(𝐴). 
Mais formalmente. Seja 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) um AFD. O conjunto de palavras𝐿(𝐴) = {𝑤 | 𝑤 ∈ Σ∗ 𝑒 𝛿(𝑞0, 𝑤) ∈ 𝐹} 
chama- se linguagem reconhecida (ou aceite) pelo 𝑨. Dizemos também que uma linguagem 𝑳 é 
aceite pelo autómato 𝑨 se e só se 𝐿 = 𝐿(𝐴). 
Definição 4.4. Diz-se que dois AFD’s 𝐴1 e 𝐴2 são equivalentes se e só se 𝐿(𝐴1) = 𝐿(𝐴2). Neste 
caso escrevemos que 𝐴1~𝐴2: 
𝐴1~𝐴2 ⟺ 𝐿(𝐴1) = 𝐿(𝐴2). 
 
Exemplo 4.6. Achar ER para 𝐿(𝐴) onde 𝐴 é o AFD do Exemplo 4.2. 
Solução. Se a palavra 𝑤 tem prefixo 1 ou 01 o autómato entra no estado 𝑞3 e nunca pode sair deste 
estado e não aceita 𝑤. Por outro lado, o autómato aceita 0 e todas as palavras 𝑤 que têm prefixo 
00. Assim, ER para 𝐿(𝐴) é 0 + 00(0 + 1)∗. 
Neste caso vamos escrever 𝐿(𝐴) = 0 + 00(0 + 1)∗. 
Existem dois tipos de problemas mais importantes ligados com autómatos e linguagens: 
1) para uma linguagem 𝐿 achar AFD 𝐴 (se existir) tal que 𝐿 = 𝐿(𝐴); 
2) para um AFD 𝐴 achar 𝐿(𝐴). 
 
Exemplo 4.7. Achar AFD 𝐴 tal que 𝐿(𝐴) = {𝜆}, Σ = {0,1}. 
 Linguagens Formais e Autómatos 
31 
Solução. 
 
 
 
Nota 4.2. Se 𝜆 ∈ 𝐿(𝐴) então o estado inicial 𝑞0 de 𝐴 deve ser final. 
 
Exemplo 4.8. Achar AFD 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗, Σ = {0,1}. 
Solução. 
 
 
 
Exemplo 4.9. Achar AFD 𝐴 que aceite todas as palavras sobre alfabeto Σ = {0,1} que têm um 
número ímpar de letras 1. 
Solução. Este AFD tem dois estados 𝑞0 e 𝑞1 onde 𝑞0 significa que palavra de entrada tem um 
número par de 1’s e 𝑞1 significa que palavra de entrada tem um número ímpar de 1’s. Assim, 
 
 
 
 
 
 
Exemplo 4.10. (Prefixo) 
Achar AFD 𝐴 tal que 𝐿(𝐴) = 010(0 + 1)∗. 
Solução. Como 010 ∈ 𝐿(𝐴), o autómato deve ter um caminho de 𝑞0 para um estado final 
etiquetado por letras 0, 1, 0: 
 
𝑞1 𝑞0 
0,1 
0,1 
𝐴: 
𝑞0 
0,1 
𝐴: 
𝐴: 𝑞0 𝑞1 
1 0 0 
1 
 Linguagens Formais e Autómatos 
32 
 
 
Se aparecer outro prefixo, então deve existir um caminho para um novo estado que não é final e 
de onde o autómato não pode sair. Assim, 
 
 
 
 
 
 
 
 
 
Exemplo 4.11. (Subpalavra) 
Achar AFD 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗110(0 + 1)∗. 
Solução. 
110 ∈ 𝐿(𝐴). Logo deve existir um caminho de 𝑞0 para um estado final etiquetado por letras 1, 1, 
0: 
 
 
 
Se o autómato entrou no 𝑞3 a palavra já tem 110 e pertence a 𝐿(𝐴) para qualquer sufixo. Assim, 
 
 
 
 
0 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
0 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
𝑞4 
0,1 
0 
0,1 
1 1 
𝐴: 
1 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
1 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
0,1 
 Linguagens Formais e Autómatos 
33 
Os estados do autómato tem os sentidos seguintes: 
𝑞0 − a palavra de entrada ainda não tem nenhuma parte (ou 𝜆) da subpalavra 110; 
𝑞1 − a palavra de entrada tem primeiro 1 da subpalavra 110; 
𝑞2 − a palavra de entrada tem 11 da subpalavra 110; 
𝑞3 − a palavra de entrada tem subpalavra 110. 
Agora se autómato fica no estado 𝑞0 e aparece letra 0, então a palavra de entrada continua com 
nenhuma parte de subpalavra 110 (ou 𝜆): 
 
 
 
 
Se o autómato fica no estado 𝑞1 e aparece letra 0, então a palavra de entrada tem sufixo 10 e não 
tem nenhuma parte de subpalavra 110 no sufixo (𝑞0). Logo, o autómato tem que ir para 𝑞0: 
 
 
 
 
 
Se o autómato fica no estado 𝑞2 e aparece letra 1, então a palavra de entrada tem sufixo 111 e 
tem a parte 11 de subpalavra 110. Logo o autómato continua a ficar em 𝑞2: 
 
 
 
 
 
É o nosso AFD 𝐴. 
1 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
0,1 
0 
1 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
0,1 
0 
0 
1 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
0,1 
0 
0 
1 
𝐴: 
 Linguagens Formais e Autómatos 
34 
Exemplo 4.12. (Sufixo) 
Achar AFD 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗101. 
Solução. 
101 ∈ 𝐿(𝐴). Logo deve existir um caminho de 𝑞0 para um estado final etiquetado por letras 1, 0, 
1: 
 
 
 
Os estados do autómato tem os sentidos seguintes: 
𝑞0 − a palavra de entrada ainda não tem nenhuma parte (ou 𝜆) do sufixo 101; 
𝑞1 − a palavra de entrada tem primeiro 1 do sufixo 101; 
𝑞2 − a palavra de entrada tem 10 da sufixo 101; 
𝑞3 − a palavra de entrada tem sufixo 101. 
Agora se autómato fica no estado 𝑞0 e aparece letra 0, então a palavra de entrada continua com 
nenhuma parte de sufixo 101 (ou 𝜆): 
 
 
 
 
Se o autómato fica no estado 𝑞1 e aparece letra 1, então a palavra de entrada tem sufixo 11 e tem 
primeiro 1 (𝑞1) de sufixo 101: 
 
 
 
 
 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
0 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
1 0 
 Linguagens Formais e Autómatos 
35 
Se o autómato fica no estado 𝑞2 e aparece letra 0, então a palavra de entrada tem sufixo 100 e não 
tem nenhuma parte do sufixo 101 (𝑞0): 
 
 
 
 
 
 
Se o autómato fica no estado 𝑞3 e aparece letra 0, então a palavra de entrada tem sufixo 1010 e 
tem 10 do sufixo 101 (𝑞2): 
 
 
 
 
 
 
Se o autómato fica no estado 𝑞3 e aparece letra 1, então a palavra de entrada tem sufixo 1011 e 
tem primeiro 1 do sufixo 101 (𝑞1): 
 
 
 
 
 
 
É o nosso AFD 𝐴. 
 
 
 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
1 0 
0 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
1 0 
0 
0 
1 
𝑞0 𝑞1 𝑞3 
0 
𝑞2 
1 
1 0 
0 
0 
1 
𝐴: 
 Linguagens Formais e Autómatos 
36 
Teorema 4.1. Sejam 𝐴1 = (𝑄1, Σ, 𝛿1, 𝐹1, 𝑞0) e 𝐴2 = (𝑄2, Σ, 𝛿2, 𝐹2, 𝑝0) dois AFD’s. Então 
existem AFD’s 𝐴3, 𝐴4, 𝐴5, 𝐴6 tais que: 
a) 𝐿(𝐴3) = Σ
∗ ∖ 𝐿(𝐴1) = 𝐿(𝐴1)̅̅ ̅̅ ̅̅ ̅̅ ; 
b) 𝐿(𝐴4) = 𝐿(𝐴1) ∩ 𝐿(𝐴2); 
c) 𝐿(𝐴5) = 𝐿(𝐴2) ∖ 𝐿(𝐴1); 
d) 𝐿(𝐴6) = 𝐿(𝐴1) ∪ 𝐿(𝐴2). 
Demonstração. 
1) 𝐴3 = (𝑄1, Σ, 𝛿1, 𝑄1 ∖ 𝐹1, 𝑞0). É facil verificar que 𝐿(𝐴3) = 𝐿(𝐴1)̅̅ ̅̅ ̅̅ ̅̅ . 
2) 𝐴4 = (𝑄1 × 𝑄2, Σ, 𝛿, 𝐹1 × 𝐹2, (𝑞0, 𝑝0)) onde 𝛿 ((𝑞𝑖 , 𝑝𝑗), 𝑎) = (𝛿1(𝑞𝑖 , 𝑎), 𝛿2(𝑝𝑗 , 𝑎)), 
𝑞𝑖 ∈ 𝑄1, 𝑝𝑗 ∈ 𝑄2, 𝑎 ∈ Σ. 
3) 𝐿(𝐴5) = 𝐿(𝐴2) ∖ 𝐿(𝐴1) = 𝐿(𝐴2) ∩ (Σ
∗ ∖ 𝐿(𝐴1)) = 𝐿(𝐴2) ∩ 𝐿(𝐴1)̅̅ ̅̅ ̅̅ ̅̅ = 
𝐿(𝐴2) ∩ 𝐿(𝐴3). 
4) 𝐴4 = (𝑄1 × 𝑄2, Σ, 𝛿, (𝐹1 × 𝑄2) ∪ (𝑄1 × 𝐹2), (𝑞0, 𝑝0)) onde 𝛿 ((𝑞𝑖 , 𝑝𝑗), 𝑎) =
(𝛿1(𝑞𝑖 , 𝑎), 𝛿2(𝑝𝑗 , 𝑎)) , 𝑞𝑖 ∈ 𝑄1, 𝑝𝑗 ∈ 𝑄2, 𝑎 ∈ Σ. 
 
Problemas resolvidos 
 
4.1. Achar AFD 𝐴 que aceite todas as palavras sobre Σ = {0,1} que não têm sufixo 10. 
Solução. Vamos usar Teorema 4.1 (1). 
No inicio vamos construir AFD 𝐴1 tal que 𝐿(𝐴) = (0 + 1)
∗10. 
E depois AFD 𝐴: 𝐿(𝐴) = 𝐿(𝐴1)̅̅ ̅̅ ̅̅ ̅̅ . 
 
 
 
 
1 
𝑞0 𝑞1 𝑞2 
0 
1 0 
0 
1 
𝐴1: 
 Linguagens Formais e Autómatos 
37 
 
 
 
 
 
 
4.2. Achar AFD 𝐴 que aceite todas as palavras binárias que têm subpalavra 00 ou sufixo 01. 
 
Solução. No início vamos construir AFD’s 𝐴1 e 𝐴2 tais que 𝐿(𝐴1) = (0 + 1)
∗00(0 + 1)∗ e 
𝐿(𝐴2) = (0 + 1)
∗01. Depois, usando Teorema 4.1 (4), 𝐴: 
 
𝐿(𝐴) = (0 + 1)∗00(0 + 1)∗ + (0 + 1)∗01 ≡ (0 + 1)∗(00(0 + 1)∗ + 01). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 
𝑞2 
0 
1 0 
0 
1 
𝐴: 𝑞1 𝑞0 
1 
𝑞0 𝑞1 𝑞2 
0 
1 
0 
0,1 
𝐴1: 
0 
𝑝0 𝑝1 𝑝2 
1 
0 1 
1 
0 
𝐴2: 
 Linguagens Formais e Autómatos 
38 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Simplificando, 
 
 
 
 
 
 
 
 
 
 
 
 
1 
𝑞0, 𝑝0 𝑞0, 𝑝1 𝑞0, 𝑝2 
1 
1 
0 
1 
𝑞1, 𝑝0 𝑞1, 𝑝1 
𝑞2, 𝑝2 𝑞2, 𝑝0 
𝑞1, 𝑝2 
𝑞2, 𝑝1 
1 
0 
1 
1 
0 
0 
0 
1 
1 
0 
0 
0 
0 
𝑞0, 𝑝0 𝑞0, 𝑝2 
1 
1𝐴: 
𝑞1, 𝑝1 
𝑞2, 𝑝2 𝑞2, 𝑝0 𝑞2, 𝑝1 
0 
1 
1 
0 
0 
1 
1 
0 
0 
0 
 Linguagens Formais e Autómatos 
39 
Também, podemos construir AFD 𝐴 só a partir do estado inicial (𝑞0, 𝑝0). 
 
 
 
 
 
 
 
 
 
 
 
4.3. Achar ER para 𝐿(𝐴) onde 
 
 
 
 
 
Solução. É claro que 0∗ ⊆ 𝐿(𝐴) e 𝑤 ∈ 𝐿(𝐴) sse o número de ocorrências de 1 é um múltiplo de 
4. Assim, 𝐿(𝐴) = 0∗(10∗10∗10∗10∗)∗. 
 
Problemas propostos 
 
4.4. Achar AFD 𝐴 tal que 𝐿(𝐴) = ∅, Σ = {0,1}. 
4.5. Achar AFD 𝐴 que aceite todas as palavras sobre Σ = {0,1} que têm um número par de 0’s. 
4.6. Achar AFD 𝐴 tal que 𝐿(𝐴) = {𝑏𝑛| 𝑛 ≥ 0}, Σ = {𝑎, 𝑏}. 
𝑞0, 𝑝0 
𝑞0, 𝑝2 
1 
1 
𝐴: 
𝑞1, 𝑝1 
𝑞2, 𝑝2 𝑞2, 𝑝0 
𝑞2, 𝑝1 
0 
1 
1 
0 
0 
1 
1 
0 0 
0 
1 
𝑞3 𝑞1 𝑞0 
1 
𝑞2 
1 
0 0 
1 
0 0 
𝐴: 
 Linguagens Formais e Autómatos 
40 
4.7. Achar AFD 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗10101(0 + 1)∗. 
4.8. Achar AFD 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗10101(0 + 1)∗̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ ̅̅ . 
4.9. 
a) Construir o diagrama de transição de AFD 𝐴; 
b) Achar os caminhos de computação para as palavras 
𝑤1 = 001, 𝑤2 = 101; 
c) Achar a linguagem 𝐿(𝐴). 
 
4.10. 
a) Construir o diagrama de transição de AFD 𝐴; 
b) Achar os caminhos de computação para as palavras 
𝑤1 = 001, 𝑤2 = 101; 
c) Achar a linguagem 𝐿(𝐴). 
 
4.11. Achar AFD 𝐴 que aceite todas as palavras binárias que têm um número par de 0’s e um 
número ímpar de 1’s. 
4.12. Construir um AFD 𝐴 que aceite todas as palavras sobre Σ = {𝑎, 𝑏} que: 
a) tem subpalavra “aa”; 
b) tem sufixo “ba”; 
c) não tem sufixo “ba”; 
d) tem subpalavra “aa” e sufixo “ba”. 
 
Respostas 
 
4.4. 
 
 𝛿 0 1 
 → 𝑞0 𝑞1 𝑞2 
𝐴: ∗ 𝑞1 𝑞1 𝑞1 
 𝑞2 𝑞2 𝑞2 
 𝛿 0 1 
 → 𝑞0 𝑞1 𝑞0 
𝐴: 𝑞1 𝑞2 𝑞0 
 ∗ 𝑞2 𝑞2 𝑞2 
𝑞0 
0,1 
𝐴: 𝑞1 
0,1 
 Linguagens Formais e Autómatos 
41 
4.5. 
 
 
 
 
4.6. 
 
 
 
 
 
4.7. 
 
 
 
 
 
 
 
4.8. 
 
 
 
 
 
 
 
 
𝑞0 
1 
𝐴: 𝑞1 
1 
0 
0 
𝑞0 
b 
𝐴: 𝑞1 
a,b 
a 
1 
𝑞0 𝑞1 𝑞5 
0 
𝑞2 
1 
1 
0 
0 
0 
1 𝐴: 𝑞3 𝑞4 
0 1 0,1 
1 
𝑞5 
0 1 
1 
0 
0 
0 
1 𝐴: 
0 1 0,1 
𝑞0 𝑞1 𝑞2 𝑞3 𝑞4 
 Linguagens Formais e Autómatos 
42 
4.9. 
a) 
 
 
 
 
 
b) 𝑤1 = 001, 
 ; 
 
 
 𝑤2 = 101, 
 . 
 
c) 𝐿(𝐴) = 0(0 + 1)∗. 
 
4.9. 
a) 
 
 
 
 
b) 𝑤1 = 001, 
 ; 
 
 
 𝑤2 = 101, 
 . 
c) 𝐿(𝐴) = (0 + 1)∗00(0 + 1)∗. 
0,1 
𝑞0 𝑞2 𝑞1 
1 
0 
0,1 
𝐴: 
0 
𝑞0 𝑞1 𝑞1 
0 
𝑞1 
1 
1 
𝑞0 𝑞2 𝑞2 
0 
𝑞2 
1 
0 
𝑞0 𝑞1 𝑞2 
0 
𝑞2 
1 
1 
𝑞0 𝑞0 𝑞1 
0 
𝑞0 
1 
1 
𝑞0 𝑞1 𝑞2 
0 
1 
0 
0,1 
𝐴: 
 Linguagens Formais e Autómatos 
43 
4.11. 
 
 
 
 
 
 
 
 
4.12. 
 a) 
 
 
 
 
 
 b) 
 
 
 
 
 
 
c) 
 
 
 
 
𝑞0, 𝑝0 
𝑞1, 𝑝0 
1 
1 
𝐴: 
𝑞1, 𝑝1 
𝑞0, 𝑝1 
0 
0 
1 
1 
0 0 
b 
𝑞0 𝑞1 𝑞2 
a 
b 
a 
a,b 
b 
𝑝2 
a 
b a 
a 
b 
𝑝1 𝑝0 
b 
𝑝2 
a 
b a 
a 
b 
𝑝1 𝑝0 
 Linguagens Formais e Autómatos 
44 
d) 
 
 
 
 
 
 
 
 
 
 
 
 
𝑞0, 𝑝0 
𝑞1, 𝑝0 
b 
a 
𝑞0, 𝑝1 
𝑞2, 𝑝1 𝑞2, 𝑝0 
𝑞1, 𝑝2 
b a 
a 
a 
a 
b 
b 
b 
a 
b 
𝑞2, 𝑝2 
a b 
 Linguagens Formais e Autómatos 
45 
Capítulo 5 
 
Autómatos Finitos Não Determinísticos com 𝝀 – arcos 
 
Definição 5.1. Um autómato finito não determinístico com 𝝀–arcos (AFND – 𝜆) é um sistema 
de cinco elementos 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) onde: 
1) 𝑄 conjunto finito (não vazio) de estados; 
2) Σ alfabeto de entrada (input); 
3) 𝛿: 𝑄 × (Σ ∪ {𝜆}) → 𝑃(𝑄) função de transição; 
4) 𝐹 ⊆ 𝑄 conjunto de estados finais (aceitadores); 
5) 𝑞0 ∈ 𝑄 estado inicial. 
É claro que um AFD é um caso particular de AFND – 𝜆. 
Exemplo 5.1. 
 
 
 
 
 
 
 
 
 
 
Para uma palavra 𝑤 um AFND – 𝜆 pode ter mais que um (ou nenhum) caminho de computação. 
Por exemplo, 𝑤 = 01 AFND – 𝜆 do Exemplo 5.1. 
 
 
𝛿 0 1 𝜆 
→ 𝑞0 ∅ {𝑞0, 𝑞1} {𝑞1} 
𝑞1 {𝑞2} {𝑞1, 𝑞2} ∅ 
∗ 𝑞2 {𝑞2} ∅ {𝑞1} 
𝑞0 𝑞1 𝑞2 
0 
1 
1 
0 𝜆 1 1 
𝜆 
𝜆 
𝑞0 𝑞1 
0 
𝑞2 
1 𝜆 
𝑞1 𝑞1 
 Linguagens Formais e Autómatos 
46 
 
 
 
 
 
Assim, neste caso existem três caminhos diferentes. Também podemos dizer que existe árvore de 
computação: 
 
 
 
 
 
 
Definição 5.2. Diz-se que um AFND – 𝜆 𝐴 reconhece (ou aceita) uma palavra 𝑤 quando pelo 
menos um caminho de computação de 𝑤 termina num estado final (ou quando pelo menos uma 
folha da árvore de computação de 𝑤 pertence a 𝐹). 
 A linguagem aceite (ou reconhecida) pelo AFND – 𝜆 𝐴 é o conjunto de todas as palavras 
que são aceites pelo autómato, a qual denotamos por 𝐿(𝐴). 
Exemplo 5.2. Achar AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = (0 + 1)∗010(0 + 1)∗. 
Solução. 
010 ∈ 𝐿(𝐴). Deve existir um caminho de computação desta palavra para um estado final 
 
 
 
 Se uma 𝑤 ∈ 𝐿(𝐴) então 𝑤 tem a forma onde 𝑢, 𝑣 ∈ {0, 1}∗. 
 
𝑤 = 𝑢 0 1 0 𝑣 
𝜆 
𝑞0 𝑞1 
0 
𝑞2 
1 𝜆 
𝑞1 𝑞2 
𝜆 
𝑞0 𝑞1 𝑞1 
0 
𝑞2 
𝜆 1 𝜆 
𝑞1 𝑞2 
𝜆 
𝑞0 𝑞1 𝑞1 
0 
𝑞2 
𝜆 1 𝜆 
𝑞1 𝑞2 
1 
𝑞1 
1 
𝑞2 
0 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
 Linguagens Formais e Autómatos 
47 
Assim, 
 
 
 
 
 
O autómato vai ler prefixo 𝑢 no estado 𝑞0 depois o autómato vai passar para 𝑞3 por 010 e vai 
terminar em 𝑞3. Logo, 𝑤 ∈ 𝐿(𝐴). 
Se a palavra 𝑤 não tem subpalavra 010 o autómato nunca pode passar de 𝑞0 para 𝑞3 e 𝑤 ∉ 𝐿(𝐴). 
Então, 𝐿(𝐴) = (0 + 1)∗010(0 + 1)∗. 
Consideremos por exemplo, a árvore de computação para palavra 𝑤1 = 01010 ∈ 𝐿(𝐴). 
 
 
 
 
 
 
 
 
Se 𝑤2 = 011 ∉ 𝐿(𝐴) 
 
 
 
 
 
 
 
0 
𝑞0 𝑞1 𝑞3 
1 
𝑞2 
0 
0,1 
0,1 
𝐴: 
0 
𝑞3 
𝑞3 
0 
𝑞0 
0 1 
𝑞3 𝑞3 
1 
𝑞2 
𝑞0 𝑞0 
0 
𝑞0 
1 0 
𝑞0 𝑞1 
0 𝑞0 
1 
𝑞1 
𝑞2 
0 
1 0 
0 
1 
𝑞2 
𝑞0 
1 
𝑞0 
𝑞0 
0 𝑞0 
1 
𝑞1 
 Linguagens Formais e Autómatos 
48 
Exemplo 5.3. (Único estado final) 
Solução. 
 
 
 
 
 
 
AFND – 𝜆 𝐴1 tem único estado final e 𝐿(𝐴1) = 𝐿(𝐴). 
 
Exemplo 5.4. (União) 
Solução. 
 
 
 
 
 
 
 
Então, 𝐿(𝐴) = 𝐿(𝐴1) ∪ 𝐿(𝐴2). 
 
Exemplo 5.5. Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 01(0 + 1)∗ + (0 + 1)∗11. 
Solução. 
 
 
 
 
 
 𝐿(𝐴1) = 01(0 + 1)
∗. 
𝜆 
𝜆 
𝐴 
𝐴1 
𝜆 
𝜆 
𝐴 
𝐴1 
𝐴2 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴1: 
 Linguagens Formais e Autómatos 
49 
 
 
 
 
 𝐿(𝐴2) = (0 + 1)
∗11. 
 
 
 
 
 
 
 
 
 
 
𝐿(𝐴) = 01(0 + 1)∗ + (0 + 1)∗11. 
 
Exemplo 5.6. (Concatenação) 
Sejam 𝐴1 e 𝐴2 dois AFND – 𝜆‘s e 𝐴1 tem único estado final (Exemplo 5.3). 
Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐴1)𝐿(𝐴2). 
Solução. 
 
 
 
 
 
Então, 𝐿(𝐴) = 𝐿(𝐴1)𝐿(𝐴2). 
𝑝0 𝑝1 𝑝2 
1 1 
0,1 
𝐴2: 
𝑝0 𝑝1 𝑝2 
1 1 
0,1 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴: 𝑠0 
𝜆 
𝜆 
𝜆 
𝐴 
𝐴1 𝐴2 
 Linguagens Formaise Autómatos 
50 
Exemplo 5.7. (Fecho positivo) 
Seja 𝐴1 um AFND – 𝜆 que tem único estado final. Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐴1)
+. 
Solução. 
 
 
 
 
 
𝐿(𝐴) = 𝐿(𝐴1)
+. 
 
Exemplo 5.8. (Fecho de Kleene) 
Seja 𝐴1 um AFND – 𝜆 com único estado final. Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐴1)
∗. 
Solução. 
 
 
 
 
 
 
𝐿(𝐴) = 𝐿(𝐴1)
∗. 
Exemplo 5.9. (Linguagem inversa) 
 
 
 
 
 
Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐴1)
𝑅. 
𝜆 
𝐴 
𝐴1 
𝜆 
𝜆 
𝐴 
𝐴1 
𝜆 
𝜆 
b 
𝑞2 
a 
b 
a 
b 
a 
𝑞1 𝑞0 𝐴1: 
 Linguagens Formais e Autómatos 
51 
Solução. 
 
 
 
 
 
𝐿(𝐴) = 𝐿(𝐴1)
𝑅. 
Nota 5.1. (Linguagem inversa) 
Seja 𝐴1 um AFND – 𝜆 com único estado final. Para construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = 𝐿(𝐴1)
𝑅 
é preciso: 
1) trocar estado inicial com estado final; 
2) mudar o sentido de todos os arcos pelo sentido contrário. 
 
Exemplo 5.10. Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = ((01(0 + 1)∗ + (0 + 1)∗10)𝑅)∗. 
Solução. 
 
 
 
 
 
 𝐿(𝐴1) = 01(0 + 1)
∗. 
 
 
 
 
 𝐿(𝐴2) = (0 + 1)
∗10. 
 
 
b 
𝑞2 
a 
b 
a 
b 
a 
𝑞1 𝑞0 𝐴: 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴1: 
𝑝0 𝑝1 𝑝2 
0 1 
0,1 
𝐴2: 
 Linguagens Formais e Autómatos 
52 
 
 
 
 
 
 
 
 
 
𝐿(𝐴3) = 01(0 + 1)
∗ + (0 + 1)∗10. 
 
 
 
 
 
 
 
 
𝐿(𝐴4) = 01(0 + 1)
∗ + (0 + 1)∗10 e 𝐴4 tem único estado final. 
 
 
 
 
 
 
 
 
 
𝐿(𝐴5) = (01(0 + 1)
∗ + (0 + 1)∗10)𝑅. 
𝑝0 𝑝1 𝑝2 
0 1 
0,1 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴3: 𝑠0 
𝜆 
𝜆 
𝑝0 𝑝1 𝑝2 
0 1 
0,1 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴4: 
𝜆 
𝜆 
𝑠0 𝑡0 
𝜆 
𝜆 
𝑝0 𝑝1 𝑝2 
0 1 
0,1 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴5: 
𝜆 
𝜆 
𝑠0 𝑡0 
𝜆 
𝜆 
 Linguagens Formais e Autómatos 
53 
 
 
 
 
 
 
 
 
 
 
 
𝐿(𝐴) = ((01(0 + 1)∗ + (0 + 1)∗10)𝑅)∗. 
 
 
 
𝝀 – Fecho 
 
Definição 5.3. Seja 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) um AFND – 𝜆 e 𝐸 ⊆ 𝑄, 
𝐹𝑒𝑐ℎ𝑜𝜆(𝐸) = {𝑝|𝑝 ∈ 𝐸 𝑜𝑢 ∃𝑞1, 𝑞2, … , 𝑞𝑘: 𝑞1 ∈ 𝐸, 𝑞𝑘 = 𝑝, 𝑞𝑖+1 ∈ 𝛿(𝑞𝑖 , 𝜆), 𝑖=1, 2, … , 𝑘 − 1}. 
 
Então, 𝐹𝑒𝑐ℎ𝑜𝜆(𝐸) dá nos o conjunto de estados em que o autómato está ou pode vir a estar sem 
consumir qualquer símbolo a partir de 𝐸. 
 
 
 
 
 
Exemplo 5.11. Seja 𝐴 do Exemplo 5.1. Achar 𝐹𝑒𝑐ℎ𝑜𝜆({𝑞0}), 𝐹𝑒𝑐ℎ𝑜𝜆({𝑞1}), 𝐹𝑒𝑐ℎ𝑜𝜆({𝑞2}). 
𝐹𝑒𝑐ℎ𝑜𝜆(𝐸) 
 
 
𝜆 𝐸 
 𝜆 
𝜆 
𝜆 
𝑝0 𝑝1 𝑝2 
0 1 
0,1 
𝑞0 𝑞1 𝑞2 
1 0 
0,1 
𝐴: 
𝜆 
𝜆 
𝑠0 𝑡0 𝑢0 𝑤0 
𝜆 𝜆 
𝜆 
𝜆 
𝜆 
𝜆 
 Linguagens Formais e Autómatos 
54 
Solução. 
 
 
 
 
 
 
 
 
 
 
Simulação de um AFND – 𝝀 por um AFD 
 
Teorema 5.1. Qualquer linguagem 𝐿 que seja aceite por algum AFND – 𝜆 𝐴1 é aceite por algum 
AFD 𝐴2 e vice-versa. 
 Seja 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) um AFND – 𝜆 
Vamos estender 𝛿 para o domínio 𝑃(𝑄) × (Σ ∪ {𝜆}). Esta nova função designemos por 𝛿′. 
Definição 5.4. Seja 𝐴 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0) um AFND – 𝜆 e 𝐸 ⊆ 𝑄 
𝛿′(𝐸, 𝑎) = 𝐹𝑒𝑐ℎ𝑜𝜆 ( ⋃ 𝛿(𝑞, 𝑎)
𝑞∈ 𝐹𝑒𝑐ℎ𝑜𝜆(𝐸)
) 
𝛿′(∅, 𝑎) = ∅ 𝑝𝑎𝑟𝑎 𝑡𝑜𝑑𝑜 𝑎 ∈ Σ. 
 
 
 
 
𝑞0 
 
 
𝑞1 
𝜆 
𝑞1 
𝑞2 
 
 
𝑞1 
𝜆 
𝐹𝑒𝑐ℎ𝑜𝜆({𝑞0}) = {𝑞0, 𝑞1} 
𝐹𝑒𝑐ℎ𝑜𝜆({𝑞1}) = {𝑞1} 
𝐹𝑒𝑐ℎ𝑜𝜆({𝑞2}) = {𝑞1, 𝑞2}. 
𝐹𝑒𝑐ℎ𝑜𝜆(𝐸) 
 
 
𝜆 
𝛿′(𝐸, 𝑎) 
 
 
𝜆 
𝜆 
𝜆 
𝑎 
𝑎 
𝑎 
 Linguagens Formais e Autómatos 
55 
Exemplo 5.12. Seja 𝐴 do Exemplo 5.1. Achar 𝛿′({𝑞0}, 0) e 𝛿
′({𝑞1, 𝑞2}, 1). 
 
 
 
 
 
 
 
 
 
 
 
 
 
Algoritmo 5.1. (Construção de um AFD 𝐴2 que é equivalente a um AFND – 𝜆 𝐴1 dado) 
Input: AFND – 𝜆 𝐴1 = (𝑄, Σ, 𝛿, 𝐹, 𝑞0), a função 𝛿
′. 
Output: AFD 𝐴2 tal que 𝐿(𝐴2) = 𝐿(𝐴1). 
1. 𝑄′ ≔ 𝐹𝑒𝑐ℎ𝑜𝜆({𝑞0}) //estado inicial 
2. repeat 
2.1. if existe vértice 𝑋 ∈ 𝑄′ e símbolo 𝑎 ∈ Σ e não há arco que sai de 𝑋 com etiqueta 𝑎 then 
2.1.1. 𝑌 ≔ 𝛿′(𝑋, 𝑎) 
2.1.2. if 𝑌 ∉ 𝑄′ then 𝑄′ ≔ 𝑄′ ∪ 𝑌 
2.1.3. acrescente o arco de 𝑋 em 𝑌 etiquetado por 𝑎 
else 𝑑𝑜𝑛𝑒 ≔ 𝑡𝑟𝑢𝑒 
 until done 
3. estados finais de AFD 𝐴2 é 𝐹
′ = {𝑋 ∈ 𝑄′|𝑋 ∩ 𝐹 ≠ ∅} 
Assim, AFD 𝐴2 = (𝑄′, Σ, 𝛿′, 𝐹′, 𝐹𝑒𝑐ℎ𝑜𝜆({𝑞0})) e 𝐿(𝐴2) = 𝐿(𝐴1). 
𝑞0 
𝑞1 
𝜆 
0 
𝑞2 
 
𝑞1 
𝜆 
𝛿′({𝑞0}, 0) = {𝑞1, 𝑞2} 𝛿
′ = ({𝑞0}, 0) 
𝑞2 
𝑞1 
1 
𝑞2 
 
𝑞1 
𝜆 
𝛿′({𝑞1, 𝑞2}, 1) = {𝑞1, 𝑞2} 𝛿
′ = ({𝑞1, 𝑞2}, 1) 
 Linguagens Formais e Autómatos 
56 
Exemplo 5.13. Construir AFD 𝐴2 que é equivalente a um AFND – 𝜆 𝐴1 (𝐿(𝐴2) = 𝐿(𝐴1)). 
 
 
 
 
 
 
 
 
 
Solução. 𝐹𝑒𝑐ℎ𝑜𝜆({𝑞0}) = {𝑞0, 𝑞2} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b 
𝑞2 
a 
a,b 
a 
b 
𝜆 
𝑞1 𝑞0 
𝐴1: 
a,b 
𝑞2 
 
 
𝑞0 
𝑎 
𝑞2 
𝑞1 
𝜆 
𝑞0 
𝑎 
𝑎 
𝑎 
𝑞2 
 
 
𝑞0 𝑞1 
𝑏 
𝑏 
𝑞1 
 
 𝑏 
𝑞2 
𝑞1 
𝜆 
𝑞0 
𝑏 
𝑞2 
 
 
𝑞0 𝑎 
𝑞2 
𝑞1 
𝜆 
𝑞0 
𝑎 
𝑎 
𝑎 
𝑞1 
𝑞2 
 
 
𝑞0 𝑏 
𝑞2 
𝑞0 
𝜆 
𝑞1 
𝑏 
𝑏 
𝑏 
𝑞1 
𝑞1 
 Linguagens Formais e Autómatos 
57 
 
 
 
 
 
 
 
 
 
 
 
 
 
Problemas resolvidos 
 
5.1. 
 
 
 
 
 
 
 
 Quais das seguintes palavras são aceites por 𝐴: 𝜆, aa, aba, abba, bba, abab. 
Solução. 𝜆 ∈ 𝐿(𝐴), 𝑞0 é final. 
 
𝑎𝑎 ∉ 𝐿(𝐴) 
 
𝑎𝑏𝑎 ∈ 𝐿(𝐴) 
𝛿′ 𝑎 𝑏 
→ 𝐴 = {𝑞0, 𝑞2} {𝑞0, 𝑞1, 𝑞2} = 𝐵 {𝑞1} = 𝐶 
∗ 𝐵 = {𝑞0, 𝑞1, 𝑞2} {𝑞0, 𝑞1, 𝑞2} = 𝐵 {𝑞0, 𝑞1, 𝑞2} = 𝐵 
∗ 𝐶 = {𝑞1} ∅ = 𝐷 {𝑞0, 𝑞1, 𝑞2} = 𝐵 
𝐷 = ∅ ∅ = 𝐷 ∅ = 𝐷 
a b 
a,b 
b 
a 𝐴2: 
a,b 
𝐴 𝐵 𝐶 𝐷 
a 
b 
𝜆 
b 
b 
𝐴: 
a 
b 
𝑞0 𝑞1 𝑞2 
𝑞4 𝑞3 
𝜆 
𝑞0 𝑞1 
a 
𝑞1 
𝜆 
𝑞0 𝑞1 
a 
𝑞4 
a b 
𝑞3 𝑞0 
 Linguagens Formais e Autómatos 
58 
 
𝑎𝑏𝑏𝑎 ∉ 𝐿(𝐴) 
 
 
 
 
𝑏𝑏𝑎 ∉ 𝐿(𝐴) 
 
𝑎𝑏𝑎𝑏 ∈ 𝐿(𝐴) 
 
 
5.2. Construir AFND – 𝜆 𝐴 tal que 𝐿(𝐴) = (01)∗. 
Solução. 
 
 
 
 
 
 𝐿(𝐴1) = 01 
 
 
 
 
 
 
 
𝐿(𝐴) = (01)∗ 
 
 
 
a 
𝑞0 𝑞1 
b 
𝑞2 
𝜆 
b 
b 
𝑞4 
𝑞0 
𝑞3 
b 
𝑞4 
𝜆 
𝑞0 𝑞1 𝑞4 
a 
𝑞4 
𝜆 b 
𝑞0 𝑞1 
a 
𝑞0 
b 
𝑞0 𝑞1 𝑞2 
1 0 𝐴1: 
𝜆 
𝑞0 𝑞1 𝑞2 
1 0 
𝐴: 
𝜆 
𝜆 𝜆 
𝑝0 𝑞3 
 Linguagens Formais e Autómatos 
59 
5.3. 
 
 
 
 
 
 
 
 
Construir AFND – 𝜆 𝐴1 tal que 𝐿(𝐴1) = 𝐿(𝐴)
𝑅. 
Solução. 
 
 
 
 
 
 
 
 
 
 
 
 
 
𝐿(𝐴1) = 𝐿(𝐴)
𝑅 
 
 
 
b 
b 
a 
b 
b 
𝐴: 
a a 
𝑞0 𝑞1 
𝑞3 𝑞2 
a 
b 
b 
a 
b 
b 
𝐴2: 
a a 
𝑞0 𝑞1 
𝑞4 
𝑞3 𝑞2 
a 
𝜆 𝜆 
b 
b 
a 
b 
b 
𝐴1: 
a a 
𝑞0 𝑞1 
𝑞4 
𝑞3 𝑞2 
a 
𝜆 𝜆 
 Linguagens Formais e Autómatos 
60 
Problemas propostos 
 
5.4. 
 
 
 
 
 
 
 
 
 Quais das seguintes palavras são aceites por 𝐴: 𝜆, aa, aba, abba, bba, abab. 
 
5.5. Constrói um AFND – 𝜆 que aceite todas as palavras binárias com 1 na terceira posição a 
contar do fim. 
 
5.6. 
 
 
 
 
 
 
Construir AFND – 𝜆 𝐴1 tal que 𝐿(𝐴1) = 𝐿(𝐴)
𝑅. 
 
5.7.b 
𝜆 
b 
b 
𝐴: 
a 
b 
𝑞0 𝑞1 𝑞2 
𝑞3 𝑞4 
b 
𝑞2 
a 
b 
a 
a 
b 
𝑞1 𝑞0 𝐴: 
a b 
a,b,c 
𝐴: b 𝑞0 𝑞1 𝑞2 𝑞3 
 Linguagens Formais e Autómatos 
61 
a) Achar 𝐿(𝐴). 
b) Achar AFD equivalente. 
c) Por quê é que a linguagem reconhecida pelo autómato 𝐴1 não é complementar da 
linguagem 𝐿(𝐴)? 
 
 
 
 
𝐿(𝐴1) ≠ 𝐿(𝐴)̅̅ ̅̅ ̅̅ . 
 
5.8. 
 
 
 
 
 
 
 
Construir AFD 𝐴2 que é equivalente a AFND – 𝜆 𝐴1. 
 
 
5.9. 
 
 
 
 
 
 
 
Construir AFD 𝐴2 que é equivalente a AFND – 𝜆 𝐴1. 
𝛿 0 1 𝜆 
→ 𝑞0 {𝑞0} {𝑞0, 𝑞2} {𝑞1} 
𝑞1 {𝑞5} {𝑞2} ∅ 
𝑞2 {𝑞3} ∅ ∅ 
∗ 𝑞3 ∅ ∅ {𝑞4} 
∗ 𝑞4 {𝑞3} ∅ ∅ 
𝑞5 ∅ {𝑞4} ∅ 
a b 
a,b,c 
𝐴1: b 𝑞0 𝑞1 𝑞2 𝑞3 
𝐴1: 
a 
b 
𝜆 
b 
𝐴1: 
𝜆 a 
𝑞0 𝑞1 
𝑞3 𝑞2 
 Linguagens Formais e Autómatos 
62 
Respostas 
 
5.4. 𝑏𝑏𝑎 ∈ 𝐿(𝐴). 
 
5.5. 
 
 
 
 
5.6. 
 
 
 
 
 
 
5.7. 
a) 𝐿(𝐴) = (𝑎 + 𝑏 + 𝑐)∗𝑎𝑏(𝜆 + 𝑏). 
 
b) 
 
 
 
 
 
 
𝛿′ 𝑎 𝑏 𝑐 
→ {𝑞0} {𝑞0, 𝑞1} {𝑞0} {𝑞0} 
{𝑞0, 𝑞1} {𝑞0, 𝑞1} {𝑞0, 𝑞2} {𝑞0} 
∗ {𝑞0, 𝑞2} {𝑞0, 𝑞1} {𝑞0, 𝑞3} {𝑞0} 
∗ {𝑞0, 𝑞3} {𝑞0, 𝑞1} {𝑞0} {𝑞0} 
1 0,1 
0,1 
0,1 
𝑞0 𝑞1 𝑞2 𝑞3 
b 
𝑞2 
a 
b 
a 
a 
b 
𝑞1 𝑞0 𝐴1: 
 Linguagens Formais e Autómatos 
63 
5.8. 
 
 
 
 
 
 
 
 
5.9. 
 
 
 
 
 
 
 
 
 
 
 
𝛿′ 0 1 
→ {𝑞0, 𝑞1} {𝑞0, 𝑞1, 𝑞5} {𝑞0, 𝑞1, 𝑞2} 
{𝑞0, 𝑞1, 𝑞5} {𝑞0, 𝑞1, 𝑞5} {𝑞0, 𝑞1, 𝑞2, 𝑞4} 
{𝑞0, 𝑞1, 𝑞2} {𝑞0, 𝑞1, 𝑞3, 𝑞4, 𝑞5} {𝑞0, 𝑞1, 𝑞2} 
{𝑞0, 𝑞1, 𝑞2, 𝑞4} {𝑞0, 𝑞1, 𝑞3, 𝑞4, 𝑞5} {𝑞0, 𝑞1, 𝑞2} 
{𝑞0, 𝑞1, 𝑞3, 𝑞4, 𝑞5} {𝑞0, 𝑞1, 𝑞3, 𝑞4, 𝑞5} {𝑞0, 𝑞1, 𝑞2, 𝑞4} 
𝐴2: 
a 
a,b 
b 
a,b 
𝐴2: a,b 
𝑞0, 𝑞2, 𝑞3 𝑞1 
∅ 𝑞3 
 Linguagens Formais e Autómatos 
64 
Capítulo 6 
 
Autómatos Finitos e Expressões Regulares 
 
Exemplo 6.1. 
 
 
 
 
 
Achar ER para linguagem 𝐿(𝐴). 
Solução. Para achar ER que representa 𝐿(𝐴) vamos usar o método de eliminação de estados. Se 
eliminar 𝑞1 então deve se substituir o caminho (𝑞0, 𝑞1, 𝑞0) por um laço em 𝑞0 etiquetado por bb 
e o caminho (𝑞0, 𝑞1, 𝑞2) por um arco de 𝑞0 para 𝑞2 etiquetado por ba: 
 
 
 
 
 
 
Obtem-se o diagrama seguinte: 
 
 
 
 
 
 
ou 
b a 
a 
b a 
b 
𝐴: 
a b 
𝑞0 𝑞1 𝑞2 𝑞3 
b a 
bb 
a 
b 
ba 
a 
b 
a b 
𝑞0 𝑞1 𝑞2 𝑞3 
ba b 
bb 
a 
a 
a b 
𝑞0 𝑞2 𝑞3 
 Linguagens Formais e Autómatos 
65 
 
 
 
 
 
 
Vamos eliminar 𝑞2: 
 
 
 
 
 
 
 
 
Assim, 
 
 
 
 
 
 
Então, obtemos ER 
(𝑎 + 𝑏𝑏)∗𝑏𝑎𝑎∗𝑏 (𝑏 + 𝑎𝑎∗𝑏)∗ 
que representa a linguagem 𝐿(𝐴) das palavras que levam o autómato dado do estado 𝑞0 ao estado 
𝑞3. Substuindo 𝑎𝑎
∗ ≡ 𝑎+ recebemos 
(𝑎 + 𝑏𝑏)∗𝑏𝑎+𝑏 (𝑏 + 𝑎+𝑏)∗. 
 
ba b 
a 
a 
a+bb b 
𝑞0 𝑞2 𝑞3 
ba b 
a 
aa*b 
baa*b 
a 
a+bb b 
𝑞0 𝑞2 𝑞3 
baa*b 
a+bb b+aa*b 
𝑞0 𝑞3 
 Linguagens Formais e Autómatos 
66 
Algoritmo de eliminação de estados 
 
1. Verificar se o autómato dado tem estados que não sejam acessíveis do estado inicial. Se tiver, 
retirá-los bem como os arcos que tenham origem ou fim nesses estados. 
2. Proceder de modo análogo a (1) para eliminar todos os estados que não permitam chegar a 
algum dos estados finais. 
3. Se depois de ter efectuado (1) e (2) já não existirem estados finais, então dar como resultado a 
ER ∅. 
4. Se depois de ter efectuado (1) e (2) ainda existir algum estado final, então introduzir um novo 
estado que passa ser o único estado final. 
5. Eliminar sucessivamente cada um dos estados do autómato obtido em (4) com excepção do 
estado inicial e do estado final. 
 
Nota 6.1. Depois de cada passo simplificar os arcos paralelos: 
 
 
 
 
 
 
 
O diagrama final depois da aplicação do algoritmo pode ter um estado ou dois estados. 
 
 
Se então ER é 𝑎∗. 
 
 
Se então ER é 𝑎∗𝑏 (𝑐 + 𝑑𝑎∗𝑏)∗. 
 
b 
a 
a+b 
a,b a+b 
c 
b 
d 
a 
a 
 Linguagens Formais e Autómatos 
67 
Teorema 6.1. (Teorema de Kleene) 
Seja 𝐿 uma linguagem formal. As afirmações seguintes são equivalentes: 
1) 𝐿 é uma linguagem regular. 
2) Existe um AFND – 𝜆 𝐴1 tal que 𝐿 = 𝐿(𝐴1). 
3) Existe um AFD 𝐴2 tal que 𝐿 = 𝐿(𝐴2). 
Demonstração. 1) ⇒ 2). Realmente, se 𝐿 é linguagem regular então existe expressão regular 𝑟 
que representa 𝐿. O digrafo desta expressão regular 𝐺(𝑟) (Tema de auto-aprendizagem) é 
AFND – 𝜆 𝐴1 tal que 𝐿 = 𝐿(𝐴1). 
2) ⇒ 3). Pelo Teorema 5.1. (Capítulo 5), se existe AFND – 𝜆 𝐴1 tal que 𝐿 = 𝐿(𝐴1) então existe 
um AFD 𝐴2 tal que 𝐿 = 𝐿(𝐴2). 
3) ⇒ 1). Se existe AFD 𝐴2 tal que 𝐿 = 𝐿(𝐴2) então existe expressão regular que representa 
𝐿(𝐴2) = 𝐿 (Algorítmo de eliminação de estados). Assim 𝐿 é linguagem regular. 
 
Problemas resolvidos 
 
6.1. Achar ER 𝑟 que representa a linguagem 𝐿(𝐴) onde 𝐴 é o autómato seguinte: 
 
 
 
 
 
 
 
 
 
 
1 
1 
0,1 
0 
1 
0 
𝐴: 
0,1 
𝑞0 𝑞1 𝑞2 𝑞3 
𝑞4 
 Linguagens Formais e Autómatos 
68 
Solução. Realizando passos 1 e 2 do algoritmo recebemos: 
 
 
 
 
 
 
Depois de passos 3 e 4 recebemos: 
 
 
 
 
 
 
 
 
 
 
Começamos o passo 5, vamos eliminar 𝑞1: 
 
 
 
 
 
 
 
 
 
 
1 
1 
1 
0 
𝑞0 𝑞1 𝑞2 𝑞3 
1 
1 
𝜆 𝜆 
1 
0 
𝜆 
𝑞0 𝑞1 𝑞2 𝑞3 
𝑞4 
1 
1 
𝜆 𝜆 
1 
0 
11 
𝜆 
𝑞0 𝑞1 𝑞2 𝑞3 
𝑞4 
11 
 Linguagens Formais e Autómatos 
69 
 
 
 
 
 
 
 
 
 
Eliminamos 𝑞3: 
 
 
 
 
 
 
 
 
 
Eliminamos 𝑞2: 
 
 
 
 
 
 
 
 
11 0 
𝜆 
𝜆 𝜆 
𝑞0 𝑞2 𝑞3 
𝑞4 
11 
11 0 
𝜆 
𝜆 
0𝜆=0 
0 
𝜆 
𝑞0 𝑞2 𝑞3 
𝑞4 
11 
𝜆+(11)+( 𝜆+0) 
𝑞0 𝑞4 
11 
𝜆+0 
𝜆 
𝑞0 𝑞2 
𝑞4 
11 
11(11)*( 𝜆+0) 
11 
𝜆+0 𝜆 
𝑞0 𝑞2 
𝑞4 
11 
 Linguagens Formais e Autómatos 
70 
Assim, ER 𝑟 que representa 𝐿(𝐴) é 
𝑟 = 𝜆 + (11)+(𝜆 + 0). 
 
6.2. Achar ER 𝑟 que representa a linguagem 𝐿(𝐴) onde 𝐴 é o autómato seguinte: 
 
 
 
 
 
 
 
 
 
Solução. Depois de passos 1,2,3 e 4 recebemos: 
 
 
 
 
 
 
 
 
 
 
 
 
Começamos o passo 5, vamos eliminar 𝑞1: 
 
1 1 
0,1 
1 
0 
0 𝐴: 
0 
𝑞0 𝑞1 
𝑞2 
𝑞5 
𝑞4 𝑞3 
𝜆 
𝜆 
1 1 
0+1 
1 
0 
0 
0 
𝑞0 𝑞1 
𝑞2 
𝑞5 
𝑞4 𝑞3 
𝜆 
𝜆 
𝑞6 
𝜆 𝜆 
 Linguagens Formais e Autómatos 
71 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Eliminamos 𝑞2: 
 
 
 
 
 
 
 
 
 
1 1 
0+1 
1 
0 
0 
0 
𝑞0 𝑞1 
𝑞2 
𝑞5 
𝑞4 𝑞3 
𝜆 
𝜆 
𝑞6 
𝜆 𝜆 
0 
1 𝜆1≡1, 1+1≡1, 𝜆0≡0 
0+1 
0 
0 
0 
𝑞0 𝑞5 
𝑞2 
𝑞4 
𝑞6 𝑞3 
1 
𝜆 
𝜆 
𝜆 
1 
0+1 
10 
0 
0 
0 
𝑞0 𝑞5 
𝑞2 
𝑞4 
𝑞6 𝑞3 
1 
𝜆 
𝜆 
𝜆 
1 
 Linguagens Formais e Autómatos 
72 
 
 
 
 
 
 
 
 
 
Eliminamos 𝑞5: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Eliminamos𝑞3: 
0+1 
0 
0 
𝑞0 𝑞5 
𝑞3 
𝑞4 
𝑞6 
1 
𝜆 
𝜆 
𝜆 
10 
0+1 
0 
0 
𝑞0 𝑞5 
𝑞3 
𝑞4 
𝑞6 
1 
𝜆 
𝜆 
𝜆 
01 
10 
0+1 
0 
01 
𝑞0 𝑞4 
𝑞3 𝑞6 
𝜆 
𝜆 
𝜆 
10 
 Linguagens Formais e Autómatos 
73 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Eliminamos 𝑞4: 
 
 
 
 
 
 
 
 
 
10 
0+1 
10 
0 
01 
𝑞0 𝑞4 
𝑞3 𝑞6 
0 𝜆 
𝜆 
𝜆 
0 
10 
0𝜆≡0, 10𝜆≡10 
0+1 
01+10 
𝑞0 𝑞4 
𝑞6 
𝜆+0 
0 
10 
0+1 
01+10 
𝑞0 𝑞4 
𝑞6 
𝜆+0 (01+10)0*(𝜆+0) 
0 
10 
 Linguagens Formais e Autómatos 
74 
 
 
 
 
Assim, ER 𝑟 que representa 𝐿(𝐴) é 
𝑟 = (0 + 1)∗(10 + (01 + 10)0∗(𝜆 + 0)). 
 
6.3. Seja 𝐿 a linguagem de todas as palavras binárias com um número par de letras “0”. 
Achar ER 𝑟 que representa 𝐿. 
Solução. 
No inicio vamos construir um autómato 𝐴 tal que 𝐿(𝐴) = 𝐿: 
 
 
 
 
 
Agora vamos achar ER 𝑟 que representa 𝐿(𝐴): 
Eliminamos 𝑞1: 
 
 
 
 
 
 
 
Assim, ER 𝑟 que representa 𝐿(𝐴) = 𝐿 é 
𝑟 = (1 + 01∗0)∗. 
0+1 
𝑞0 𝑞6 
10+(01+10)0*(𝜆+0) 
𝑞0 
1 
𝐴: 𝑞1 
1 
0 
0 
01*0 
𝑞0 
1 
𝑞1 
1 
0 
0 
𝑞0 
1+01*0 
 Linguagens Formais e Autómatos 
75 
Problemas propostos 
 
6.4. Seja 𝐿 a linguagem de todas as palavras binárias com um número ímpar de letras “0”. 
Achar ER 𝑟 que representa 𝐿. 
 
6.5. 
 
 
 
 
 
 
a) Achar AFD 𝐴1 tal que 𝐿(𝐴) = 𝐿(𝐴1). 
b) Achar ER 𝑟 que representa 𝐿(𝐴). 
c) Achar ER 𝑟 que representa 𝐿(𝐴1). 
 
 
6.6. 
 
 
 
 
 
 
a) Achar AFD 𝐴1 tal que 𝐿(𝐴) = 𝐿(𝐴1). 
b) Achar ER 𝑟 que representa 𝐿(𝐴1). 
 
𝛿 0 1 𝜆 
→ 𝑞0 {𝑞0, 𝑞1} ∅ {𝑞3} 
𝑞1 ∅ {𝑞2} {𝑞0} 
∗ 𝑞2 {𝑞2} {𝑞2} ∅ 
∗ 𝑞3 {𝑞0, 𝑞1} ∅ ∅ 
a 
b 
𝜆 
b 
𝐴: 
𝜆 a 
𝑞0 𝑞1 
𝑞3 𝑞2 
𝐴: 
 Linguagens Formais e Autómatos 
76 
6.7. 
 
 
 
 
 
 
 
a) Achar AFD 𝐴1 tal que 𝐿(𝐴) = 𝐿(𝐴1). 
b) Achar ER 𝑟 que representa 𝐿(𝐴). 
 
6.8. Utilizando o Teorema de Kleene e os resultados dos Capítulos 4 e 5, demonstrar que: 
a) A intersecção de duas linguagens regulares é regular. 
b) A linguagem inversa de uma linguagem regular é regular. 
c) A linguagem complementar de uma linguagem regular é regular. 
Respostas 
 
6.4. 𝑟 = 1∗0 (1 + 01∗0)∗. 
 
6.5. a) 
 
 
 
 
 
b) 𝑟 = 𝜆 + (𝑎 + 𝑏)𝑏∗𝑎. 
c) 𝑟 = 𝜆 + (𝑎 + 𝑏)𝑏∗𝑎. 
𝛿′ 𝑎 𝑏 
→ ∗ {𝑞0, 𝑞2, 𝑞3} {𝑞1} {𝑞1} 
{𝑞1} {𝑞3} {𝑞1} 
∗ {𝑞3} ∅ ∅ 
∅ ∅ ∅ 
a 
b 
𝜆 
b 
𝐴: 
𝜆 
𝜆 
1 2 
4 3 
a 
𝐴1: 
 Linguagens Formais e Autómatos 
77 
6.6. a) 
 
 
 
 
 
 
 
b) 𝑟 = 𝜆 + 0(0 + 1)∗. 
 
6.7. a) 
 
 
 
 
 
 
 
 
 
b) 𝑟 = (𝑎𝑏∗ + 𝜆) 𝑎∗(𝑏 + 𝜆). 
 
1 0,1 
1 
0,1 
𝐴1: 
0 
𝑞0, 𝑞3 𝑞0, 𝑞1, 𝑞3 
∅ 
𝑞2 
0 
a 
a 
b 
b 
𝐴1: b a 
1,3,4 2,3,4 
3,4 4 
a,b 
a,b 
∅

Continue navegando