Prévia do material em texto
3 Linguagens Regulares 137 q31q30 c Figura 3.34: Autômato que aceita c Seja L4 = b∗ = L∗ 2. Então, L4 = L4(M4) com M4 igual a: q42q40 q41 q20 q21 ǫǫ q43 ǫ ǫ ǫ ǫ b Figura 3.35: Autômato que aceita b∗ L5 = ab∗ = L1L4. Então, L5 = L5(M5) com M5 igual a: q42q40 q41 q20 q21 ǫǫ q43 ǫ ǫ ǫ ǫ b q51q11q10 a ǫ ǫ Figura 3.36: Autômato que aceita ab∗ Finalmente, L6 = ab∗ | c = L5 ∪ L3 = L6(M6) com M6 igual a: 138 Linguagens Formais - Teoria, Modelagem e Implementação q42q40 q41 q20 q21 ǫǫ q43 ǫ ǫ ǫ ǫ b q51q11q10 a ǫ q60 ǫ q30 q31 c ǫ q61 ǫ ǫ ǫ Figura 3.37: Autômato que aceita ab∗ | c Como se pode observar, o autômato assim construído apresenta uma quantidade desnecessa- riamente grande de estados, além de diversas transições em vazio. Este fenômeno, comum quando se aplicam métodos canônicos de construção de autômatos, pode ser contornado através da aplicação dos algoritmos de eliminação de transições em vazio e de estados inacessíveis, além da aplicação de algoritmos de minimização, assunto da Seção 3.6. O autômato da Figura 3.38 corresponde a uma versão equivalente, porém mais compacta, ao autômato M6 anteriormente obtido. q1 q0 q2 a c b Figura 3.38: Outro autômato que aceita ab∗ | c 2 É comum se considerar uma simplificação do autômato apresentado na Figura 3.31, no qual, ao invés de quatro novos estados, são criados apenas dois novos estados, como ilustrado na Figura 3.39.