08 · Tópicos Complementares dos Livros
Por que esta nota existe
Os dois livros continuam o assunto das linguagens regulares além do ponto onde os slides param. Estes tópicos aparecem no mesmo capítulo dos livros e costumam ser as próximas aulas da disciplina: autômatos com transições vazias, conversão entre ER e autômato, minimização, Lema do Bombeamento, propriedades de fechamento, questões decidíveis e autômatos com saída (Mealy e Moore). Tudo aqui é resumo e explicação minha a partir dos livros, com os exemplos conferidos por programa.
Páginas das edições da sua pasta: Menezes 3ª edição (2000) e Ramos, José Neto e Vega (Bookman).
Voltar ao mapa · Base: 04 - Autômatos Finitos Determinísticos, 05 - Autômatos Finitos Não Determinísticos, 06 - Equivalência AFD e AFND, 07 - Equivalência AF e GR
1. Autômato finito com transições vazias (AFε)
Onde: Menezes 2.4, p. 44 a 50; Ramos 3.3, p. 167 a 192.
Uma transição vazia muda de estado sem ler nenhum símbolo. A função de transição passa a ser
O Menezes descreve isso como um “não determinismo interno”: o autômato pode, a qualquer momento, seguir ou não a seta , e a origem continua sendo uma alternativa (p. 45).
Fecho vazio de um estado : todos os estados alcançáveis a partir de usando zero ou mais transições vazias. É o fecho reflexivo-transitivo (o da aula 02) da relação “tem seta ” (Menezes Def. 2.9, p. 46 e 47).
Para processar uma palavra: comece com o fecho vazio do estado inicial; a cada símbolo, faça as transições normais e depois aplique o fecho vazio de novo.
Menezes, Exemplo 8 (p. 46): todo a vem antes de todo b, ou seja
e (Exemplo 9, p. 47). Conferi por programa que aceita exatamente .
Eliminando as transições vazias (Menezes Teorema 2.11, p. 48)
Receita:
- Para cada estado e símbolo : o novo é “tudo que dá para alcançar a partir de usando vazios, depois um , depois vazios de novo”.
- Um estado vira final se o seu fecho vazio contém algum estado final.
Aplicando ao exemplo acima: , , , e passa a ser final (porque ):
Conferido: aceita . O Ramos apresenta duas versões do algoritmo (Algoritmos 3.5 e a “versão 2”, p. 169 a 176), trabalhando direto na tabela: a linha de um estado com transição vazia recebe uma cópia das transições do estado de destino.
2. De expressão regular para autômato e de volta
Onde: Menezes 2.5, Teoremas 2.13 e 2.14, p. 51 a 55; Ramos 3.6, p. 206 a 216.
ER para AFε (construção por indução)
A prova é por indução no número de operadores da ER (Menezes, p. 51 a 53). Cada caso vira um “bloco” com um estado inicial e um final:
| ER | Bloco |
|---|---|
| estado inicial sem saída e sem estado final | |
| um estado que é inicial e final | |
| novo inicial com para os blocos de e de ; os finais deles vão por para um novo final | |
| final de ligado por ao inicial de | |
| novo inicial e novo final; direto do inicial para o final (aceita vazio) e do fim de de volta ao começo de (repete) |
Aplicando a , a mesma ER do Exemplo 13 do Menezes (p. 54), sai isto (setas cinzas são ):
Conferi por programa que aceita exatamente . São 14 estados e 16 transições para uma ER curta: a construção é mecânica, não econômica. Depois se converte para AFND, AFD e minimiza.
Os "atalhos" que o Menezes proíbe (p. 53 e 54)
Na união, não junte os estados iniciais e finais dos dois blocos num só. No fecho, não reaproveite o final do bloco de como final do resultado. Esses atalhos parecem economizar estados, mas podem fazer o autômato aceitar palavras que a ER não gera. Uma boa pergunta para fazer em sala: por quê?
AF para ER
O Menezes só enuncia o resultado (Teorema 2.14, p. 55). O Ramos mostra o algoritmo (Algoritmo 3.17, p. 211 a 216): deixe o autômato com um único estado final e vá eliminando os estados intermediários um por um. Quando um estado some, cada caminho que passava por ele vira uma seta rotulada com uma ER (o laço do estado eliminado vira um no meio). No fim sobra uma seta do inicial ao final, e o rótulo dela é a ER da linguagem.
3. Minimização de AFD
Onde: Menezes 2.8, p. 66 a 72; Ramos 3.7, p. 216 a 230.
Ideia: dois estados são equivalentes se, para qualquer palavra, os dois levam a resultados iguais (os dois aceitam ou os dois rejeitam). Estados equivalentes podem ser fundidos. O resultado é o autômato mínimo, que é único a menos do nome dos estados (Menezes Teoremas 2.27 e 2.28, p. 72).
Pré-requisitos (Menezes Def. 2.25, p. 67): o autômato tem que ser determinístico, não ter estados inacessíveis e ter função de transição total (se faltar transição, crie um estado poço para completar).
O algoritmo da tabela (Menezes Def. 2.26, p. 68 e 69)
- Monte uma tabela com todos os pares de estados, cada par uma vez.
- Marque todo par (final, não final): esses com certeza não são equivalentes.
- Para cada par ainda não marcado e cada símbolo , olhe o par de destinos . Se esse par de destinos já está marcado, marque também. (O Menezes usa listas para propagar as marcações; na prática, repetir o passo até nada mudar dá o mesmo resultado.)
- Os pares que sobrarem sem marca são equivalentes. Funda-os.
- Remova estados inúteis (não finais dos quais não se chega a nenhum final).
Exemplo: o AFND do slide 9, convertido e minimizado
Convertendo o AFND “contém aa ou bb” da aula 05 com a construção de subconjuntos, saem 5 estados. Vou chamá-los de , , , , (finais: e ).
Tabela de pares depois do algoritmo ( = marcado no passo 2, = marcado no passo 3, = equivalente):
| A | B | C | D | |
|---|---|---|---|---|
| B | ||||
| C | ||||
| D | ||||
| E |
Por que cada marca do passo 3:
- : lendo
a, vão para , que já está marcado. - : lendo
b, vão para , marcado. - : lendo
a, vão para , marcado. - : lendo
a, os dois vão para ; lendob, os dois vão para . Nunca chegam num par marcado: equivalentes.
Fundindo e num único estado final :
É exatamente o AFD do Exemplo 1 do Menezes (p. 34 e 35), com = “o símbolo anterior foi a” e = “o anterior foi b”. Conferi por programa que os dois autômatos aceitam a mesma linguagem.
A ponte com a aula 02
O Ramos faz a minimização por partições (Algoritmos 3.18 e 3.19, p. 220 a 224): começa com a partição e vai quebrando os blocos enquanto dois estados do mesmo bloco levarem, com algum símbolo, a blocos diferentes. Quando nada mais quebra, cada bloco é uma classe de equivalência e os estados do autômato mínimo são o conjunto quociente. É a matéria de partições e classes de equivalência aplicada.
4. Lema do Bombeamento: como provar que uma linguagem NÃO é regular
Onde: Menezes Lema 2.20, p. 61 a 63; Ramos Teorema 3.16, p. 233 a 239.
A intuição
Um AFD tem estados. Para ler uma palavra de tamanho ou mais, ele passa por estados ou mais, então algum estado se repete (princípio da casa dos pombos). O trecho da palavra lido entre as duas visitas forma um ciclo, e dá para repetir esse ciclo quantas vezes quiser (ou nenhuma) sem mudar o resultado.
O enunciado
Se é regular, existe uma constante tal que toda palavra com pode ser escrita como com
- ,
- ,
- para todo .
Como usar (por absurdo)
- Suponha que é regular. Então existe o do lema (você não precisa saber o valor).
- Escolha uma palavra com , escrita em função de .
- Mostre que qualquer divisão que respeite as condições gera algum .
- Contradição: não é regular.
não é regular (Menezes Ex. 19, p. 63; Ramos Ex. 3.52, p. 237)
Suponha que é regular, com constante . Tome . Como , o pedaço está todo dentro dos a, então com . Bombeando uma vez a mais: , que tem mais a do que b e está fora da linguagem. Contradição.
O Menezes usa essa mesma palavra para provar que “mesmo número de a e b” não é regular. E isso fecha a promessa da aula 03: a linguagem do slide 11 é livre de contexto, mas não é regular.
Outros exemplos do Ramos (p. 238): (o mesmo número de zeros dos dois lados do 1), (comprimentos quadrados perfeitos) e com primo. Nenhuma é regular.
O lema só serve para um lado
O lema diz uma coisa que toda linguagem regular satisfaz. Ele serve para provar que uma linguagem não é regular. Para provar que é regular, mostre uma ER, um AF ou uma gramática regular (Ramos, p. 237).
5. Propriedades de fechamento
Onde: Menezes Teorema 2.21, p. 63 e 64; Ramos 3.10, p. 239 em diante.
A classe das linguagens regulares é fechada (no sentido da aula 02) para:
| Operação | Por quê |
|---|---|
| União | é ER |
| Concatenação | é ER |
| Fecho | é ER |
| Complemento | pegue um AFD total (com estado poço se preciso) e troque finais por não finais |
| Interseção | (De Morgan) |
Por que o AFD precisa ser total no complemento
Se a função é parcial, o autômato rejeita palavras “por indefinição” no meio do caminho. Trocar finais por não finais não muda isso, então essas palavras continuariam rejeitadas nos dois autômatos. O Menezes completa com um estado antes de trocar (p. 63 e 64).
Truque de prova (complemento meu)
Fechamento também ajuda a provar que algo não é regular. Exemplo: . Se fosse regular, também seria (interseção de regulares). Mas , que não é regular. Logo não é regular.
6. Perguntas que um algoritmo consegue responder
Onde: Menezes Teoremas 2.22 e 2.23, p. 64 a 66; Ramos 3.11, p. 247 em diante.
Para um AF com estados:
| Pergunta | Como decidir |
|---|---|
| é vazia? | teste todas as palavras com menos de símbolos; se nenhuma é aceita, é vazia |
| é infinita? | é infinita se e só se aceita alguma palavra com (pelo bombeamento, dá para repetir o ciclo) |
| ? | construa e teste se é vazia |
Todas usam as propriedades de fechamento. Na prática existem métodos mais rápidos (o próprio Menezes sugere no exercício 2.16, p. 83, usar remoção de estados inacessíveis e minimização).
7. Autômatos com saída: Mealy e Moore
Onde: Menezes 2.9, p. 72 a 79; Ramos 3.8 (Transdutores Finitos), p. 230 a 233.
Um AF comum só responde sim ou não. Um transdutor também escreve numa fita de saída (sem poder ler de volta, então a saída não vira memória).
| Mealy | Moore | |
|---|---|---|
| Saída associada a | cada transição | cada estado |
| Rótulo no diagrama | lido / escrito na seta | a saída anotada no estado |
| Entrada vazia | não escreve nada | escreve a saída do estado inicial |
Os dois modelos são equivalentes, exceto para a entrada vazia (Menezes Teoremas 2.31 e 2.32, p. 76 a 79). Para simular Mealy com Moore, às vezes é preciso duplicar estados, um para cada saída diferente que chega nele.
Mealy que compacta espaços em branco (Menezes, Exemplo 24, p. 79)
aé qualquer caractere do texto eBé o espaço em branco. O estado lembra “acabei de escrever um branco”, e brancos seguintes não são escritos:Conferi por programa que a saída é sempre a entrada com cada sequência de brancos trocada por um único branco.
Onde isso aparece em compiladores
O Menezes (Exemplo 23, p. 76) descreve um analisador léxico como Máquina de Moore: cada estado final corresponde a um tipo de token e tem como saída o código desse token; os estados não finais têm saída vazia. É a ponte direta entre esta disciplina e a matéria de compiladores.
Exercícios dos livros para praticar estes tópicos
- Menezes (p. 80 a 84): 2.7 (ER para AF), 2.8 (ER até gramática, passando por todos os formalismos), 2.9 (minimização), 2.10 (por que o AF sempre para, e o caso de ciclo de transições vazias), 2.14 (provar que e não são regulares), 2.16 e 2.17 (decidibilidade), 2.19 (Mealy e Moore convertendo US).
- Ramos: exercícios do capítulo 3 a partir da p. 275.
Para aprofundar nos livros
Onde ler (páginas das edições da sua pasta)
- Menezes (3ª ed.): 2.4, p. 44 a 50; 2.5 (Teoremas 2.13 e 2.14), p. 51 a 55; 2.7, p. 60 a 66; 2.8, p. 66 a 72; 2.9, p. 72 a 79; exercícios, p. 80 a 84.
- Ramos, José Neto e Vega: 3.3 (transições em vazio), p. 167 a 192; 3.6, p. 206 a 216; 3.7, p. 216 a 230; 3.8, p. 230 a 233; 3.9, p. 233 a 239; 3.10 e 3.11, a partir da p. 239.
Relacionadas: Glossário · Flashcards · Referências - Livros