linguagens regulares e expressões regularesrvr/resources/mc/rl.pdf · 3.1.1 expressões regulares...

61
Draft-v0.2.3 3 Linguagens regulares e expressões regulares Uma classe de conjuntos é fechada por uma operação se o resultado da operação de conjuntos dessa classe for ainda um elemento dessa classe. Definição 3.1 (Linguagens regulares) Considerando um alfabeto , a classe das linguagens regu- lares (LR) é a menor classe que contém ;, {"} e {a} (para todo o a 2 ), e que é fechada para a reunião, concatenação e fecho de Kleene. Neste e nos capítulos seguintes vamos estudar várias representações finitas de linguagens regulares. Seja L 1 a linguagem de alfabeto {0, 1} formada pelas palavras que têm 000 como sua subpalavra. A linguagem L 1 pode ser então expressa à custa de outras linguagens usando as operações sobre linguagens definidas no Capítulo 2, L 1 = {0, 1} ? {000}{0, 1} ? . Podemos continuar a expressar L 1 , agora usando conjuntos singulares de símbolos: L 1 =({0} [ {1}) ? {0}{0}{0}({0} [ {1}) ? . Se assumirmos que cada símbolo do alfabeto representa a linguagem que contém a palavra formada uni- camente por esse símbolo, obtemos da expressão anterior, outra muito mais simples onde a reunião é representada pelo símbolo +: (0 + 1) ? 000(0 + 1) ? . Esta é a ideia que está por detrás das expressões regulares. Para indicar a linguagem definida por esta expressão regular escrevemos: L 1 = L((0 + 1) ? 000(0 + 1) ? ). Consideremos outro exemplo. A linguagem L 1 = {x 2 {0, 1} ? | x tem 2 ou 3 ocorrências de 1, não sendo as duas primeiras consecutivas}, pode ser descrita por: L 1 = {0} ? {1}{0} ? {0}{1}{0} ? ({1}{0} ? [ {"}), 19

Upload: others

Post on 14-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.33

Linguagens regulares e expressões regulares

Uma classe de conjuntos é fechada por uma operação se o resultado da operação de conjuntos dessa classefor ainda um elemento dessa classe.

Definição 3.1 (Linguagens regulares) Considerando um alfabeto ⌃, a classe das linguagens regu-lares (LR) é a menor classe que contém ;, {"} e {a} (para todo o a 2 ⌃), e que é fechada para areunião, concatenação e fecho de Kleene.

Neste e nos capítulos seguintes vamos estudar várias representações finitas de linguagens regulares.Seja L1 a linguagem de alfabeto {0, 1} formada pelas palavras que têm 000 como sua subpalavra. A

linguagem L1 pode ser então expressa à custa de outras linguagens usando as operações sobre linguagensdefinidas no Capítulo 2,

L1 = {0, 1}?{000}{0, 1}?.

Podemos continuar a expressar L1, agora usando conjuntos singulares de símbolos:

L1 = ({0} [ {1})?{0}{0}{0}({0} [ {1})?.

Se assumirmos que cada símbolo do alfabeto representa a linguagem que contém a palavra formada uni-camente por esse símbolo, obtemos da expressão anterior, outra muito mais simples onde a reunião érepresentada pelo símbolo +:

(0+ 1)?000(0+ 1)?.

Esta é a ideia que está por detrás das expressões regulares. Para indicar a linguagem definida por estaexpressão regular escrevemos:

L1 = L((0+ 1)?000(0+ 1)?).

Consideremos outro exemplo. A linguagem

L1 = {x 2 {0, 1}? | x tem 2 ou 3 ocorrências de 1, não sendo as duas primeirasconsecutivas},

pode ser descrita por:L1 = {0}?{1}{0}?{0}{1}{0}?({1}{0}? [ {"}),

19

Page 2: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

ou simplificando, podemos representar a linguagem L1 pela expressão

0?10?010?(10? + ").

Podemos, então, definir o conjunto das expressões regulares (ER) da seguinte forma.

Definição 3.2 (expressão regular (ER)) O conjunto ER das expressões regulares r e as linguagempor elas descritas L(r) definem-se indutivamente como:

i) ; 2 ER; e L(;) = ;.

ii) " 2 ER e L(") = {"}.

iii) Se � 2 ⌃ então � 2 ER; e L(�) = {�}.

iv) Se r1 2 ER e r2 2 ER então (r1r2) 2 ER; e L((r1r2)) = L(r1)L(r2).

v) Se r1 2 ER e r2 2 ER então (r1 + r2) 2 ER; e L((r1 + r2)) = L(r1) [ L(r2).

vi) Se r1 2 ER então (r1)? 2 ER; e L((r1)?) = L(r1)?.

As expressões regulares constituem uma representação compacta e expressiva para representar lingua-gens regulares, i.e,

Teorema 3.3 Uma linguagem sobre um alfabeto ⌃ é regular se e só se é representada por umaexpressão regular.Dem. É imediato pela definição de linguagem regular. ⇤

Exemplo 3.4 Seja ⌃ = {0, 1}. As expressões regulares seguintes representam respectivamente a lin-guagem indicada à direita.

expressão regular linguagem descrita(0+ 1) {0, 1}

(0)? {", 0, 00, 000, 0000, 00000, . . .}

((0)?(11)) {11, 011, 0011, 00011, 000011, 0000011, . . .}

(01)? {", 01, 0101, 010101, 01010101, 0101010101, . . .}

(0+ 1)? {", 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, . . .}

((1)?(0((0+ 1)?))) {0, 10, 01, 00, 000, 100, 010, 001, 110, 101, 011, . . .}

= {x | x tem algum 0}

Usando uma convenção idêntica à aplicada a expressões aritméticas envolvendo soma, produto e poten-ciação, podemos abreviar as expressões retirando parêntesis não necessários, como ilustrado na Figura 3.1.As regras de precedência para as operações + (união), concatenação e ? (fecho de Kleene) correspondem àsusadas nas expressões aritméticas para a adição, a multiplicação e a potenciação, respectivamente. Isto é,a precedência é fecho de Kleene > concatenação > união. A vantagem da introdução desta simplificação éclaramente ilustrada pelos exemplos dados na Figura 3.1.

Exemplo 3.5 i) A palavra baaababbaa pertence à linguagem L((aa?b?a+ b)?) uma vez que:

b 2 L(b)aa 2 L(aa?b?a)

aba 2 L(aa?b?a)

b 2 L(b)b 2 L(b)

aa 2 L(aa?b?a).

20

Page 3: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

(r+ s) r+ s

((r+ s) + t) r+ s+ t

(r(st)) rst

(r(s+ t)) r(s+ t)((rs) + (rt)) rs+ rt

(;)? ;?((r)?)? (r?)?

(((r)?(s)?))? (r?s?)?

(0+ 1) 0+ 1

((0)?(1(1)?)) 0?11?

(((0)?(11)) + ((10)1)) 0?11+ 101

((01))? (01)?

((1)?(0(0+ 1)?)) 1?0(0+ 1)?

(((0+ 1)?)((00)(0+ 1)?)) (0+ 1)?00(0+ 1)?

((((0+ 1)?)((00)0)) + (((01)?)(01)?)) (0+ 1)?000+ (01)?01?

Figura 3.1: Expressão regular e a sua abreviatura.

Logo, baaababbaa 2 L((aa?b?a+ b)?).

ii) A linguagemL1 = { x 2 {0, 1}? | x tem pelo menos um 1 }

pode ser representada por L((0+ 1)?1(0+ 1)?).

iii) A linguagemL2 = { x 2 {0, 1}? | x tem um número par de 0’s }

pode se representada por L((1?01?0)?1?).

iv) A linguagemL3 = { x 2 {0, 1}? | x não tem 111 como subpalavra }

pode ser representada por L((0+ 01+ 011)? + 1+ 11).

Exemplo 3.6 Para cada uma das linguagens seguintes determinar uma expressão regular que arepresenta.

i) Seja A = { x 2 {0, 1}? | x tem pelo menos um 11 entre cada par de 0’s}

Numa palavra de A, se ocorrer um 0 tem de ocorrer 11 a seguir. Temos então a expressãoregular

(1+ 011)?.

Mas, excepto para o 0 mais à direita. Então, temos que

A = L((1+ 011)?("+ 0+ 01)).

ii) Seja B = { x 2 {a, b}? | x que tem um número par de a’s }.

Se uma palavra de B tiver um a tem necessariamente outro. Temos então que:

B = L((ab?a+ b)?).

21

Page 4: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Nota que se uma palavra tiver número par de a’s, e esse número não for zero, então a palavrapode ser vista como uma sequência de b’s e de palavras em L(ab?a).

Por exemplo, para babbbbbabbbbbbbbbaaaa tem-se a seguinte decomposição

b|{z}2

L(b?)

abbbbba| {z }2

L(ab?a)

bbbbbbbbb| {z }2

L(b?)

aa|{z}2

L(ab?a)

aa|{z}2

L(ab?a)

Exemplo 3.7 Seja C = {x 2 {0, 1} | x não tem a subpalavra 111}

Numa palavra de C, se houver um 1 ou um 11 tem de haver pelo menos um 0. Isto é,

C = L((0? + 0?(1+ 11)(0+(1+ 11))?0?))

Seja D = {x 2 {0, 1}? | x não tem a subpalavra 00}

Numa palavra de D, à direita de um 0 tem de haver um 1. Temos então a expressão (01+ 1)?.Mas a palavra pode terminar em 0. Fica, então,

D = L((01+ 1)?(0+ "))

Seja R, linguagem dos números decimais racionais em ⌃ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-, .}

Para os dígitos temos a expressão regular: digito = (0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9). E,

R = L(("+-)digito+(.digito+ + "))

A verificação que uma dada palavra pertence à linguagem definida por uma expressão regular tem umacomplexidade O(mn2) [Yu97], onde n é o comprimentoda palavra e m o número de símbolos da expressãoregular.

3.1 Equivalência de expressões regulares

Definição 3.8 (Expressões regulares equivalentes) Duas expressões regulares r1 e r2 são equiva-lentes, e escreve-se r1 = r2, se L(r1) = L(r2).

Pode verificar-se que = é uma relação de equivalência em ER, i.e.,

r = r, para todo o r 2 ER (reflexiva)

se r = s então s = r, para todos r, s 2 ER (simétrica)

se r = s e s = t então r = t, para todos r, s e t 2 ER (transitiva)

Proposição 3.9 Quaisquer que sejam as expressões regulares r, s e t de alfabeto ⌃ tem-se:

22

Page 5: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

r+ s = s+ r (comutatividade +)(r+ s) + t = r+ (s+ t) (associatividade +)r(st) = (rs)t (associatividade ·)r(s+ t) = (rs) + (rt) (distributividade + ·)(r+ s)t = rt+ st (distributividade · +)r+ ; = r (elemento neutro +)r+ r = r (idempotência +)"r = r = r" (elemento neutro ·);r = ; = r; (elemento absorvente ·);? = "? = " (propriedades do fecho)("+ r)? = r?

"+ rr? = "+ r?r = r?

(r?)? = r?

(r?s?)? = (r+ s)?

r(sr)? = (rs)?r(r?s)?r? = (r+ s)?

Dem. Segue imediatamente como corolário do Teorema 2.19 usando a definição de expressão regular (elinguagem por ela descrita). ⇤

Exemplo 3.10 A expressão regular1? + 1?0(110)?1?

é equivalente à expressão1?("+ 0(110)?1?),

e define a linguagem das palavras que têm exactamente dois 1’s entre cada duas ocorrências conse-cutivas de 0’s. Notar que se x é uma palavra tal que entre cada duas ocorrências consecutivas de 0’shá exactamente dois 1’s, então se x for da forma

x10x2

sendo o 0 indicado o 0 mais à esquerda, podemos dizer que x1 2 L(1?) e que ou não há 0’s em x2 (istoé, x2 2 L(1?)) ou x2 = 110x3, com x3 pertencente exactamente à mesma linguagem que x2. Assimconclui-se que x2 2 L((110)?1?).

Exemplo 3.11 A linguagem das palavras de alfabeto {0, 1} que têm 00 como subpalavra é descrita pelaexpressão regular

(0+ 1)?00(0+ 1)?.

Uma expressão regular equivalente é por exemplo,

(01+ 1)?00(0+ 1)?.

Notar que, a expressão regular(01+ 1)?,

descreve as palavras em {0, 1}? que se tiverem 0’s, então imediatamente à direita de cada 0 têm um 1.Assim, ao definirmos (01+1)?00(0+1)? como sendo a expressão das palavras que têm 0’s consecutivos,o par de 0’s que destacámos é o par de 0’s consecutivos mais à esquerda na palavra.

23

Page 6: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

3.1.1 Expressões Regulares e Álgebras de Kleene

Podemos associar diversas estruturas algébricas aos conjuntos de linguagens formais. Vamos ver que aslinguagens regulares (expressões regulares) formam uma álgebra de Kleene.

Um semigrupo é uma estrutura algébrica (S, ·) onde S é um conjunto e · uma operação bináriaassociativa, isto é tal que x · (y · z) = (x · y) · z para todo o x, y, z 2 S. Um monóide é uma estruturaalgébrica (M, ·, 1), onde (M, ·) é um semigrupo e 1 é um elemento de M que é a identidade direita eesquerda para ·, i.e. x · 1 = 1 · x = x para qualquer x 2 M.

Dado um alfabeto ⌃, a estrutura algébrica (⌃?, ·, ✏) é um monóide. Para tal basta considerar a definiçãoda operação de concatenação de palavras (2.5).

Um monóide M é comutativo se xy = yx, para todo x, y 2 M.

Definição 3.12 (Semianel) Um semianel é uma estrutura algébrica (S,+, ·, 0, 1) tal que:

(S,+, 0) é um monóide comutativo.

(S, ·, 1) é um monóide.

a operação · distribui à esquerda e à direita sobre a operação +, i.e. x(y + z) = xy + xz e(x+ y)z = xz+ yz para todos x, y, z 2 S.

0 é um elemento absorvente para ·, i.e. 0 · x = x · 0 = 0 para todo x 2 S.

Podemos omitir os parêntesis considerando que a operação · tem prioridade sobre a operação +.Um semianel S é idempotente se x+ x = x para todo o x 2 S. Um semianel idempotente (S,+, ·, 0, 1)

é caracterizado, então, pelo seguinte conjunto de propriedades para todo x, y, z 2 S:

x+ (y+ z) = (x+ y) + z, (3.1)x+ y = y+ x, (3.2)x+ 0 = x, (3.3)x+ x = x, (3.4)

x(yz) = (xy)z, (3.5)1x = x, (3.6)x1 = x, (3.7)

x(y+ z) = xy+ xz, (3.8)(x+ y)z = xz+ yz, (3.9)

0x = 0, (3.10)x0 = 0. (3.11)

As propriedades 3.1-3.4 correspondem, respectivamente, à associatividade, comutatividade, elemento neutroe idempotência do operador + (e definem um monóide comutativo e idempotente). As propriedades 3.5 a 3.7indicam que S com a operação · é um monóide. As propriedades 3.8 e 3.9 correspondem à distributividadede · sobre +. Finalmente, as propriedades 3.10 e 3.11 definem o elemento absorvente para ·.

Definimos num semianel idempotente a seguinte relação de ordem:

x ydef= x+ y = y.

24

Page 7: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

As operações + e . são monótonas em relação a , i.e. para todo o x, y, z 2 S temos que:

x y ! x+ z y+ z, (3.12)x y ! z+ x z+ y, (3.13)

x y ! xz yz, (3.14)x y ! zx zy. (3.15)

Definição 3.13 (Álgebra de Kleene) Uma álgebra de Kleene é uma estrutura algébrica (S,+, ·,? , 0, 1)onde (S,+, ·, 0, 1) é um seminanel idempotente e ? é uma nova operação unária que verifica as seguintespropriedades para todo x, y, z 2 S:

1+ xx? x?, (3.16)1+ x?x x?, (3.17)

z+ yx x ! y?z x, (3.18)z+ xy x ! zy? x. (3.19)

Podemos considerar o conjunto de expressões regulares sobre um alfabeto ⌃ uma estrutura algébrica seconsiderarmos as operações + e ·, one o elemento neutro, 1, de · é o " e o elemento neutro , 0, de + éo ;. Duas expressões regulares r e s verificam r = s se as suas linguagens são iguais, i.e L(r) = L(s).Em particular, r s se L(r) ✓ L(s). Atendendo às propriedades das operações sobre linguagens, temos oseguinte teorema.

Teorema 3.14 Dado um alfabeto ⌃, o conjunto das expressões regulares ER forma uma álgebra deKleene (ER,+, ·,? , ;, ").

Dem. Que (ER,+, ·,? , ;, ") é um semianel idempotente resulta directamente da definição de equivalência deexpressões regulares e das propriedades da reunião e concatenação de linguagens, e que foram definidasno Teorema 2.19 do Capítulo 2. Por exemplo, para mostrar que para quaisquer expressões regularesr e s, se tem r + s = s + t, basta ver que L(r + s) = L(r) [ L(s) = L(s) [ L(r) = L(s + t). Domesmo modo se t for também uma expressão regular, para provar que r(st) = (rs)t basta ver queL(r(st)) = L(r)L((st)) = L(r)(L(s)L(t)) = (L(r)L(s))L(t) = L((rs))L(t) = L((rs)t).Falta demonstrar que verificam as propriedades 3.16–3.19. Sendo r e s duas expressões regulares sejaA = L(r) e B = L(s). Neste caso a relação é a relação ✓ em ⌃?. Para a propriedade 3.16, "+rr? r?,temos que mostrar que

{"} [AA? ✓ A?.

Seja x 2 {"} [AA?. Se x = ", então por definição x 2 A?. Senão, existe l 2 N, tal que x 2 Al+1, logox 2 A?. Analogamente demonstra-se a propriedade 3.17. Para a propriedade 3.18, s+rx x ! r?s x

,temos que mostrar queB [AX ✓ X ! A?B ✓ X.

Se B [ AX ✓ X, então B ✓ X e AX ✓ X. Temos então que AB ✓ AX ✓ X, isto é, AB ✓ X. EntãoA2B ✓ AX ✓ X, isto é A2B ✓ X. Por indução podemos provar que AnB ✓ X, para n 2 N. Verifica-separa n = 1. Suponhamos que AnB ✓ X, então An+1B = AAnB ✓ AX ✓ X. Logo, A?B ✓ X. Emparticular temos que B [A(A?B) = A?B:

B [A(A?B) = ({"} [AA?)B = A?B.

De modo análogo demonstra-se a propriedade 3.19. ⇤

25

Page 8: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Podemos então concluir que para determinar se duas expressões regulares são equivalentes, r1 = r2bastaria que isso fosse consequência das propriedades da Álgebra de Kleene. Contudo, na prática, descobrirquais as igualdades a usar não é tarefa fácil. Vamos considerar alguns exemplos. Por exemplo, mostrar que

"+ rr? = r?.

Pela propriedade 3.16 já temos que " + rr? r?. Temos que demonstrar que r? " + rr?, ouequivalentemente que

r?" "+ rr?.

Esta expressão é o lado direito da implicação na propriedade 3.18 com z substituído por ", y substituídopor r e x substituído por "+ rr?. Basta então demonstrar que o lado esquerdo da implicação se verifica, i.e.

"+ r("+ rr?) "+ rr?.

Mas isto é verdade pela propriedade 3.16, substituindo o lado esquerdo de por ("+rr?), isto é, porque("+ rr?) r? e considerando as monotonias 3.13 e 3.15. De modo analogo se prova que

"+ r?r = r?.

Considera agorar?r? = r?.

Mostramos, primeiro, que r?r? r?. Como "+ rr? = r?, temos rr? r?. Então, por 3.4, r? + rr? r?

e pela propriedade 3.18, temos r?r? r?. Para a outra desigualdade,

r?r? = r?("+ rr?) = r? + r?rr?.

Donde concluímos que r?r? = r?.Finalmente vamos ver que

(r+ s)? = r?(sr?)?.

Para mostrar que (r+ s)? r?(sr?)?, nota que:

" r?(sr?)?

rr?(sr?)? r?(sr?)?

sr?(sr?)? (sr?)?

r?(sr?)?.

Então,

"+ (r+ s)r?(sr?)? "+ rr?(sr?)? + sr?(sr?)?

r?(sr?)?.

A desigualdade segue da propriedade 3.18. Considerando a monotonia dos operadores, temos a outradesigualdade:

r?(sr?)? r+ s?((r+ s)(r+ s)?)?

(r+ s)?(r+ s)?)?

(r+ s)?.

A proposição seguinte resume algumas das propriedades obtidas.

26

Page 9: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Proposição 3.15 Quaisquer que sejam as expressões regulares r e s, as seguintes propriedades verificam-se:

1. r? = "+ rr?.

2. r?r? = r?.

3. (r+ s)? = r?(sr?)?.

4. (r+ s)? = (r?s?)?.

5. r(sr)? = (rs)?r

6. r?? = r?

Dem. As propriedades 1. a 3. foram obtidas acima. As restantes podem ser demonstradas de forma análogaou deduzidas directamente a partir das propriedades das linguagens consideradas no Teorema 2.19 doCapítulo 2. ⇤

Lema 3.16 (de Arden) Sejam r e s duas expressões regulares sobre um alfabeto ⌃. A equação x =s + xr (respectivamente x = s + rx) tem como solução mínima a expressão sr? (respectivamente r?s),que é única se " /2 L(r).

Dem. Para ver que sr? é uma solução de x = s+ xr basta ver que

s+ sr?r = s("+ r?r) = sr?,

e de modo análogo se mostra que r?s é solução de x = s + rx. Da propriedade 3.19 (respectivamente3.18) concluí-se que sr? x (respectivamente r?s x) para qualquer x que seja solução da equação,logo é mínima. Finalmente, suponhamos que " /2 L(r) e que t é uma solução de x = s + xr. Logo,sr? t Vamos ver que também t sr?. ⇤

3.2 Expressões regulares e padrões

Em várias aplicações e linguagens de programação usam-se variantes das expressões regulares, denominadostambém por padrões, para descrever e reconhecer conjuntos de palavras (sequências de caracteres) quecorrespondem a linguagens regulares:

em linguagens de programação que manipulam sequências de caracteres : bash, Tcl, Perl, Python,etc

reconhecedores de padrões em ficheiros, como o comando grep em UNIX: grep ’ex*’ teste.txt

analisadores lexicais, como lex, que permitem seccionar um texto em elementos identificados (tokens):p.e. num programa em C, identificar o que são palavras reservadas (if, while, struct,. . . ), variáveis,constantes, operadores, etc. São usados pelos compiladores.

editores de texto, na procura de palavras.

Um padrão é uma sequência de símbolos duma dada forma que representa uma linguagem num dadoalfabeto. O conjunto de palavras que são reconhecidas por um dado padrão ↵ denota-se por L(↵).

27

Page 10: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

3.2.0.1 Padrões para expansão de nomes de ficheiros

Estes padrões são usuais em linguagens de comandos em UNIX, por exemplo na bash. O alfabeto é o conjuntode caracteres do código ASCII (ou UNICODE). Os padrões normalmente usados são os da tabela seguinte.

Padrão Reconhece Exemplo

a o carácter a ls -l ola? qualquer carácter do alfabeto ls -l ex?.c* zero ou mais caracteres ls -l *.c

[...] qualquer carácter da lista ls -l ex*.[ch][c-d] qualquer carácter entre dois caracteres separados por

-ls -l ex[1-9].c

[^...] caracteres que não pertencem à lista ls -l ex[^12].c{...} conjuntos alternativos ls -l *.{gif,jpg}

Tabela 3.1: Padrões usuais de “expressões regulares”

3.2.0.2 Regexp

Estes padrões são geralmente usados no comando grep do UNIX e em linguagens de programação como oPerl, o Python e o Tcl.

Salientámos os seguintes padrões atómicos:

Padrão atómico Reconhece Exemploa o carácter a a\a o carácter especial a \n. qualquer carácter .

[...] qualquer carácter da lista [abc]qualquer carácter entre dois caracteres separados por-

[a-z]

[^...] caracteres que não pertencem à lista [^0-9]^ o inicio da palavra ^a$ o fim da palavra a$

Tabela 3.2: Padrões atómicos

Em relação padrões compostos, para além das operações de união, concatenação e fecho de Kleene,consideram-se o r+ que é equivalente a r + r?, a opção r? que é equivalente a r + " e o agrupamento, que éum operação que pode não ser regular.

Padrão composto Reconhece Exemploregex|regex qualquer dos padrões [0-9]|[+-]regexregex concatenação de padrões [0-9][a-z]

regex? zero ou mais regex [0- 9]?

regex+ um ou mais regex [0- 9]+

regex? zero ou um regex [0-9]?(regex) regex (permite agrupamentos) (a|o)

Tabela 3.3: Padrões compostos

28

Page 11: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.34

Autómatos finitos

Neste capítulo vamos introduzir outras estruturas que permitem caracterizar as linguagens regulares. Aprincipal vantagem, destas novas estruturas, sobre a representação com expressões regulares é a de terem,naturalmente, associado um algoritmo que testa (em tempo linear) a pertença de uma palavra à linguagemque representam. Para além desta característica, a expressividade aparente dos autómatos, isto é, a facilidadecom que somos capazes de os escrever, é muito maior do que a das expressões regulares.

4.1 Autómatos finitos determinísticos

Definição 4.1 (DFA) Um autómato finito determinístico (DFA) é um quintúplo ordenado hQ,⌃, �, q0, Fiem que:

Q é um conjunto finito, não vazio, a que chamamos o conjunto dos estados;

⌃ é um conjunto finito, não vazio, que constitui o alfabeto do autómato;

� é uma função total � : S⇥ ⌃ ! S, chamada função de transição;

q0, com q0 2 Q, é o estado inicial;

F, com F ✓ Q, é o conjunto dos estados finais.

Um DFA é muitas vezes representado informalmente por um diagrama , por um digrafo com estados earcos etiquetados. Os arcos dos autómatos costumam designar-se por transições .

Exemplo 4.2 O autómato A = h{q0, q1}, {0, 1}, �, q0, {q1}i com

�(q0, 0) = q1 �(q0, 1) = q0 �(q1, 0) = q1 �(q1, 1) = q0,

é representado pelo seguinte diagrama:

q0 q1

01

1

0

29

Page 12: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

O estado inicial é marcado com uma seta a entrar no nó respectivo e os estados finais com umadupla linha. Usalmente também se descreve a função de transição por uma tabela onde cada colunacorresponde a um símbolo e cada linha a um estado. Os estados iniciais são marcados com um setae os finais com ?. Neste caso, seria

� 0 1

! q0 q1 q0

?q1 q1 q1.

Informalmente, para verificarmos se uma dada palavra pertence à linguagem definida por um dadoautómato, se uma palavra é “reconhecida” ou “aceite” pelo autómato, procedemos da seguinte forma:

1. Começamos por nos “situar” no estado inicial do autómato. Aquele que tem, por convenção, umapequena seta a apontar para ele.

2. Para cada uma das letras da palavra, e por ordem, “passamos” para o estado do autómato para o qual“aponta” a transição com o nome da letra em causa, a partir do estado em que “estamos”.

3. Quando esgotamos as letras da palavra, usando o procedimento do passo anterior, o estado em quenos “encontramos” determina o sucesso, ou não, da “aceitação” da palavra: se o estado for final (umdaqueles que está representado com linha dupla) a palavra é “aceite”, e não o é, caso contrário.

Para definir rigorosamente este processo e assim obtermos uma definição formal da linguagem associadaa um DFA, comecemos por definir indutivamente, para cada autómato, a seguinte extensão natural de � :

� : Q⇥ ⌃? -! Q

em que

(8q) (q 2 Q ) �(q, ") = q)

(8q 8� 8⇢) ((q 2 Q^ � 2 ⌃^ ⇢ 2 ⌃?) ) �(q,�⇢) = �(�(q,�), ⇢)).(4.1)

Definição 4.3 (Linguagem representada por um DFA) Seja A = hQ,⌃, �, q0, Fi um DFA. A lin-guagem L(A) representada por A define-se como

L(A) = {⇢ 2 ⌃? | �(q0, ⇢) 2 F}. (4.2)

Exemplo 4.4 A palavra 100 pertence à linguagem definida pelo autómato A (Exemplo 4.2) porque

�(q0, 100) = �(�(q0, 1), 00) = �(q0, 00)

= �(�(q0, 0), 0) = �(q1, 0)

= �(�(q1, 0), ") = �(q1, ")

= q1 2 F.

A palavra 01 não pertence à mesma linguagem porque

�(q0, 01) = �(�(q0, 0), 1) = �(q1, 1)

= �(�(q1, 1), ") = �(q0, ")

= q0 /2 F.

Exercício 5 Seja B a linguagem das palavras de alfabeto {0, 1} que representam em binário númerosmúltiplos de 5.

30

Page 13: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

1. Descreve um autómato finito determinístico que reconheça esta linguagem.2. Para o autómato encontrado, prova que o mesmo reconhece a linguagem B.

Exercício 6 Considera o autómato finito representado na figura.

q0 q1 q2

0

1 1

0

0, 1

1. Constrói uma descrição formal para este autómato como um tuplo A = hQ,⌃, �, q0, Fi;2. Indica quais das seguintes palavras são aceites por este autómato: 101001, 111111, 11001010111 e

0000011000;3. Diz (em português) qual a propriedade que uma palavra de {0, 1}? têm de ter para ser aceite por este

autómato.

Exercício 7 Considera os seguintes autómatos finitos do alfabeto ⌃ = {0, 1},

A = h{q0, q1},⌃, �A, q0, {q1}iB = h{q0, q1, q2},⌃, �B, q0, {q1, q2}i

com as funções de transição dadas por:

�A(q0, 0) = q0 �A(q0, 1) = q1

�A(q1, 0) = q0 �A(q1, 1) = q1

�B(q0, 0) = q1 �B(q0, 1) = q2

�B(q1, 1) = q2 �B(q2, 0) = q1

1. Representa cada um dos autómatos por um digrafo.2. Diz quais das seguintes palavras são aceites por algum dos autómatos:

" 101 111

11001 01010 00011

3. Diz quais as linguagens reconhecidas pelos autómatos.

Definição 4.5 (Equivalência de autómatos) Dois autómatos dizem-se equivalentes se representa-rem a mesma linguagem.

Por vezes, por comodidade, relaxa-se um pouco a definição de DFA não exigindo que a função � :Q⇥⌃ ! Q seja total. Ou seja, permitindo que para algum estado não esteja definida a transição para algumsímbolo. Um autómato finito determinístico deste tipo A = hQ,⌃, �, q0, Fi em que a função de transiçãonão é total, normalmente designado como não completo, considera-se como abreviatura do DFA completoA 0 = hQ [ {q⌦},⌃, � 0, q0, Fi em que q⌦ /2 Q e definindo

� 0 : (Q [ {q⌦})⇥ ⌃ -! S [ {q⌦}

(q,�) 7-!��(q,�) quando �(q,�) está definidoq⌦ nos outros casos.

(4.3)

31

Page 14: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Exemplo 4.6 O seguinte autómato não completo

q0 q1 q20

1

0

0

é a abreviatura deste outro autómato ( completo)

q0 q1 q2

q⌦

0

1

1

0

0

1

0, 1

Exercício 8 Descreve um autómato finito que reconheça a linguagem das palavras de {0, 1}? que. . .1. não têm nenhum “1”;2. são diferentes de “1”;3. contêm pelo menos algum “0” e algum “1”;4. têm comprimento não inferior a 2;5. não contêm “101” como subpalavra-palavra;6. terminam em “1”;7. terminam em “1” mas não em “111”;8. têm pelo menos dois “0” consecutivos;9. terminam em “1” e têm pelo menos dois “0” consecutivos;

10. têm um número ímpar de “0” ou um número par de “1”;11. têm no máximo um par de “0” e um par de “1” consecutivos;12. são representação binária de inteiros positivos múltiplos de 4;13. são representação binária de inteiros positivos múltiplos de 2 mas não de 3;14. contêm (algures) pelo menos três “0” seguidos, mas não contêm dois ou mais “1” seguidos’15. se têm algum par de “0” adjacentes, este aparece antes de qualquer par de “1” adjacentes;16. não terminam em “1101” nem em “1011”;17. têm igual número de “0” e “1” e nenhum seu prefixo tem um número de “0” que excede em dois o

número de “1”, nem um número de “1” que excede em dois o número de “0”

Exercício 9 Seja A = hQ,⌃, �, q0, Fi um autómato finito determinístico e q um estado de A, tal que�(q,�) = q, 8� 2 ⌃. Mostra por indução no comprimento de ⇢, que 8⇢ 2 ⌃?, �(q, ⇢) = q.

Exercício 10 Descreve um autómato finito determinístico que reconheça a linguagem L das palavras dealfabeto {0, 1} em que não ocorrem sequências pares de 0’s imediatamente à esquerda de sequências ímparesde 1’s.

32

Page 15: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Exercício 11 Seja L a linguagem das palavras de alfabeto {0, 1} que representam em binário númerosmúltiplos de 5.

1. Descreve um autómato finito determinístico que reconheça esta linguagem.2. Para o autómato encontrado, prova que o mesmo reconhece a linguagem L.

4.1.1 O autómato complementar

Dada uma linguagem representada por uma expressão regular, é relativamente difícil encontrar a expressãoregular que representa a sua linguagem complementar. Esta operação é particularmente simples se se tratarde autómatos determinísticos finitos.

Exemplo 4.7 Consideremos a linguagem, L, das palavras de alfabeto ⌃ = {0, 1} que correspondem arepresentações binárias de inteiros múltiplos de 3. Um DFA que represente L pode ser o representadopelo seguinte diagrama:

q0 q2

q5

q1

q4

q3

0

1

0, 1

0

1

0, 1

0

1

0

1

A linguagem complementar desta, L, a linguagem das palavras que correspondem a inteiros que nãosão múltiplos de 3, será a linguagem gerada pelo autómato anterior, mas em que os estados finaise estados não finais foram trocados. Ou seja:

q0 q2

q5

q1

q4

q3

0

1

0, 1

0

1

0, 1

0

1

0

1

Claro que este reconhece " como pertencendo a L apesar de este não representar um número embinário. Mas isso é consequência da forma como definimos a linguagem.

33

Page 16: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Teorema 4.8 (complementar duma linguagem dada por um DFA) O complementar de uma lin-guagem dada por um DFA é também uma linguagem representável por um DFA. Para além disso seL = L(A) para um DFA completo A = hQ,⌃, �, q0, Fi, então a linguagem complementar L = L(A) com

A = hQ,⌃, �, q0, S \ Fi.

Dem. A demonstração é trivial pois, pela Definição 4.3,

⇢ 2 L , ⇢ 62 L , �(q0, ⇢) 62 F

, �(q0, ⇢) 2 S \ F

, ⇢ 2 L(A).

4.1.2 O autómato produto

Sejam A1 = hS1,⌃, �1, i1, F1i e A2 = hS2,⌃, �2, i2, F2i dois autómatos finitos determinísticos. Vamosconstruir um autómato produto A3 que vai simular o funcionamento simultâneo de A1 e A2. Estaconstrução vai permitir encontrar um DFA que represente L(A1) [ L(A2), o mesmo se passando paraL(A1) \ L(A2). Formalmente, A3 = hS3,⌃, �3, i3, F3i onde

S3 = S1 ⇥ S2 = {(q1, q2) | q1 2 S1 e q2 2 S2}

i3 = (i1, i2)�3((q1, q2), a) = (�1(q1, a), �2(q2, a)) 8 q1 2 S1, q2 2 S2, a 2 ⌃

A definição de F3 indicará se a linguagem de A3 será a intersecção ou a reunião das linguagens de A1

e de A2. Se definirmos

F3 = F1 ⇥ F2 = {(q1, q2) | q1 2 F1 ^ q2 2 F2}

O autómato A3 vai aceitar uma palavra se e só se A1 e A2 também a aceitarem, i.e., L(A1)\ L(A2) =L(A3).

Exercício 12 Mostra por indução em |⇢|, que 8 ⇢ 2 ⌃?, b�3((q1, q2), ⇢) = ( b�1(q1, ⇢), b�2(q2, ⇢))

Proposição 4.9 L(A3) = L(A1) \ L(A2).

Dem.

⇢ 2 L(A3) () b�3(i3, ⇢) 2 F3

() b�3((i1, i2), ⇢) 2 F1 ⇥ F2

() ( b�1(i1, ⇢), b�2(i2, ⇢)) 2 F1 ⇥ F2

() b�1(i1, ⇢) 2 F1 ^ b�2(i2, ⇢) 2 F2

() ⇢ 2 L(A1) ^ ⇢ 2 L(A2)

() ⇢ 2 L(A1) \ L(A2).

34

Page 17: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Como no caso da construção por subconjuntos para a obtenção de um autómato finito determinísticoequivalente a um não determinístico (ver Secção 4.2), a construção da função de transição pode só envolveros estados do autómato produto que são atingíveis do estado inicial.

Exemplo 4.10 Considera os seguintes autómatos finitos determinísticos:

A1 A2

q0 q1a

b a, bq0 q1

ba, c b

a, c

b?a(a+ b)? ((a+ c) + bb?(a+ c))?bb?

Como os autómatos não têm o mesmo alfabeto, antes de calcular o autómato produto é necessáriotransformar o primeiro autómato sem mudar a linguagem representada por ele.

A1 A2

q0 q1

q2

a

b

c

a, b

c

a, b, c

q0 q1

ba, c b

a, c

Sejam então A1 = hS1, {a, b, c}, �1, q0, , F1) e A2 = hS2, {a, b, c}, �2, q0, , F2i onde S1 = {q0, q1, q2}, S2 ={q0, q1}, F1 = {q1}, F2 = {q1}, e as funções de transição �1 e �2 são respectivamente,

�1 a b c

! q0 q1 q0 q2

?q1 q1 q1 q2

q2 q2 q2 q2

�2 a b c

! q0 q0 q1 q0

?q1 q0 q1 q0

Para o autómato produto A3 = hS3, {a, b, c}, �3, (q0, q0), F3i, tem-se

S3 = {(q0, q0), (q1, q0), (q2, q0), (q0, q1), (q1, q1), (q2, q1)}

e a função delta �3 é dada por

�3 a b c

! (q0, q0) (q1, q0) (q0, q1) (q2, q0)(q1, q0) (q1, q0) (q1, q1) (q2, q0)(q2, q0) (q2, q0) (q2, q1) (q2, q0)(q0, q1) (q1, q0) (q0, q1) (q2, q0)(q1, q1) (q1, q0) (q1, q1) (q2, q0)(q2, q1) (q2, q0) (q2, q1) (q2, q0)

.

Se o autómato produto representar a intersecção das linguagens de A1 e A2, temos que F3 =F1 ⇥ F2 = {(q1, q1)}. O diagrama do autómato produto A3 é:

35

Page 18: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

A3

(q0, q0) (q0, q1)

(q1, q0)

(q2, q0) (q2, q1)

(q1, q1)

a

b

c

a

b

c

a

b

c

a, c

b

a, c

b

a b

c

O autómato A3 aceita a linguagem constituída pelas palavras de alfabeto {a, b, c} que têm alguma, terminam em b e não têm c’s.

Se num autómato produto se modificar o valor de F3 podemos obter um autómato que reconhece areunião das linguagens de A1 e A2. O autómato A3 aceita uma palavra se pelo menos um dos autómatosA1 ou A2 aceitar:

F3 = {(q1, q2) | q1 2 F1 ou q2 2 F2}.

Proposição 4.11 L(A3) = L(A1) [ L(A2).

Exercício 13 Demonstra a Proposição 4.11.

Exemplo 4.12 Para o exemplo do Exercício 4.10 para se obter um autómato para a reunião dalinguagens, A3, basta considerar o conjunto de estados finais constituído pelos pares em que pelomenos um dos estados seja final,

F3 = {(q1, q0), (q0, q1), (q1, q1), (q2, q1)}.

36

Page 19: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

O diagrama do autómato da reunião A3 fica:

A3

(q0, q0) (q0, q1)

(q1, q0)

(q2, q0) (q2, q1)

(q1, q1)

a

b

c

a

b

c

a

b

c

a, c

b

a, c

b

a b

c

Exemplo 4.13 Considera os seguintes autómatos finitos determinísticos:

A1 A2

q0 q1

q2

a

ba, b

a, b

q0 q1

q2

b

aa, b

a, b

A função de transição para o autómato produto é:

�3 a b

! (q0, q0) (q1, q2) (q2, q1)(q1, q2) (q2, q2) (q2, q2)(q2, q1) (q2, q2) (q2, q2)(q2, q2) (q2, q2) (q2, q2)

O autómato para a intersecção A\ reconhece a linguagem {a} \ {b} (ou seja, ;) e o da reuniãoA[, reconhece a linguagem {a}[ {b}. Os diagramas para o autómato da intersecção e da reunião, são

37

Page 20: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

respectivamente:

A\ A[

(q0, q0) (q1, q2)

(q2, q1) (q2, q2)

a

b a, b

a, b

a, b

(q0, q0) (q1, q2)

(q2, q1) (q2, q2)

a

b a, b

a, b

a, b

Exercício 14 Exemplifica todas as construções anteriores considerando as linguagens A = {aa} e B = {bbb}

de alfabeto {a, b} e os respectivos autómatos.

4.2 Autómatos finitos não determinísticos (NFA)

Muitas vezes, para facilidade formal de demonstração ou por uma expressividade mais evidente, optamos poroutro tipo de autómatos finitos, os autómatos não determinísticos, para representar linguagens regulares.Estes, como vamos ver, têm uma composicionalidade evidente, tornando as operações elementares dasexpressões regulares (concatenação, disjunção e fecho de Kleene) em transformações simples nesta classede autómatos.

Em vez de termos um autómato, em que não temos “que tomar decisões” sobre qual o caminho quevamos tomar ao ler uma palavra, passamos a ter um autómato em que de um estado, e lendo um dadosímbolo, podemos ir para diversos estados. Mesmo o estado em que começamos a ler uma palavra pode nãoser único. Um NFA pode ter um conjunto não singular de estados iniciais e o estado que se usa para começara ler uma palavra é uma das escolhas que temos que fazer.

Definição 4.14 (NFA) Um autómato finito não determinístico (NFA) é um quíntuplo ordenado hS,⌃, �, I, Fiem que:

S é um conjunto finito, não vazio, a que chamamos o conjunto dos estados;

⌃ é um conjunto finito, não vazio, que constitui o alfabeto;

� é uma função parcial � : S⇥ ⌃ ! P(S), chamada função de transição;

I, com I ✓ S e I 6= ;, é o conjunto de estados iniciais;

F, com F ✓ S, é o conjunto dos estados finais.

Exemplo 4.15 Considera o NFA A = h{q0, q1}, {0, 1}, �, {q0}, {q1}i com

�(q0, 0) = {q0, q1} �(q0, 1) = {q0}

38

Page 21: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

q0 q1

0, 1

0

Como o estado do autómato, resultante da leitura de uma palavra, passa a ser então dependente da(ou das) escolha(s) que tenhamos feito ao longo desse processo, dizemos que uma palavra é “aceite” por umNFA, se existir um conjunto de escolhas que nos conduza a um estado final. Para captar esta possibilidadede escolha dos diversos percursos que podemos percorrer com a leitura de uma mesma palavra, a funçãode transição de um NFA, não faz corresponder a cada par (estado, letra) um só novo estado mas sim umconjunto de estados. A função de transição estendida vai fazer corresponder para cada palavra, não umconjunto de estados para cada estado de partida, mas um conjunto de estados para cada conjunto de estadosque representa as diversas situações resultantes das diferentes possíveis escolhas até aí feitas.

Então, da mesma forma que foi feito para os autómatos determinísticos (DFA) podemos definir umafunção de transição estendida

� : P(S)⇥ ⌃? -! P(S)

com a seguinte definição recursiva:

(8X) (X 2 P(S) ) �(X, ") = X)

(8X 8� 8⇢) ((X 2 P(S)^ � 2 ⌃^ ⇢ 2 ⌃?) ) �(X,�⇢) = �([

s2X

�(s,�), ⇢)). (4.4)

Em particular, para qualquer X 2 P(S) e � 2 ⌃, temos que �(X,�) =S

s2X �(s,�).Podemos então definir a linguagem representada por um NFA.

Definição 4.16 (Linguagem representada por um NFA) Seja A = hS,⌃, �, I, Fi um NFA. A lingua-gem L(A) representada por A define-se como

L(A) = {⇢ 2 ⌃? | �(I, ⇢) \ F 6= ;}, (4.5)

em que � é definida como atrás.

Uma outra formulação pode ser dada a esta Definição 4.16 que, por vezes, se torna bastante cómodapara provar certas proposições. Em vez de utilizarmos os possíveis conjuntos de estados correspondentesà avaliação sucessiva de �(I, ⇢), podemos referir directamente o conjunto de estados que conduzem, comsucesso, a avaliação de uma palavra ⇢ de um estado inicial a um estado final.

Lema 4.17 Seja A = hS,⌃, �, I, Fi um NFA e ⇢ = �1�2 . . .�|⇢| 2 ⌃?, é condição necessária e suficientepara que ⇢ 2 L(A), que

(9q0, q1, . . . , q|⇢| 2 S) (q0 2 I ^ q|⇢| 2 F ^ (8i 2 [0, |⇢|[ qi 2 �(qi-1,�i))). (4.6)

Dem. A demonstração sai directa, da Definição 4.16 e do enunciado do lema. ⇤

Exercício 15 Demonstra o Lema 4.17.

O lema seguinte mostra que a leitura de uma palavra tanto pode ser feita da esquerda para a direitacomo da direita para a esquerda.

Lema 4.18 Seja A = hS,⌃, �, I, Fi uma NFA e ⇢ 2 ⌃? com ⇢ = ⇢ 0� para algum ⇢ 0 2 ⌃? e � 2 ⌃. Então,para qualquer conjunto de estados X ✓ S,

�(X, ⇢) = �(�(X, ⇢ 0),�).

39

Page 22: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Dem. A demonstração segue por indução sobre o comprimento de |⇢|. Se |⇢| = 0 a proposição não fazsentido, pelo que comecemos por provar para ⇢ de comprimento unitário, ou seja para ⇢ 2 ⌃. Nessecaso temos trivialmente que, para qualquer conjunto de estados X,

�(X, "⇢) = �(�(X, "), ⇢).

Suponhamos, então, que para qualquer palavra ⇢, com |⇢| < n, se se tiver ⇢ = ⇢ 0� então, para qualquerconjunto de estados X, �(X, ⇢ 0�) = �(�(X, ⇢ 0),�). Seja então ⇢ uma palavra tal que |⇢| = n e ⇢ = ⇢ 0�.Então seja � 0 2 ⌃ e ⇢ 00 2 ⌃? tal que ⇢ 0 = � 0⇢ 00. Então ⇢ = � 0⇢ 00� com |⇢ 00�| < n. Então

�(X, ⇢) = �(X,� 0⇢ 00�)

= �(�(X,� 0), ⇢ 00�) (pela definição de � (4.4))= �(�(�(X,� 0), ⇢ 00),�) (pela hipótese de indução)= �(�(X,� 0⇢ 00),�) (pela definição de � (4.4))= �(�(X, ⇢ 0),�).

Portanto o Lema é válido para qualquer palavra ⇢ de qualquer comprimento. ⇤

Definição 4.19 (linguagem reversa) Seja L uma linguagem de alfabeto ⌃, e R : ⌃? ! ⌃? a funçãodada pela seguinte definição indutiva (ver 2.10):

(8�) (� 2 ⌃ [ {"} ) �R = �)

(8� 8⇢) ((� 2 ⌃^ ⇢ 2 ⌃?) ) (�⇢)R = ⇢R�).

A linguagem LR é a linguagem de alfabeto ⌃, definida como:

LR = {⇢ 2 ⌃? | ⇢R 2 L}.

Definição 4.20 (autómato reverso) Seja A = hS,⌃, �, I, Fi um NFA, definimos como o seu autómatoreverso, o NFA AR = hS,⌃, �R, F, Ii com

�R : S⇥ ⌃ -! P(S)

(s,�) 7-! {x 2 S | �(x,�) 3 s}

Proposição 4.21 Seja A um NFA, então

L(A)R = L(AR).

Dem. A demonstração é trivial, usando o Lema 4.17. ⇤

Exemplo 4.22 Consideremos o NFA (neste caso até um DFA) dado pelo diagrama seguinte, querepresenta a linguagem das palavras de alfabeto ⌃ = {0, 1} que têm 110 como prefixo:

q0 q1 q2 q31 1 0

0, 1

A linguagem das palavras, com o mesmo alfabeto, que têm 011 como sufixo, tem o seguinte NFA comorepresentante.

40

Page 23: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

q0 q1 q2 q30

0, 1

1 1

Exercício 16 Demonstra a Proposição 4.21.

Teorema 4.23 (Método de construção de subconjuntos) Seja A um autómato finito não determi-nístico, então existe um autómato finito determinístico A 0 tal que

L(A) = L(A 0).

Dem. Seja A = hS,⌃, �, I, Fi o NFA. Consideremos o DFA A 0 = hP(S),⌃, � 0, I, F 0i em que

F 0 = {X ✓ S | X \ F 6= ;}

e

� 0 : P(S)⇥ ⌃ -! P(S)

(X,�) 7-![

s2X

�(s,�).

É trivial verificar que este novo DFA está bem definido. Necessitamos de provar somente a equivalênciaentre os dois autómatos.

Comecemos por definir b� 0 : P(S)⇥ ⌃? ! P(S), indutivamente, como

b� 0(X, ") = X

b� 0(X,�⇢) = b� 0(� 0(X,�), ⇢),

e provemos, por indução sobre o comprimento de ⇢ (⇢ 2 ⌃?), que

b� 0(I, ⇢) = �(I, ⇢).

Se |⇢| = 0, e portanto ⇢ = ", tem-se, pela definição, que

�(I, ") = I = b� 0(I, ").

Suponhamos então que(8⇢ (|⇢| < n =) �(I, ⇢) = b� 0(I, ⇢))).

Seja ⇢ 2 ⌃? com |⇢| = n. Então ⇢ = ⇢ 0� para algum ⇢ 0 2 ⌃? com |⇢ 0| = n- 1.

�(I, ⇢) = �(I, ⇢ 0�)

= �(�(I, ⇢ 0),�) (pelo Lema 4.18)

= �(b� 0(I, ⇢ 0),�) (pela hipótese de indução)

= �

0

@[

s2 b� 0(I,⇢ 0)

�(s,�), "

1

A (pela definição de �)

=[

s2 b� 0(I,⇢ 0)

�(s,�) (pela definição de �)

= � 0(b� 0(I, ⇢ 0),�)

= b� 0(I, ⇢ 0�)

= b� 0(I, ⇢)

41

Page 24: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Logo L(A) = L(A 0). ⇤

Exemplo 4.24 Consideremos o NFA representado pelo seguinte diagrama:

q0 q1

q2

q3 q4

0

1

0

1

1

01

1

0

10

1

Este autómato representa a linguagem das representações binárias que correspondem a inteiros quenão são múltiplos de 3, concatenada com a linguagem das palavras que começam com um 1 e têm umnúmero ímpar de 0’s.

Para obtermos um DFA equivalente a este NFA, prossigamos com a construção dos subconjuntosque resulta do Teorema anterior. Tem-se

� 0 1

{q0} {q0} {q1}

{q1} {q2} {q0, q3}

{q2} {q1} {q2, q3}

{q0, q3} {q0, q4} {q1, q3}

{q2, q3} {q1, q4} {q2, q3}

{q1, q3} {q2, q4} {q0, q3}

{q0, q4} {q0, q3} {q1, q4}

{q1, q4} {q2, q3} {q0, q3, q4}

{q2, q4} {q1, q3} {q2, q3, q4}

{q0, q3, q4} {q0, q3, q4} {q1, q3, q4}

{q1, q3, q4} {q2, q3, q4} {q0, q3, q4}

{q2, q3, q4} {q1, q3, q4} {q2, q3, q4}

O estado inicial é o estado {q0}, e são finais todos os estados a cujo nome pertence q4. O diagramado DFA resultante é, então, o seguinte.

42

Page 25: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3{q0} {q1}

{q2} {q2, q3}

{q0, q3}

{q1, q3}

{q1, q4}

{q0, q4}

{q2, q4}

{q0, q3, q4}

{q1, q3, q4}

{q2, q3, q4}

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

Exercício 17 Considera os autómatos finitos não-determinísticos representados pelos seguintes diagramas:A:

a b

ba

b

b

B:

b b

b

a

ab

Diz quais das seguintes palavras são aceites por A ou B:1. "

2. aa

3. aba

4. abba

5. bba

6. abab

Exercício 18

1. Constrói um autómato finito não-determinístico que reconheça a linguagem do alfabeto ⌃ = {0, 1}

das palavras com um 1 na terceira posição a contar do fim.2. Considera o seguinte autómato finito não-determinístico representado pelo seguinte diagrama:

0 1

aa, b

b

Converte, pela construção dos subconjuntos, o autómato num autómato finito determinístico.3. Seja A o autómato finito de alfabeto {a, b, c} representado pelo diagrama seguinte.

43

Page 26: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

0 1 2 3

a, b, c

a b b

a) Qual é a linguagem reconhecida pelo autómato A? Porquê?b) Usando o método da construção de subconjuntos, determina um autómato determinístico que

seja equivalente a A.c) Recorda que se um dado autómato determinístico hS,⌃, �, q0, Fi em que � é uma função total (não

encrava), reconhece L, então o autómato hS,⌃, �, q0, S \ Fi reconhece ⌃? \ L (isto é, a linguagemcomplementar de L).Por que é que a linguagem reconhecida pelo autómato seguinte não é a complementar da lingua-gem reconhecida por A?

0 1 2 3

a, b, c

a b b

4.3 Autómatos não determinísticos com transições por " (NFA")

Por vezes, seja pela sua expressividade intrínseca seja por facilitar construções formais, usamos NFAs queadmitem transições por ". À classe destes autómatos designamos normalmente por NFA".

Num NFA", de um estado seu não só podem partir transições por um mesmo símbolo para diversosestados (como num NFA) como podem existir transições para outros estados, que em vez de “consumirem”um caracter de ⌃, consomem ". Quando do estado q1 temos uma transição por " para o estado q2, issosignifica que quando “chegamos” a q1 (“vindos” de outro estado) podemos optar por “ir” (ou não) para oestado q2, sem que para isso tenhamos que “consumir” algum caracter.

Exemplo 4.25 O NFA" seguinte representa o Fecho de Kleene da linguagem das representaçõesbinárias dos inteiros congruentes com 2, módulo 3.

q0

q1 q2

q3

0

1

10"

" 0

1

"

Definição 4.26 (NFA") Um autómato finito não-determinístico com transições por " (NFA") é umquíntuplo ordenado hS,⌃, �, I, Fi em que

S é um conjunto finito, não vazio, a que chamamos o conjunto dos estados;

⌃ é um conjunto finito, não vazio, que constitui o alfabeto;

� é uma função parcial � : S⇥ ⌃ [ {"} ! P(S), chamada função de transição;

I, com I ✓ S e I 6= ;, é o conjunto de estados iniciais;

F, com F ✓ S, é o conjunto dos estados finais.

44

Page 27: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

O conceito de Fecho por ", a seguir formalizado, corresponde ao conjunto de estados que se podematingir a partir de um dado estado “viajando” somente por transições por ".

Definição 4.27 (Fecho por " de um conjunto de estados) Seja A = hS,⌃, �, I, Fi um NFA", e sejaX ✓ S um conjunto de estados de A. Definimos indutivamente o seguinte conjunto:

F0"(X) = X,

F1"(X) =[

s2X

�(s, "),

Fn" (X) =[

s2Fn-1" (X)

�(s, ").

Então o fecho por " de X (F"(X)) fica definido como:

F"(X) =[

n�0

Fn" (X).

Como se trata de um autómato finito, isto é, com um número finito de estados, este conjunto estátrivialmente bem definido. Quando X = {s} também se denomina F"(X) por fecho por " de s e pode-sedesignar por F"(s).

Exemplo 4.28 Considerando o NFA" do Exemplo 4.25 podemos calcular F"({q0}). Tem-se

F0"({q0}) = {q0},

F1"({q0}) = �(q0, ")

= {q1, q3},

F2"({q0}) = �(q1, ") [ �(q3, ")

= {q0}

Donde, F"({q0}) =S2

n=0 Fn" ({q0}) = {q0, q1, q2}.

Para definir formalmente a linguagem representada por um NFA", comecemos, como fizemos para osNFA, por estender a função de transições �.

Então, seja A = hS,⌃, �, I, Fi um NFA", definimos � como

� : P(S)⇥ ⌃? -! P(S)

com a seguinte definição recursiva:

(8X)(X 2 P(S) ) �(X, ") = F"(X)),

(8X 8⇢8�)((X 2 P(S)^ � 2 ⌃^ ⇢ 2 ⌃?) ) �(X,�⇢) = �

[

s2X

F"(�(s,�)), ⇢

!),

com F"(X) como está definido em 4.27.

Definição 4.29 (linguagem representada por um NFA") Seja A = hS,⌃, �, I, Fi um NFA". A lin-guagem, L(A), representada por A define-se como

L(A) = {⇢ 2 ⌃? | �(F"(I), ⇢) \ F 6= ;}, (4.7)

em que � e F" são definidos como atrás.

45

Page 28: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Podemos, como fizemos para a conversão de NFAs em DFAs, aplicar a definição de linguagem represen-tada por um NFA" para obter um algoritmo que encontre um DFA equivalente. Em vez disso, vamos usara definição de fecho por " de um estado para obter uma transformação de um NFA" num NFA equivalente.

Teorema 4.30 Dado um NFA" A, existe um NFA, A 0, tal que

L(A) = L(A 0).

Dem. Seja A = hS,⌃, �, I, Fi o NFA". Consideremos o NFA A 0 = hS,⌃, � 0, F"(I), Fi em em que

� 0 : S⇥ ⌃ -! P(S)

(s,�) 7-! F"

0

@[

s 02F"(s)

�(s 0,�)

1

A .

O NFA A 0 está trivialmente bem definido, e a equivalência dos autómatos segue directamente dasdefinições das linguagens representadas por estes autómatos, respectivamente 4.29 e 4.16. ⇤

Em muitos casos, e em especial para simplificar as demonstrações, é conviniente considerar NFA"s comum só estado inicial e um só estado final. O Lema seguinte mostra que tal é sempre possível.

Lema 4.31 Seja A = hS,⌃, �, I, Fi um NFA", existe um NFA", A 0 = hS 0,⌃, � 0, I 0, F 0i, equivalente a A,tal que:

1. tem somente um estado inicial I 0 = {s 00};

2. não há transições que “cheguem” do estado inicial (8s 2 S 0 8� 2 ⌃)(s 00 62 � 0(s,�)^ s 00 62 � 0(s, "));

3. tem somente um estado final F = {s 0f};

4. não há transições que “partam” do estado final (� 0(s 0f, ") = ;)^ (8� 2 ⌃ � 0(s 0f,�) = ;).

Um autómato que verifique estas propriedades denomina-se normalizado.

Dem. Se o autómato A já estiver nas condições requeridas, nada há a demonstrar. Caso isso não aconteça,seja S 0 = S [ {s 00, s

0

f}, com s 00, s0

f 62 S. Façamos I 0 = {s 00} e F 0 = {s 0f} e tomemos � 0 como extensão de �

� 0 : S 0 ⇥ ⌃ -! S 0

s 2 S, � 2 ⌃ [ {"} (s,�) 7-! �(s,�)

(s 00, ") 7-! F"(I)

s 2 F"(F) (s, ") 7-! {s 0f}.

(4.8)

4.4 Sistemas de Equações de Linguagens

Seja A = hQ,⌃, �, I, Fi um NFA (ou NFA" ou DFA). A linguagem esquerda de um estado q de A é o conjuntode palavras que levam o autómato dum estado inicial a esse estado. De modo análogo a linguagem direita éo conjunto de palavras que são aceites pelo autómato se começar a funcionar nesse estado, i.e. é a linguagemdo autómato hQ,⌃, �, {q}, Fi

Formalmente temos,

46

Page 29: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Definição 4.32 (linguagem direita) Seja A = hQ,⌃, �, I, Fi um autómato finito e q um seu estado.A linguagem direita de q é

Ds = { ⇢ 2 ⌃? | �(q, ⇢) 2 F }.

Definição 4.33 (linguagem esquerda) Seja A = hQ,⌃, �, I, Fi uma autómato finito e q um seu estado.A linguagem esquerda de q é

Eq = { ⇢ 2 ⌃? | q 2 �(I, ⇢) }.

As linguagens esquerdas de qualquer autómato finito satisfazem um sistema de equações de linguagens.

Teorema 4.34 Seja A = hQ,⌃, �, I, Fi um autómato finito onde Q = {q1, . . . , qn} e ⌃ = {�1, . . . ,�k}.Seja Eqi

a linguagem esquerda de cada estado qi 2 Q e seja

Eij =[

qi2�(qk,�j)

Eqk.

Então temos que

Eqi=

�S�j2⌃ Eij {�j} , se qi /2 I

S�j2⌃ Eij {�j} [ {"}, se qi 2 I.

(4.9)

Temos também que L(A) =S

qi2F Eqi.

Dem. Seja ⇢ 2 Eqipara algum estado qi /2 I. Então, por definição qi 2 �(I, ⇢). Como qi não é inicial

⇢ tem pelo menos uma letra, seja ⇢ = ⇢ 0�j com �j 2 ⌃ e ⇢ 0 2 ⌃?. Então existe um qk 2 �(I, ⇢ 0)tal que qi 2 �(qk,�j). Temos então que ⇢ 0 2 Eqk

✓ Eij. Logo ⇢ 2 Eij{�j} o que mostra queEqi

✓S

�j2⌃ Eij {�j}. Mostremos agora a outra inclusão. Suponhamos que ⇢ 2 Eij {�j} para alguma�j 2 ⌃ e qi 2 Q. Então ⇢ = ⇢ 0�j com ⇢ 0 2 Eij, isto é, existe qk tal que ⇢ 0 2 Eqk

, com qk 2 �(I, ⇢ 0)e também qi 2 �(qk,�j). Então qi 2 �(�(I, ⇢ 0),�j) = �(I, ⇢). Concluímos, assim, que ⇢ 2 Eqi

, o quemostra que

S�j2⌃ Eij {�j} ✓ Eqi

.

Se qi 2 I então por definição qi 2 �(I, ") o que mostra que " 2 Eqi.

Finalmente é evidente que ⇢ 2 L(A) se e só se existe um estado final qi 2 F tal que ⇢ 2 Eqi. ⇤

Exemplo 4.35 Considerando o NFA do Exemplo 4.24 temos as seguintes igualdades

Es0= Es0

{0} [ Es1{1} [ {"}

Es1= Es2

{0} [ Es0{1}

Es2= Es1

{0} [ Es2{1}

Es3= Es4

{0} [ (Es1[ Es2

[ Es3){1}

Es4= Es3

{0} [ Es4{1}

e L(A) = Es4.

4.5 Equivalência entre Linguagens Regulares e Linguagens Aceitespor Autómatos Finitos

As linguagens aceites por autómatos finitos são precisamente as linguagens regulares, i.e. as descritas porexpressões regulares.

47

Page 30: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Teorema 4.36 (Kleene[Kle56]) Uma linguagem é reconhecível por um autómato finito se e só se forregular. Ou seja, o conjunto das linguagens representadas pelas expressões regulares é o mesmo queo representado por DFA.

Para a demonstração deste teorema é necessário mostrar que:

Qualquer linguagem descrita por uma expressão regular é aceite por um autómato finito.

Qualquer linguagem aceite por um autómato finito é descrita por uma expressão regular.

Existem vários modos de conversão entre estes dois modelos. Vamos para cada caso analisar alguns eindicar quais as suas características e vantagens.

4.5.1 De Expressões Regulares para Autómatos Finitos

Neste caso temos de demonstrar que:

Teorema 4.37 Seja L uma linguagem representada por uma expressão regular r, L = L(r)), entãoexiste um DFA A, tal que L = L(A).

Pretendemos obter para cada expressão regular r um DFA equivalente. Alguns dos métodos convertema expressão regular r num autómato finito não determinístico equivalente, NFA. Como, pelo Teorema 4.23apresentado na Secção 4.2, podemos transformar este NFA num DFA, temos construído o autómato preten-dido.

As conversões distinguem-se ainda pelo facto dos NFAs obtidos terem ou não transições por ".Temos, entre outros, os seguintes algoritmos (a que habitualmente se associa um autómato com o

mesmo nome):

Algoritmo de Thompson: produz um NFA".

Algoritmo de Brzozowski: produz um DFA, denominado autómato de derivavas.

Algoritmo de Glushkov: produz um NFA, denominado autómato de posições.

Algoritmo de Antimirov: produz um NFA, denominado autómato de derivadas parciais.

Vamos considerar os dois primeiros: algoritmo de Thompson e algoritmo de Brzozowski.

4.5.1.1 Algoritmo de Thompson

O algoritmo de Thompson [Tho68] constrói um NFA" indutivamente na definição das expressões regulares.Para cada regra indutiva da Definição 3.2, e supondo que temos um NFA" correspondente a cada uma dasexpressões regulares (se for esse o caso) constituintes, mostramos como se pode construir um NFA" quecorresponde à expressão regular final. Construamos então cada um dos NFA"Ar correspondentes a cadauma das expressões regulares r obtidas pelas regras de 3.2. Em cada caso supomos conhecido o alfabeto,⌃. De notar, que depois da aplicação de cada passo deste método, o autómato resultante está normalizadocomo indicado no Lema 4.31, isto é, possui um só estado final do qual não partem transições, assim comoum estado inicial ao qual não chega qualquer transição. Pelo que fica assegurada a aplicabilidade recursivado método.

i) r = ; A; :s0

48

Page 31: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

ii) r = " A" :s0

iii) r = �,� 2 ⌃ A� :

s0 s1�

iv) r = r1 + r2 Ar1+r2 :

s0

s 00 s 01

s 000 s 001

s1

"

"

"

"

Ar1

Ar2

v) r = r1r2 Ar1r2 :

s 00 s 01 s 000 s 001Ar1 " Ar2

vi) r = r?1 Ar?1:

s0 s 00 s 01 s1"

"

Ar1

"

"

Proposição 4.38 (Correção do Algoritmo de Thompson) Seja r um expressão regular. O Algo-ritmo de Thompson produz um NFA" Ar tal que L(r) = L(Ar).

Dem. A correção de cada uma das construções é simples à luz da definição de linguagem associada a umaexpressão regular (ver também a Definição 3.2).

i) r = ;Neste caso L(r) = ; e A; = h{s0},⌃, �, {s0}, ;i. Como o conjunto de estados finais é vazio temosL(A;) = ; = L(r)..

ii) r = " Neste caso L(r) = {"} e A" = h{s0},⌃, {s0}, �, {s0}i. Como a função de transição � não estádefinida para nenhum par (estado,símbolo), mas o estado inícial é final temos, pela definição deb�, que L(A") = {"} = L(r).

iii) r = �,� 2 ⌃

Neste caso L(r) = {�} e A" = h{s0, s1},⌃, {s0, s1}, �, {s1}i, com �(s0,�i = {s1}. Pela função detransição � e sendo s1 um estado final, temos que L(A�) = {�} = L(r).

iv) r = r1 + r2

Seja Ar1 = hS 0,⌃, � 0, {s 00}, {s0

1}i e Ar2 = hS 00,⌃, � 00, {s 000 }, {s00

1 }i. Temos que L(r) = L(r + r1) =L(r1) [ L(r2) e, por hipótese de indução, L(r1) = L(Ar1) e L(r2) = L(Ar2). Seja Ar =hS,⌃, �, {s0}, {s1}i, com

S = S 0 [ S 00 [ {s0, s1}

49

Page 32: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

a função � é definida por:– �(s0, ") = {s 00, s

00

0 }

– �(s 01, ") = {s1} e �(s 001 , ") = {s1}

– para s 0 2 S 0 e � 2 ⌃ [ {"}, �(s 0,�) = � 0(s 0,�).– para s 00 2 S 00 e � 2 ⌃ [ {"}, �(s 00,�) = � 00(s 00,�).

Queremos provar que L(r) = L(Ar).Se ⇢ 2 L(r) então ⇢ 2 L(r1) ou ⇢ 2 L(r2), e por hipótese de indução ⇢ 2 L(Ar1) ou ⇢ 2 L(Ar2),respectivamente. Se ⇢ 2 L(Ar1) então b� 0({s 00}, ⇢) ◆ {s 01}. E, do mesmo modo, se ⇢ 2 L(Ar2) entãoc� 00({s 000 }, ⇢) ◆ {s 001 }. Em ambos os casos, como F"({s 01}) = F"({s 001 }) = {s1}, temos que ⇢ 2 L(Ar).Suponhamos que ⇢ 2 L(Ar1). Então,

�(F"({s0}), ⇢) = �({s0} [ F"({s0

0}) [ F"({s00

0 }), ⇢)

◆ �(F"({s0

0}), ⇢)

◆ F"({s0

1})

= {s1}

Analogamente, se ⇢ 2 L(Ar2). Logo L(Ar1) [ L(Ar2) ✓ L(Ar).Seja ⇢ 2 L(Ar). Então pela definição de linguagem aceite por um NFA", b�(F"({s0}), ⇢) \ {s1} 6= ;implica que b�(F"({s0}), ⇢) = {s1}. Suponhamos, por absurdo, que ⇢ 62 L(Ar1) e ⇢ 62 L(Ar2).Então, b� 0(F"({s 00}), ⇢) 6= {s 01} e c� 00(F"({s 000 }), ⇢) 6= {s 001 }. Os estados s 01 e s 001 são os únicos estadosfinais de Ar1 e Ar2 , respectivamente, e dos únicos que se pode chegar a s1 em Ar (e sem consumirsímbolos). Isto é, não se poderia ter s1 2 b�(F"({s0}), ⇢) já que

b�(F"({s0}), ⇢) = b�({s 00, s 000 }, ⇢)

= F"(b� 0(F"({s0

0}), ⇢)) [ F"(b� 0(F"({s0

0}), ⇢))

e portanto tinhamos ⇢ /2 L(Ar) (absurdo!).Mas então L(Ar) ✓ L(Ar1)[L(Ar2). Concluímos que L(Ar) = L(Ar1)[L(Ar2) = L(r1)[L(r2) =L(r1 + r2) = L(r).

v) r = r1r2

Seja Ar1 = hS 0,⌃, � 0, {s0}, {s0

1}}i e Ar2 = hS 00,⌃, � 00, {s 00}, {s1}}i. Temos que L(r) = L(r1) · L(r2) e,por hipótese de indução, L(r1) = L(Ar1) e L(r2) = L(Ar2). Seja Ar = hS 0 [ S 00,⌃, �, {s0}, {s1}i,com a função � é definida por:

�(s 01, ") = {s 00}

Para s 0 2 S 0 e � 2 ⌃ [ {"}, �(s 0,�) = � 0(s 0,�).Para s 00 2 S 00 e � 2 ⌃ [ {"}, �(s 00,�) = � 00(s 00,�).

Queremos provar que L(r) = L(Ar).Seja ⇢ 2 L(r). Então existem ⇢ 0, ⇢ 00 2 ⌃? tal que ⇢ 0 2 L(r1) e ⇢ 00 2 L(r2). Tem-se que ⇢ 0 2 L(Ar1)e ⇢ 00 2 L(Ar2). Como no caso anterior, tem-se que b� 0({s0}, ⇢ 0) = {s 01} e c� 00({s 00}, ⇢

00) = {s1}. Então,

�(F"{s0}, ⇢) = �(F"{s0}, ⇢0⇢ 00)

= �(b� 0(F"{s0}, ⇢0), ⇢ 00)

= �(F"({s0

1}), ⇢00)

= b� 0(F"({s0

0}), ⇢00)

= {s1}

50

Page 33: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Logo, ⇢ 2 L(Ar) e, assim, L(r) ✓ L(Ar).Seja agora ⇢ 2 L(Ar). Então sabemos que �(F"{s0}, ⇢) = {s1}. Ao reconhecer a palavra ⇢ temosde passar necessariamente pelo estado s 01. Seja ⇢ 0 o prefixo de ⇢ tal que

�(F"({s0}), ⇢0) = b� 0(F"({s0}), ⇢

0) = {s 01}. (4.10)

Não consumindo mais símbolos da palavra ⇢ pode-se passar, por transições por ", para o estados 00 e continuar a reconhecer o “resto” da palavra ⇢, seja ⇢ 00. Tem-se que

�(F"({s0

0}), ⇢00) = b� 0(F"({s

0

0}), ⇢00) = {s1}. (4.11)

Podemos concluir que ⇢ = ⇢ 0⇢ 00 tal que ⇢ 0 2 L(Ar1) e ⇢ 00 2 L(Ar2), o que prova que L(Ar) ✓L(Ar1)L(Ar2) = L(r1)L(r2) = L(r).

vi) r = r?1Seja Ar1 = hS 0,⌃, � 0, {s 00}, {s

0

1}}i e, por hipótese de indução, L(r1) = L(Ar1). Seja Ar = hS 0 [{s0, s1},⌃, �, {s0}, {s1}i, com a função � é definida por:

�(s0, ") = {s 00, s1}

�(s 01, ") = {s 00}

�(s 01, ") = {s1}

Para s 0 2 S 0 e � 2 ⌃ [ {"}, �(s 0,�) = � 0(s 0,�).

Temos que F"(s0) ◆ {s0, s0

0, s1}, F"(s 00) ◆ {s 00} e F"(s 01) ◆ {s 01, s1}.Queremos provar que L(r) = L(Ar).Seja ⇢ 2 L(r). Se ⇢ = " então, pela definição de �, � 0 e F"(s0), é imediato que ⇢ 2 L(Ar).Senão, existe n > 0 tal que ⇢ 2 L(r1)n, isto é, ⇢ = ⇢1 . . . ⇢n tal que ⇢i 2 L(r1), 1 i n.Provamos por indução em n, que ⇢ 2 L(Ar). Se n = 1, então ⇢ 2 L(Ar1) e considerando F"(s0)e F"(s 01) tem-se que ⇢ 2 L(Ar). Suponhamos que a propriedade se verifica para ⇢ 2 L(r1)m, param < n. Se ⇢ 2 L(r1)n, então ⇢ = ⇢ 0⇢ 00 tal que ⇢ 0 2 L(r) e ⇢ 00 2 L(r1)(n-1). Como no caso paran = 1, tem-se que ⇢ 0 2 L(Ar1), e considerando o fecho por " de s 01 e a hipótese de indução tem-seque ⇢ 2 L(Ar). Concluímos que L(r) ✓ L(Ar).Seja agora ⇢ 2 L(Ar?1

). Se ⇢ = " ou ⇢ 2 L(Ar1), é imediato pela construção de Ar que ⇢ 2 L(r).Caso contrário, ⇢ = ⇢ 0⇢ 00 tal que ⇢ 0 2 L(Ar1) e ⇢ 00 tem de ter um prefixo ⇢ 000 2 L(Ar1).Continuando este processo concluí-se que existe n > 0 tal que ⇢ = ⇢1 . . . ⇢n tal que ⇢i 2 L(Ar1),isto é, ⇢i 2 L(r1), i 1 n. Então ⇢ 2 L(r?1). E, concluindo, L(Ar?1

) ✓ L(r?1).

Exemplo 4.39 Considera a expressão regular (a+b)(a?+ba?+b?)?. Podemos considerar os seguintessub-autómatos:

Aa :a

Ab :b

Aa? :

"

"

a

"

"

51

Page 34: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Ab? :

"

"

b

"

"

Aa+b :

"

"

a

"

b

"

Aba? :

b " "

"

a

"

"

Denotando por Aa?+ba?+b? o autómato obtido pela união de Aa? , Aba? e Ab? , e conside-rando mais uma vez as construções para a concatenação e o fecho de Kleene, obtemos o autómatoA(a+b)(a?+ba?+b?)? , correspondente à expressão regular dada:

s 00 s 01 s 000 s 001 s1Aa+b "

"

Aa?+ba?+b?

"

"

Exemplo 4.40 Se aplicarmos o método anterior para obter o autómato não determinístico que reco-nhece a linguagem correspondente à expressão regular (a+b)?a(a+"), obtemos (depois de eliminadasalgumas transições por " e respectivos estados, para simplificar):

s0 s1

s2 s3

s4 s5

s6 s7

s8

s9 s10

s9"

"

"

"

a

"

a"

"

a

"

"

"

a

"

4.5.1.2 Derivadas e Algoritmo de Brzozowski

A noção de derivada duma expressão regular em relação a um símbolo, corresponde a uma representação dalinguagem que se obtém quando se retira esse símbolo do início das palavras da linguagem que a expressãoregular representa.

Dado um símbolo � 2 ⌃ e uma linguagem L ✓ ⌃? podemos definir a linguagem quociente de L por �:

�-1L = {⇢ | �⇢ 2 L} (4.12)

52

Page 35: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Começamos por associar a cada expressão regular r uma função que indica se L(r) contém ou não apalavra vazia, ".

Definição 4.41 (Parte constante duma expressão regular) Seja "() : RE ! RE a função constanteque dada uma expressão regular r se define do seguinte modo:

"(r) =

�" se " 2 L(r),; caso contrário.

Lema 4.42 A parte constante "(r), duma expressão regular r pode-se determinar indutivamente pelasseguintes regras:

"(") ="

"(;) ="(�) = ;, 8� 2 ⌃

"(r1 + r2) =

8<

:

" se "(r1) = ",

" se "(r2) = ",

; caso contrário.

"(r1.r2) =

�" se "(r1) = "(r2) = ",

; caso contrário.

"(r?1) = "

Exercício 19 Prova, por indução na estrutura duma expressão regular, o lema anterior, Lema 4.42.

Definição 4.43 (Derivada de uma expressão regular por um símbolo) Seja r uma expressão re-gular e � um símbolo de ⌃. A derivada de r em relação a �, denotada por D�r é a expressão regularque se obtém pela seguinte definição indutiva:

D�� =" (4.13)D�; =D�" = D��

0 = ; 8� 0 2 ⌃, � 0 6= � (4.14)D�(r1 + r2) =D�r1 +D�r2 (4.15)D�(r1.r2) =(D�r1).r2 + "(r1).D�r2 (4.16)

D�r?1 =(D�r1).r

?1 (4.17)

Exemplo 4.44 As derivadas, em relação a a e b, para a expressão regular r, (a+b)?(a+ab?) são asseguintes:

Dar =Da(a+ b)?.(a+ ab?) + "((a+ b)?).Da(a+ ab?)

=Da(a+ b).r+Da(a) +Da(ab?)

=".r+ ;.r+ "+ ".b?

=r+ "+ b?

Dbr =Db(a+ b)?.(a+ ab?) + "((a+ b)?).Db(a+ ab?)

=Db(a+ b).r+Db(a) +Db(ab?)

=".r+ ;.r+ ;+ ;.b?

=r

É importante notar que para obter as derivadas consideramos o facto de " ser elemento neutro daconcatenação e de ; ser elemento neutro da união e elemento absorvente da concatenação (ver Proposição 3.9).

53

Page 36: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Também devem ser consideradas as propriedades associativa, comutativa e de idempotência da união, e queiremos denotar por propriedades ACI.

Exemplo 4.45 As derivadas, em relação a a e a b, para a expressão regular r, (a+b)(a?+ba?+b?)?

são as seguintes:

Dar = Da(a+ b).(a? + ba? + b?)? = (a? + ba? + b?)? = Dbr

Lema 4.46 Para toda a expressão regular r 2 RE, e para todo o símbolo � 2 ⌃, L(D�r) = �-1L(r).

Exercício 20 Prova, por indução na estrutura duma expressão regular, o lema anterior, Lema 4.46.

A noção de derivada em relação a um símbolo pode-se generalizar para palavras ⇢ 2 ⌃?.

Definição 4.47 (Derivada em relação a uma palavra) Seja r uma expressão regular e ⇢ uma pala-vra de ⌃?. A derivada de r em relação a ⇢ é uma expressão regular, denotada por D⇢r, e que define-seindutivamente no tamanho de ⇢:

D"r =r (4.18)D�⇢ 0r =D⇢ 0(D�(r)) (4.19)

Exemplo 4.48 Considera a expressão regular r dada por (a + b)(a? + ba? + b?)? do Exemplo 4.45.Vamos calcular a derivada desta expressão regular r em relação à palavra aab. Pela Definição 4.47,tem-se que Daab = Db(Da(Dar))).

Pelo Exemplo 4.45, tem-se que Dar = (a? + ba? + b?)?. Derivando novamente por a tem-se:

Da(Dar) =(Da(a?) +Da(ba

?) +Dab?)(a? + ba? + b?)

=(a? + ;+ ;)(a? + ba? + b?)?

=a?(a? + ba? + b?)?

e, finalmente,

Db(Da(Dar)) =Db(a?).(a? + ba? + b?)? + "(a?)Db((a

? + ba? + b?)?)

=Db(a? + ba? + b?).(a? + ba? + b?)?

=(a? + b?)(a? + ba? + b?)?

Como no caso de um símbolo � 2 ⌃, dada uma palavra ⇢ 2 ⌃? e uma linguagem L ✓ ⌃? podemosdefinir a linguagem quociente de L por ⇢:

⇢-1L = {⇢ 0 | ⇢⇢ 0 2 L} (4.20)

Lema 4.49 Para toda a expressão regular r 2 RE, e para todo o símbolo � 2 ⌃, L(D⇢r) = ⇢-1L(r).

Exercício 21 Prova, por indução na estrutura duma expressão regular no tamanho da palavra, o lemaanterior, Lema 4.49.

Definição 4.50 (expressões regulares similares) Duas expressões regulares dizem-se similares se umapode ser transformada na outra por aplicação das seguintes regras de equivalência:

"r = r" = r

;r = r; = ;r+ (r1 + r2) = (r+ r1) + r2 (A)

r+ r1 = r1 + r (C)r+ r = r (I)

54

Page 37: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

e duas expressões regulares dizem-se não similares se não forem similares.

Exemplo 4.51 As seguintes expressões regulares são similares: (;.a? + ".a?) + a? e a?.

Um facto importante demonstrado por J. Brzozowski [Brz64] é o de que o conjunto de derivadas dumaexpressão regular em relação a todas as palavras ⇢ 2 ⌃? (ou, simplesmente o conjunto de derivadas dumaexpressão regular) é finito, desde que se considerem as propriedades algébricas atrás referidas.

Proposição 4.52 (Brzozowski) O conjunto Dr de derivadas não similares duma expressão regularr 2 RE é finito.

É importante constatar que se não se considerassem expressões regulares similares, o conjunto dederivadas duma expressão regular podia ser infinito.

Exemplo 4.53 Seja a expressão regular a?? e considerem-se as derivadas em relação às palavras daforma an, para n � 1.

Da(a??) =a?a??

Daa(a??) =a?a?? + a?a??

Daaa(a??) =a?a?? + a?a?? + a?a??

...

Exemplo 4.54 Vamos calcular as derivadas da expressão regular, r dada por (a+ b)(a? + ba? + b?)?.Para tal consideramos as palavras de {a, b}? por ordem lexicográfica. Começamos por atribuir umaordem aos símbolos do alfabeto, neste caso, a < b. Depois consideramos a palavra de tamanho 0 ("),depois as de tamanho 1, a e b, em seguida as de tamanho 2, (aa, ab, ba e bb), e assim sucessivamenteaté não aparecerem novas derivadas (não similares). Pela Proposição 4.52 sabemos que o processotermina.

Tem-se:

D"r =r = (a+ b)(a? + ba? + b?)?

Dar =(a? + ba? + b?)? = r1

Dbr =r1

Daar =Da(Dar) = Dar1 = Da(a? + ba? + b?)r1 = a?r1 = r2

Dabr =Db(Dar) = Dbr1 = (a? + b?)r1 = r3

Dbar =Da(Dbr) = Dar1 = r2

Dbbr =Db(Dbr) = Dbr1 = (a? + b?)r1 = r3

Daaar =Da(Da(Dar)) = Da(Dar1) = Dar2 = a?r1 + "(a?)Dar1 = r2

Daabr =Dab(Dar) = Db(Dar1) = Dbr2 = Dbr1 = r3

Dabar =Dba(Dar) = Da(Dbr1) = Dar3 = r2

Dabbr =Dbb(Dar) = Db(Dbr1) = Dbr3 = b?r1 + r3 = r4

Dabbar =Dbba(Dar) = Da(r4) = r2

Dabbbr =Dbbb(Dar) = Db(r4) = Db(b?)r1 +Dbr3 = r4

Como nestes duas últimas derivações não surgiram novas expressões, o processo termina e concluímosque Dr = {r, r1, r2, r3, r4}.

55

Page 38: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

É imediato, do exemplo anterior, que em vez de se ir considerando sucessivamente palavras de ⌃?, éequivalente ir derivando em relação a cada símbolo do alfabeto as expressões regulares que vão aparecendono processo.

Exercício 22 Verifica o procedimento agora referido para o Exemplo 4.54.

Definição 4.55 (Autómato de Derivadas (ou de Brzozowski)) Seja r uma expressão regular e Dr

o conjunto seu conjunto de derivadas não similares. O autómato de derivadas é Ar = hDr,⌃, �r, {r}, Frionde �r e Fr são definidos por:

�r(s,�) = D�(s) 8s 2 Dr,8� 2 ⌃

Fr = {s 2 Dr | "(s) = "}

Proposição 4.56 (Brzozowski) Para toda a expressão regular r, L(Ar) = L(r).

Exemplo 4.57 Seja mais uma vez a expressão regular r, dada por (a+ b)(a? + ba? + b?)?.No Exemplo 4.54 já calculamos o conjunto das derivdas Dr. O autómato das derivadas de r é

Ar = hDr, {a, b}, �r, {r}, Fri, onde

Dr = {(a+ b)(a? + ba? + b?)?, (a? + ba? + b?)?, a?(a? + ba? + b?)?,(a? + b?)(a? + ba? + b?)?, b?(a? + ba? + b?)? + (a? + b?)(a? + ba? + b?)?}

= {r, r1, r2, r3, r4}

Fr = {r1, r2, r3, r4}

�r(r, a) = Dar = r1 �r(r, b) = Dbr = r1�r(r1, a) = Dar1 = r2 �r(r1, b) = Dbr1 = r3�r(r2, a) = Dar2 = r2 �r(r2, b) = Dbr2 = r3�r(r3, a) = Dar3 = r2 �r(r3, b) = Dbr3 = r4�r(r4, a) = Dar4 = r2 �r(r4, b) = Dbr4 = r4

e com o seguinte diagrama:

r r1

r2

r3

r4a, b

a

b

b

a

a

b

a

b

É de salientar que este autómato é um DFA e, ainda assim é menor que o NFA" obtido noExemplo 4.39.

Exercício 23 Compara os autómatos obtidos nos Exemplos 4.39 e 4.57, obtendo um autómato determinísticoequivalente ao NFA"do Exemplo 4.39.

56

Page 39: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

4.5.1.3 O autómato de Glushkov

O autómato de Glushkov [Glu61] , também chamado autómato de posição, para construir um NFA apartir de uma expressão regular começa por linearizar esta. Uma expressão regular diz-se linear se cadasímbolo do alfabeto nela ocorrer somente uma vez. A linearização aqui efectuada corresponde na anotaçãode cada símbolo alfabético da expressão regular com um índice correspondente à contagem de símbolos oalfabeto até então ocorridos. Seja r uma expressão regular, designamos por r o resultado desta linearização,também chamada expressão regular marcada. Para simplificação de notação , se r for uma expressão regularmarcada, representamos por r o resultado da remoção das anotações de linearização a todos os símbolosalfabéticos da expressão, e portanto, r = r.

Exemplo 4.58 Com ↵ = (a+ ba)?(b? + aa), temos ↵ = (a1 + b2a3)?(b?4 + a5a6).

As anotações duma expressão regular permitem identificar quais os símbolos do alfabeto que foram (ouque podem ser) usados para determinar se uma palavra é representada pela expressão.

Exemplo 4.59 Sendo r a expressão do exemplo anterior e sendo ⇢ = aaba, o primeiro a de ⇢ podecorresponder a a1 ou a5, o segundo a a1 e a a6 (se escolhido o primeiro a para a5), o b poderátambém ser b2 ou b4, mas o último a só pode ser a1 ou a3 (se escolhido para b, o b2).

Seja então r uma expressão regular e |r|⌃ o número de símbolos do alfabeto que ocorrem em r. DefinimosPos(r) = {1, 2, . . . , |r|⌃}, e Pos0(r) = Pos(r)[ {0}. O exemplo anterior sugere que se calculem os subconjuntosde posições que podem começar, terminar ou imediatamente seguir outra posição nas palavras representadaspela expressão. Estes conjuntos designam-se, respectivamente por, First(r), Last(r) e Follow(r):

First(r) = { i | �i⇢ 2 L(r) },Last(r) = { i | ⇢�i 2 L(r) },

e dado i 2 Pos(r),Follow(r, i) = { j | ⇢1 �i�j⇢2 2 L(r) }.

Estes conjuntos podem ser definidos indutivamente na estrutura duma expressão regular marcada,

First(�i) = {i},

First(r1 + r2) = First(r1) [ First(r2),

First(r1r2) =

�First(r1) [ First(r2) se "(r) = ",

First(r1) caso contrário,First(r?) = First(r).

As equações para o conjunto Last coincidem com as do conjunto First excepto para o caso da concatenação:

Last(r1r2) =

�Last(r2) [ Last(r1) se "(r2) = ",

Last(r2) caso contrário.

57

Page 40: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Para o conjunto Follow temos o seguinte:

Follow(�i, i) = ;,

Follow(r1 + r2, i) =

�Follow(r1, i) sei 2 Pos(r1),Follow(r2, i) se i 2 Pos(r2),

Follow(r1r2, i) =

8>><

>>:

Follow(r1, i) if i 2 Pos(r1)^ i /2 Last(r1),Follow(r1, i) [ First(r2) se i 2 Last(r1),Follow(r2, i) se i 2 Pos(r2).

Follow(r?, i) =

�Follow(r, i) se i /2 Last(r),Follow(r, i) [ First(r) caso contrário.

Exemplo 4.60 Para a expressão ↵ = (a+ ba)?(b? + aa) com ↵ = (a1 + b2a3)?(b?4 + a5a6), temos:

First(r) = {1, 2, 4, 5},

Last(r) = {1, 3, 4, 6},

Follow(r, 1) = {1, 2, 4, 5},

Follow(r, 2) = {3},

Follow(r, 3) = {1, 2, 4, 5},

Follow(r, 4) = {4},

Follow(r, 5) = {6},

Follow(r, 6) = ;.

É também conveniente também definir os seguintes conjuntos:

Last0(r) =

�Last(r) [ {0} se "(r) = ",

Last(r) caso contrário,Follow(r, 0) = First(r).

Estamos, então, em condições de definir o autómato de Glushkov (ou autómato de poisição) equivalentea uma expressão r, por

Ar = hPos0(r),⌃, �, 0,Last0 ri,

onde para i 2 Pos0(r), �(i,�) = { j | j 2 Follow(r, i) e � = �j }. Cada estado do autómato de posição, exceptoo inicial, corresponde a uma posição e existe uma transição da posição i para a posição j pela letra � com�j = �, se �i pode ser seguida por �j nalguma palavra representada por r. Os estados finais são as posiçõesque estão em Last(r) e do estado inicia l 0 há transições por � para as posições i tal que �i = � e i 2 First(r).

Exemplo 4.61 Para a expressão ↵ = dos exemplos anteriores temos o seguinte autómato de posiçãoA↵:

58

Page 41: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.30

1

2 3

4 5 6

a

b

b

a

b

a

b

a

a

bb

a

a

ba

Exemplo 4.62 Considera ↵ = (b + ab)? + b? with ↵ = (b1 + a2b3)? + b?4. Então, First(↵) = {1, 2, 4},

Last0(↵) = {0, 1, 3, 4} e Follow(↵) = {(1, 1), (1, 2), (2, 3), (3, 1), (3, 2), (4, 4)}.O autómato de posição A↵ é o seguinte:

0

1

2 3

4

b

b

a

a

b

b

a

b

b

4.5.2 De Autómatos Finitos para Expressões Regulares

Existem diversas formas de se obter uma expressão regular que represente a mesma linguagem que um dadoautómato finito reconhece. Aqui exporemos um método conhecido como Algoritmo de Eliminação de Estados(AEE). Vamos supor que o autómato finito é um NFA" e está normalizado, de acordo com o Lema 4.31:

i) Asseguramos que existe um só estado inicial do autómato, s0, tal que não existe nenhuma transiçãoque termine nesse estado. Se não for esse o caso, acrescentamos um novo estado s↵, que passa a ser oestado inicial do autómato, com uma única transição-" para o estado s0.

ii) Asseguramos que existe um só estado final, e que deste estado não parte nenhuma transição. Se nãofor este o caso, acrescentamos um novo estado s⌦, que passa a ser o único final, e, para cada estadofinal do autómato original, criamos uma transição-" para este novo estado.

Generalizamos o conceito de autómato finito a um autómato cuja função de transição � 0 passa a ser deuma diferente natureza:

� 0 : S⇥ RE -! S

59

Page 42: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

por forma a que as transições não sejam etiquetadas com símbolos do alfabeto ⌃ mas sim com expressõesregulares com o mesmo alfabeto.

Definição 4.63 (Autómato Finito Generalizado (GFA)) Um GFA é um quintúplo hS,⌃, �, s0, Fi emque:

S é um conjunto finito, não vazio, a que chamamos o conjunto dos estados;

⌃ é um conjunto finito, não vazio, que constitui o alfabeto do autómato;

� é uma função total � : S⇥ S ! RE chamada função de transição;

s0, com s0 2 S, é o estado inicial;

F, com F ✓ S, é o conjunto dos estados finais.

Vamos supor que �(s, s 0) = ; sempre que transição entre s 2 S e s 0 2 S não seja dada explicitamente.Notar que qualquer DFA, NFA ou NFA" é um GFA.

Exercício 24 Mostra a afirmação anterior.

4.5.2.1 Algoritmo de Eliminação de Estados (AEE)

Seja A um autómato finito normalizado.

iii) Começamos por obter um GFA equivalente: fazem-se colapsar transições com as mesmas origens edestinos, sendo a transição restante etiquetada com a união das expressões regulares das transiçõesagora eliminadas.

s1 s2

r

r1

=) s1 s2r+ r1

s1

r

r1

=) s1 r+ r1

iv) Todos os estados, diferentes do inicial e do final, que não tenham, pelo menos, uma transição que delesparta e uma outra que a eles chegue, são eliminados e com eles as transições que os referem.

v) Nos restantes, eliminamos os lacetes passando a expressão regular que etiqueta cada saída a ser aconcatenação do fecho de Kleene da expressão que constava no lacete agora eliminado com a expressãoregular que constava nessa transição de saída.

s1 s0 s2

s3

r3

r

r1

r2=)

s1 s0 s2

s3

r3 r?r1

r?r2

60

Page 43: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

vi) Eliminamos sucessivamente todos os estados, exceptuando o inicial e o final, procedendo para cada umdeles do seguinte modo.

Para cada estado s que queremos eliminar, para cada transição s 0r-! s que chega a s (�(s 0, s) = r) e

para cada transição sr1-! s 00 que parte de s (�(s, s 00) = r1), construímos uma nova transição s 0

rr1--! s 00.Por fim, eliminamos o estado s e todas as transições que o referem. No final de cada passo deste énecessário aplicar de novo os passos iii) e v).

s1

s

s 01

s2 s 02

r r2

r3r4

r1

=)

s1 s 01

s2 s 02

rr?4r2

rr?4r3

r1r?4r3

r1r?4r2

No fim deste processo, o autómato resultante deve ser do tipo

s↵ s⌦r

e a expressão regular que procurávamos é r.

Exemplo 4.64 Considera o seguinte NFA:

0 1

2

3a, b

b

a

a

bbb

b

Normalizando e transformando em GFA tem-se

04 1

2

3

5

a, b

b

a

a

bb

"

b

b

"

61

Page 44: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Não há estados que não são atingíveis ou de onde não partem transições. Eliminando os lacetes(neste caso só no estado 1), tem-se o GFA seguinte

04 1

2

3

5

a, b b?a

b?a

b?bb

"

b

b

"

Começamos por eliminar o estado 3 obtendo o GFA

4 0 1

2

5

"

"

a+ b

b?a+ b?ab

b?ab

b?bb

Consideremos, para encurtar um pouco as expressões, ↵ = b?ab. Então eliminando o lacete existenteem S1 temos

4 0 1 2 5" "

a+ b

↵?(b?a+ ↵)

↵?b?b

b

Eliminando, agora, os estados 0 e 2 temos

4 1 5a+ b ↵?b?b

↵?(b?a+ ↵)(a+ b) + ↵?b?bb

Eliminando primeiro o lacete em 1 e depois o próprio estado 1 obtemos

4 5(a+ b)(↵?(b?a+ ↵)(a+ b) + ↵?b?bb)↵?b?b

62

Page 45: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Donde podemos concluir que a expressão regular (a + b)(↵?(b?a + ↵)(a + b) + ↵?b?bb)↵?b?b éequivalente ao NFA dado.

É de salientar que a ordem pela qual se eliminam os estados do GFA influencia a forma e otamanho da expressão regular obtida. Diferentes ordenações podem conduzir a expressões regularesmuito diferentes, embora todas equivalentes. Em cada passo também se poderá tentar simplificar asexpressões regulares obtidas.

Exercício 25 Obtém uma expressão regular equivalente ao NFA do Exemplo 4.64, utilizando uma ordemde eliminação de estados diferente da usada no exemplo referido.

4.5.2.2 Método equacional de Brzozowski

Vimos já que as linguagens esquerdas de um NFA satisfazem um sistema de equações (Teorema ??). Baseadonesse facto podemos obter um sistema de equações cuja solução é uma expressão regular equivalente aoautómato inicial. A solução é obtida por aplicações sucessivas do Lema de Arden (Lema 3.16), isto é, setivermos a equação x = s + xr então uma solução é x = sr?, para s, r 2 ER. Começamos por ilustrar ométodo com um exemplo. Embora um pouco longo, cada passo é simples.

Exemplo 4.65 Consideremos o NFA do Exemplo 4.24 e o sistema de equações obtido no Exem-plo 4.35. Podemos substituir cada linguagem esquerda Esi

por uma variável xi, a reunião por + ecada conjunto singular pelo símbolo correspondente. Obtemos, o seguinte sistema de equações sobreexpressões regulares.

x0 = x00+ x11+ "

x1 = x20+ x01

x2 = x10+ x21

x3 = x40+ (x1 + x2 + x3)1

x4 = x30+ x41.

O nosso objectivo é obter uma expressão regular para x4 (único estado final). Começamos pelaprimeira equação e escrevemo-la de forma que possamos aplicar o Lema de Arden,

x0 = (x11+ ") + x0.0

e aplicamos o Lema de Arden para expressar x0 em termos de x1,

x0 = (x11+ ")0?.

Substituindo esta expressão na equação para x1 e rearranjando obtemos

x1 = (x20+ 0?1) + x110?1.

Aplicando novamente o Lema de Arden optemos a expressão de x1 em termos de x2.

x1 = (x20+ 0?1)(10?1)?.

Substituindo esta expressão nas equações de x2 e x3 (as únicas em que ainda aparece x1) temos

x2 = ((x20+ 0?1)(10?1)?)0+ x21

x3 = x40+ ((x20+ 0?1)(10?1)? + x2 + x3)1.

63

Page 46: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Rearranjando temos

x2 = 0?1(10?1)?0+ x2(0(10?1)?0+ 1)

x3 = (x40+ x2(0(10?1)?1+ 1) + 0?1(10?1)?1) + x31

Aplicando de novo o Lema de Arden à equação de x2 vem

x2 = (0?1(10?1)?0)(0(10?1)?0+ 1)?

Podemos agora substituir esta expressão de x2 na equação de x3 e aplicar o Lema de Arden, donderesulta para x3 a expressão em termos apenas de x4.

x3 = (x40+ ((0?1(10?1)?0)(0(10?1)?0+ 1)?)(0(10?1)?1+ 1) + 0?1(10?1)?1)1?

Representemos a expressão de x3 por x401? + ↵1? onde

↵ = (((0?1(10?1)?0)(0(10?1)?0+ 1)?)(0(10?1)?1+ 1) + 0?1(10?1)?1).

Finalmente, substituindo x3 por esta expressão na equação de x4 temos

x4 = ↵1?0+ x4(01?0+ 1)

donde pelo Lema de Arden mais uma vez obtemos uma expressão regular para x4 que é uma expressãoequivalente ao autómato inicial.

x4 = ↵1?0(01?0+ 1)?.

Em geral, se tivermos o NFA A = ({q1, . . . , qn}, {�1, . . . ,�k}, �, I, F)

1. sejam x1, . . . , xn variáveis

2. Construímos para cada estado qi uma equação para a variável xi que corresponde à sua linguagemesquerda. Se qi /2 I a equação é da forma

xi = xi1�1 + xi2�2 + · · ·+ xik�k,

onde xij =P

qi2�(qk,�j)xk; se qi 2 I temos

xi = xi1�1 + xi2�2 + · · ·+ xik�k + ".

3. No sistema de equações obtido, eliminam-se sucessivamente as variáveis x1, x2, . . . xn, do seguintemodo

Rearranja-se a equação de x1 para a forma

x1 = (x2c12 + x3c13 + · · ·+ xnc1n + r1) + x1c11.

onde os c1i e r1 são expressões regulares (sem variáveis) e no caso de serem ; é ignorada essaparcela.

Aplicando o Lema de Arden, exprimimos x1 em termos de x2, . . . , xn, obtendo

x1 = (x2c12 + x3c13 + · · ·+ xnc1n + r1)c?11.

64

Page 47: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Substitui-se este valor de x1 nas n- 1 equações restantes.

Repete-se o processo para x2, x3, . . . xn.

4. A expressão regular equivalente ao autómato inicial será a disjunção (+) das expressões correspondentesaos estados finais de A.

Não é essencial que ordem de eliminação das variáveis seja a indicada acima, podendo em caso serescolhida a ordem implique um menor número de passos e que pareça conduzir a uma expressão regularmais pequena.

Exemplo 4.66 Considera o NFA do Exemplo 4.64. Podemos obter o seguinte sistema de equações

x0 = "+ x1a+ x3b

x1 = x0(a+ b) + x1b+ x2b+ x3b

x2 = x2b

x3 = x1a

Pretende-se obter uma expressão regular para x2, dado o único estado final é 2. Apenas a equação dex1 tem a ocorrência de x1 no lado direito. Assim podemos começar por substituir a expressão de x0na equação de x1, depois os de x2 e x3 e finalmente arranjar as parcelas. Vem

x1 = ("+ x1a+ x3b)(a+ b) + x1b+ x2b+ x3b

= ("+ x1a+ x1ab)(a+ b) + x1b+ x1bb+ x1ab

= (a+ b) + x1(a(a+ b) + ab(a+ b) + b+ bb+ ab)

De que resulta, pelo Lema de Arden

x1 = (a+ b)(a(a+ b) + ab(a+ b) + b+ bb+ ab)?

Substituindo este valor na equação para x2 obtemos uma expressão regular equivalente ao autómatodado.

x2 = (a+ b)(a(a+ b) + ab(a+ b) + b+ bb+ ab)?b

Neste caso, mais pequena que a obtida pelo método de eliminação de estados.

65

Page 48: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

66

Page 49: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.35

Propriedades de LR

Vamos estudar neste capítulo algumas características da classe das linguagens regulares sobre um alfabeto.Entre elas salientámos:

São fechadas para determinas operações sobre linguagens: p.e, reunião finita, a complementação, aintersecção finita, concatenação finita, fecho de Kleene, etc.

É possível determinar se uma linguagem não é regular: existem linguagens que não são regularese podemos demonstrar que uma linguagem não é regular mostrando que não obedece a uma dadacondição.

É possível decidir se dois autómatos finitos são equivalentes: e determinar um autómato finito de-terminístico mínimo único para cada linguagem regular.

Propriedades de decisão Existem algoritmos e quais as suas complexidades para problemas como: deter-minar se uma palavra pertence a uma dada linguagem regular; determinar se uma linguagem regularé vazia ou ⌃?; determinar se duas linguagens regulares se intersectam; se são equivalentes, etc.

5.1 Fecho das linguagens regulares para operações

Um conjunto A é fechado para uma operação binária ⇥ se e só se

8 x, y 2 A ) x ⇥ y 2 A

No caso da classe de linguagens regulares vamos identificar operações entre linguagens tal que se aslinguagens forem regulares, a linguagem L que resulta operar sobre essas linguagens também é regular: istoé as linguagens regulares são fechadas para essas operações.

Proposição 5.1 A classe das linguagens regulares é fechada para

1. a concatenação finita;

2. a reunião finita;

67

Page 50: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

3. o fecho de Kleene;

4. a complementação;

5. a intersecção finita;

6. a inversão.

Dem. Muitas destas propriedades já foram analisadas em capítulos anteriores, em especial considerando arepresentação de linguagens regulares por expressões regulares. Em particular a concatenação, reuniãoe fecho de Kleene resulta directamente da definição de linguagem regular (ver 3.1).Concatenação Se L1 e L2 são duas linguagens regulares então L1L2 é regular. Isto resulta directa-

mente da definição de linguagens regulares ou do facto que se r e s são expressões regulares talque L1 = L(r) e L2 = L(s) então L1L2 = L(rs). Se L1 e L2 são representadas por autómatos finitosA e B, respectivamente então um autómato que representa L1L2 é dado por:Esta demonstração estende-se para qualquer concatenação finita. Sendo L1, . . . , Ln, n > 1,n 2 Nlinguagens regulares então L1L2 · · · Ln é uma linguagem regular. Para n = 2 já foi demonstrado.Supõe que o resultado se verifica para n, isto é L = L1L2 · · ·Ln, é regular se Li, com 1 i n sãoregulares. Então L1L2 · · ·LnLn+1 = (L1L2 · · · Ln)Ln+1 = LLn+1 é uma linguagem regular porqueé a concatenação de L com Ln+1, onde por hipótese de indução L é regular e Ln+1 também éregular, por hipótese. Temos demonstrado o resultado.

Reunião Se L1 e L2 são duas linguagens regulares então L1[L2 é regular. Como no caso anterior, se r

e s são expressões regulares tal que L1 = L(r) e L2 = L(s) então L1 [L2 = L(r+ s). Se L1 e L2 sãorepresentadas por autómatos finitos A e B, respectivamente então um autómato que representaL1 [ L2 é dado por:Esta demonstração estende-se para qualquer reunião finita. Sendo L1, . . .Ln, n > 1, n 2 Nlinguagens regulares então L1[L2[·[Ln é uma linguagem regular. Para n = 2 já foi demonstrado.Supõe que o resultado se verifica para n, isto é L = L1[L2[· · ·[Ln, é regular se Li, com 1 i n

são regulares. Então L1 [ L2 · · · Ln [ Ln+1 = (L1 [ L2 · · ·Ln)[ Ln+1 = L[ Ln+1 é uma linguagemregular porque é a reunião de L com Ln+1, onde por hipótese de indução L é regular e Ln+1

também é regular, por hipótese. Temos demonstrado o resultado.

Fecho de Kleene Se L é uma linguagem regular então L? é regular. Se L = L(r) então pela definiçãodo operador ?, L(r?) = L(r)?. No caso de L seja reconhecida por um autómato A, então umautómato que reconhece L? é dado por:

Complementação Se L é uma linguagem regular sobre um alfabeto ⌃, então L = ⌃? - L também éuma linguagem regular. Seja A = (Q,⌃, �, s0, F) um autómato finito determinístico em que � éuma função total de Q ⇥ ⌃ em Q e tal que L = L(A). O autómato A 0 = (Q,⌃, �, s0, Q\F) é umautómato finito determinístico que aceita ⌃?\L.

Intersecção Se L1 e L2 são duas linguagens regulares então L1\L2 é regular. Basta ver que L1\L2 =L1 [ L1. Também se pode demonstrar este resultado considerando o autómato produto 4.1.2 paraa intersecção. Este resultado estende-se para a intersecção finita de linguagens regulares seguindoos passos análogos aos considerados para a concatenação ou reunião finitas.

Inversão Se L é uma linguagem regular, então LR constituída pelas palavras inversas das de L, éregular.Por indução estrutural na expressão regular r que representa L, mostramos que existe rR tal queL(rR) = (L(r))R. Se r é ;, ✏ ou a, a 2 ⌃ então rR é r. Para os restantes casos, procedemos porindução na estrutura de R

68

Page 51: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

r = r1 + r2, então rR = rR1 + rR2 .r = r1r2, então rR = rR2 r

R1 .

r = r?1, então rR = (rR1 )?.

Exercício 26 Mostra que se L e M são regulares, L \M é regular.

Exercício 27 Dadas duas linguagens L1 e L2 seja a diferença simétrica dada por

L1�L2 = {x | x 2 L1 e x /2 L2} [ {x | x 2 L2 e x /2 L1}

1. Mostra que se L1 e L2 forem linguagens regulares, L1�L2 é regular.2. Indica como construir um autómato produto para L1�L2 a partir de autómatos para L1 e L2.3. Ilustra o método exibindo um autómato finito determinístico para L1�L2, onde

L1 = {x 2 {0, 1}? | x contém 10}

L2 = {{x 2 {0, 1}? | x termina em 00}

5.2 Substituições, Homomorfismos e Quocientes

As linguagens regulares, para além de serem fechadas para as operações atrás enunciadas goza da propri-edade de ser fechada para substituições. Quer isto dizer que para uma linguagem regular L, de alfabeto{�0,�1, . . . ,�n}, a linguagem que se obtém de L substituindo em cada palavra de L, cada símbolo por umapalavra de um conjunto {⇢0, ⇢1, . . . , ⇢n}, também é uma linguagem regular.

Definição 5.2 Sejam ⌃ e � dois alfabetos. Uma substituição é uma aplicação f : ⌃ ! 2�?

em quef(�) é regular, para todo o � 2 ⌃. Uma substituição f pode ser naturalmente estendida a palavras daseguinte forma:

i) f(") = "

ii) f(�⇢) = f(�)f(⇢),8� 2 ⌃8⇢ 2 ⌃?.

A extensão para linguagens fica então definida por

f(L) =[

⇢2L

f(⇢).

Teorema 5.3 A classe das linguagens regulares é fechada para as substituições.

Dem. Seja L ✓ ⌃? uma linguagem regular e, para cada � 2 ⌃, L� 2 �? uma linguagem regular de alfabeto� . Seja f : ⌃ ! 2�

?

a substituição definida por f(�) = L�. Como tanto L como L� 8� 2 ⌃ são regularespodemos encontrar expressões regulares ↵, (��)�2⌃ por forma que

L = L(↵) e L(��) = L�,8� 2 ⌃.

Seja ↵ 0 a expressão regular que obtemos de ↵ substituindo cada símbolo � pela expressão regular��. Basta agora verificar que L(↵ 0) = f(L), para o que basta observar que f(L [ L 0) = f(L) [ f(L 0),f(LL 0) = f(L)f(L 0) e F(L?) = f(L)?. A demonstração é trivial procedendo por indução sobre o númerode operadores. ⇤

69

Page 52: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Definição 5.4 Uma substituição f para a qual |f(�)| = 1,8� 2 ⌃, diz-se um homomorfismo. Comoas imagens de cada símbolo são conjuntos singulares podemos tomar qualquer homomorfismo f comof : ⌃ ! �?. Seja L uma linguagem e f um homomorfismo, então podemos definir a imagem recíprocado homomorfismo, f-1(L) = {⇢ | f(⇢) 2 L}, da mesma forma, para ⇢ 2 L, h-1(⇢) = {⇢ 0|f(⇢ 0) = ⇢}.

Teorema 5.5 A classe das linguagens regulares é fechada para homomorfismos e imagem recíprocade homomorfismos.

Dem. Que a classe das linguagens regulares é fechada para homomorfismos é consequência directa doTeorema 5.3.

Para mostrar o fecho para a imagem recíproca de homomorfismos, seja A = hQ,⌃, �, q0, Fi um DFAcom L(A) = L, e f : ⌃ ! ⌃? um homomorfismo. Consideremos o autómato B = hQ, �, � 0, q0, Fi com� 0(q,�) = �(q, f(�)). É fácil mostrar, por indução no tamanho ⇢ que � 0(q0, ⇢) = �(q0, f(⇢)). PortantoL(B) = f-1(L(A)).

No Exemplo 5.11 podemos ver como este resultado pode ser utilizado para tornar muito mais simplesdemonstrações relacionadas com a regularidade de linguagens.

Definição 5.6 Sejam L1 e L2 duas linguagens. A linguagem quociente de L1 por L2 define-se como

L1/L2 = {⇢ | 9⇢ 0 2 L2, ⇢⇢0 2 L1} .

Teorema 5.7 A classe das linguagens regulares é fechada para o quociente por linguagens arbitrárias.

Dem. Seja A = hQ,⌃, �, q0, Fi, um DFA, R = L(A) e L ✓ ⌃? uma linguagem arbitrária. O quocienteR/L é a linguagem do autómato A 0 = hQ,⌃, �, q0, F

0i que se comporta como A excepto que F 0 ={q 2 Q | 9⇢ 2 L, �(q, ⇢) 2 F}. Se uma palavra ⇢ for aceite por A 0 então é porque �(q0, ⇢) = q e 9⇢ 0 talque ⇢⇢ 0 2 R, o que é, exactamente, a definição de R/L. ⇤

5.3 Lema da repetição

Para provar que uma dada linguagem não pode ser descrita por nenhum modelo regular (por exemplo porum DFA), ou seja que a linguagem não é regular, recorremos muitas vezes a uma condição necessária paraas linguagens regulares. O seguinte teorema (que é normalmente referido de Lema da Repetição — ou“Pumping Lemma”, em inglês), apesar do seu enunciado assustador, afirma algo de bastante simples: seuma linguagem regular tiver palavras “suficientemente grandes”, estas têm obrigatoriamente um padrão (umciclo) que pode ser repetido um qualquer número de vezes, obtendo-se sempre uma palavra pertencente àlinguagem original.

A ideia da demonstração é bastante simples. Se uma palavra da linguagem, ⇢, tiver um número de letrassuperior ao número de estados do autómato mínimo que representa a linguagem, então no seu trajecto noconjunto de estados,ao ser reconhecida pelo autómato tem, obrigatoriamente que repetir um desses estados,q, pelo princípio de Dirichlet (pag.2). A sub-palavra ⇢ 0 que a que corresponde o trajecto do estado q até àsua ocorrência seguinte na trajectória de ⇢, constitui um padrão que pode ser repetido um qualquer númerode vezes (inclusive zero) mantendo-se a palavra resultante pertencente à linguagem em questão.

Teorema 5.8 (Lema da Repetição) Seja L uma linguagem regular, então tem-se

(9n)(8⇢)(9u, v,w)(8i)((⇢ 2 L ^ |⇢| � n ^ ⇢ = uvw ^ |uv| n ^ |v| � 1

=) ((i � 0 =) uviw 2 L)))). (5.1)

70

Page 53: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Dem. Como L é regular, seja A = hQ,⌃, �, q0, Fi um DFA tal que L = L(A) e n = |Q| o número deestados do autómato A. Então seja ⇢ 2 L com ⇢ = �1�2 · · ·�n+m com m > 0. Se considerarmosos estados que constituem a orbita de ⇢ em A, q0, q1, . . . , qm+n com qi = �(qi-1,�i), comoestes são em maior número que os n estados de A, temos obrigatóriamente que ter ql = ql 0

para algum l 6= l 0. Consideremos então u = �1 · · ·�l, v = �l+1 · · ·�l 0 e �l 0+1 · · ·�n+m. Como�(ql, v) = ql, �(ql, v

i) = ql, logo �(q0, uviw) = qn+m 2 F pelo que uviw 2 L, para todo o i. ⇤

Exemplo 5.9 A linguagem formada pelas palavras de alfabeto {a, b} com o mesmo número de a’s eb’s, não é regular. Para provar tal, basta mostrar que esta linguagem não satisfaz 5.1 ou seja que

(8n)(9⇢)(8u, v,w)(9i)(⇢ 2 L ^ |⇢| > n ^ ⇢ = uvw ^ |uv| < n ^ |v| � 1 ^ i � 0 ^ uviw 62 L). (5.2)

Seja n 2 N um qualquer possível tamanho apartir do qual a referida propriedade de repetição do padrãose deveria repetir. Consideremos a palavra anbn que trivialmente pertence à linguagem consierada.Qualquer que sejam u, v,w 2 {a, b}? , nas condições do teorema, ou seja

anbn = uvw ^ |uv| < n ^ v 6= ",

uv é constituído somente por caracteres a, porque os n primeiros caracteres da palavra são an. Assimu = am1 e v =m2 para alguns m1,m2 2 N com m2 6= 0. Portanto a palavra

uv0w = an-m2bn

não pode pertencer à linguagem, porque nela não ocorrem o mesmo número de a e de b. Estãocontraditas, portanto, as condições do Teorema 5.8, pelo que a linguagem não pode ser regular.

Exemplo 5.10 A linguagem das palavras da forma ww com w 2 {0, 1} não é regular.Chamemos à linguagem em causa L. Seja n 2 N consideremos a palavra xn = 0n1n0n1n. É

evidente que xn 2 L, pois xn = ynyv com yn = 0n1n. Temos que | xn |= 4n > n, então suponhamosque xn = uvw com uv < n e v 6= ". Portanto, como | uv |< n, u e v deverão ser palavras ondesó ocorre o caracter 0. Sejam u = 0mu e v = 0mv . Consideremos então a palavra uv0w. Comosabemos a forma de v temos uv0w = 0n-mv1n0n1n, que como mv 6= 0 não pode ser a repetição deduas “metades” iguais, pelo que uv0w /2 L, e pelo Lema da Repetição (Teorema 5.8), não pode é umalinguagem regular.

Exemplo 5.11 Sabemos, pelo Exemplo 5.9 que a linguagem L0 = {0n1n | n � 1} não é regular. Comesta informação, e o Teorema 5.5, podemos mostrar facilmente que a linguagem L1 = {anban | n � 1}

também não é regular. Para tal consideremos os seguintes homomorfismos

f1 : {a, b} -! {a, b, c}? f2 : {a, b, c} -! {0, 1}?

a 7-! a a 7-! 0

b 7-! ba b 7-! 1

c 7-! a c 7-! 1

Entãof2�f-11 ({anban | a � 1}) \ L(a?bc?)

�= {0n1n | n � 1} .

Porque f-11 ({anban | n � 1}) consiste no conjunto de todas as palavras de L((a+ c)?b(a+ c)?) em que

o número de símbolos que precede b é uma unidade superior ao número de símbolos que lhe segue.Assim

f-11 ({anban | a � 1}) \ L(a?bc?) =

�anbcn-1 | n � 1

.

Então, como a classe das linguagens regulares é fechada para cada uma das transformações operadas,se L1 fosse uma linguagem regular também L0 seria regular, o que sabemos não ser verdade.

71

Page 54: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Exercício 28 Prova que as seguintes linguagens não são regulares

1. Linguagem L1 dos palíndromos de alfabeto {0, 1}.

2. Linguagem L2�02

n

| n 2 N .

3. A linguagem L3 = {0p | p é primo}.

4. A linguagem L4 das representações em binário dos inteiros primos.

5. A linguagem L5 = {0n1m | n 6= m}.

Exercício 29 Dada uma palavra ⇢, seja perm(⇢) o conjunto das palavras ⇢ 0 que correspondem a reordena-ções das leras da palavra ⇢. Dada uma qualquer linguagem regular L, será que a linguagem

L 0 =[

⇢2L

perm(⇢)

é também uma linguagem regular?

Exemplo 5.12 É importante notar que o “Lema da Repetição” indica somente que a condição aípresente é uma condição necessária para que uma linguagem seja regular, não é uma condiçãosuficiente. Consideremos o seguinte exemplo de uma inguagem não regular, de alfabeto {a, b, c}:

L = L1 [ L2

comL1 = {abncn | n 2 N} e L2 =

�ak⇢ | k 6= 1 ^ ⇢ 2 {b, c}?

.

Esta linguagem não é regular. Por absurdo, suponhamos que algum DFA A = hQ,⌃, �, s0, Fireconhece a linguagem L. Consideremos as palavras abn (com n 2 N). No autómato A nenhumpar de estados h�(s0, abn), �(s0, abmi, com n 6= m, podem ser estados equivalentes pois a palavra cn

“distingue-os, pois �(�(s0, abn, cn) 2 F e �(�(s0, abm, cn) 62 F. Logo A não poderia ter um númerofinito de estados, o que é absurdo. A linguagem L não é, portanto, regular.

Por outro lado, seja ⇢ 2 L com |⇢| � 0.

Se ⇢ 2 L1, então ⇢ = abncn com n 2 N. Seja ⇢ = uvw com u = ", v = a e w = bncn. Entãouviw = aibncn 2 L2, para qualquer i 6= 1.

Se ⇢ 2 L2, então ⇢ = ak⇢ 0, com ⇢ 0 2 {b, c}? e k 6= 1, seja ⇢ = uvw e há três casos a considerar.

Se k = 0 tome-se um qualquer u e v nas condições do enunciado. Como uvw 2 {b, c}? ,uviw 2 {b, c}? (logo uviw 2 L2) para qualquer valor de i.

Se k = 2, tome-se u = a2, e v e w quaisquer, nas condições do enunciado. Como vw 2 {b, c}?

também viw 2 {b, c}? , para qualquer valor de i, pelo que uviw 2 L2.

Se k >= 3, tome-se u = ", v = a e então uviw = ak-1+i⇢ 0 2 L2, para qualquer valor de i.

Pelo que a linguagem satisfaz as condições do “Lema da Repetição”.

72

Page 55: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.36

Autómatos mínimos

6.1 Autómatos Mínimos

Dada uma linguagem regular L, muitos são os autómatos determinísticos que a representam. Seja AL oconjunto dos autómatos tais que

(8A)(A 2 AL =) L(A) = L).

Os autómatos de AL não têm todos o mesmo número de estados e portanto a pergunta que naturalmentesurge é a da existência de um autómato mínimo (no sentido de ter o número mínimo de estados) e doprocesso da sua obtenção. O teorema de Myhill-Nerode (pág. ??) sujere que tal autómato existe assim comoapresenta uma caracterização desse autómato que conduz à sua construção.

Dado um autómato, comecemos por eliminar os estados que não são acessíveis a partir do estado inicial,assim como aqueles dos quais não se pode chegar a um estado final. Trivialmente, esta operação não alteraa linguagem reconhecida pelo autómato inicial (e só pode fazer diminuir o seu número de estados!). Nestasecção, a menos que seja explícitamente dito o contrário, consideraremos sempre autómatos a que foramremovidos todos os estados pelo processo anterior.

A ideia por de trás da minimização de um DFA é a de eliminar estados que representem (à luz doteorema de Myhill-Nerode) a mesma família de palavras. Seja A = hS,⌃, �, s0, Fi. Em vez de tentarmoscontruir directamente um autómato com o menor número de estados, comecemos por estabelecer quais ospares de estados que são intrinsecamente diferentes, que representam diferentes linguagens e portanto nãopassiveis de serem colapsados num mesmo estado no novo autómato que queremos construir. Chamemos aestes pares distinguíveis. Sabemos que os estados finais e os estados não finais são, com certeza, distinguíveis,pois os primeiros representam linguagens que contêm " o que não é o caso dos segundos.

Comecemos, então, por definir a seguinte relação, N ✓ S2, dos estados de S que sabemos, à partida,serem distinguíveis:

N = {(s, s 0) 2 S2 | s 2 F _̇ s 0 2 F}. (6.1)

Para além destes pares de estados, dois estados, s e s 0, são distinguíveis se para um dado símbolo, �, asrespectivas imagens por �, �(s,�) e �(s 0,�), forem distinguíveis. Isto corresponde a adicionar a N o conjuntodos pares que satisfaz a seguinte propriedade:

P(X) : (8s, s 0 2 S 9� 2 ⌃ ((�(s,�), �(s 0,�)) 2 X) ) ((s, s 0) 2 X)). (6.2)

73

Page 56: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Consideremos, agora, o fecho de P para N, FP(N). Esta nova relação FP(N), relaciona pares deestados,(s, s 0), para os quais existe uma palavra, ⇢, tal que (�(s, ⇢), �(s 0, ⇢) 2 FP(N)), ou seja

((s, s 0) 2 FP(N)) () (9⇢)(�(s, ⇢) 2 F _̇ �(s 0, ⇢) 2 F). (6.3)

Exercício 30 Provar a proposição contida na fórmula (6.3).

Seja R a relação complementar de FP(N). A relação R é uma relação de equivalência, basta ver que

(s, s 0) 2 R () (s, s 0) 62 FP(N) () (8⇢ 2 ⌃?)(�(s, ⇢), �(s 0, ⇢)) 62 FP(N)

() (8⇢ 2 ⌃?)(�(s, ⇢) 2 F () �(s 0, ⇢) 2 F).

Lema 6.1 Dado um autómato A = hS,⌃, �, so, Fi consideremos o autómato Am = hS/R,⌃, �m, [s0], Fmiem que R é a relação de equivalência de indistiguibilidade sobre S obtida como acabamos de descrever,

�m : S/R⇥ ⌃ -! s/R

([s],�) 7-! [�(s,�)](6.4)

eFm = {[s] 2 S/R | s 2 F} ,

onde [s] representa, como costume, a classe de equivalência de R a que s pertence. Então L(A) =L(Am).

Dem. Seja ⇢ uma palavra aceite por A, então �(s0, ⇢) 2 F (por 4.3), mas como, para qualquer relaçãode equivalência, se tem

(8s)(s 2 [s]),

então�m([s0], ⇢) = [�(s0, ⇢)] 2 Fm.

Logo L(A) ✓ L(Am). Suponhamos agora que ⇢ = �1�2 · · ·�l 2 L(Am) (com �1,�2, . . . ,�l 2 ⌃),ou seja

�m([s0],�1�2 · · ·�l) 2 Fm.

Sejam s0, s1, . . . , sl tais que �m([si-1],�i) = [si], para i 2 [1, l], e tomemos s 00, s0

1, . . . , s0

l coms0 = s 00, tais que �(s 0i-1,�i) = s 0i, para i 2 [1, l]. Da definição de �m (6.4) resulta que, para todoo i 2 [0, l], s 0i 2 [si] (por indução sobre l). Pela definição de R, cada uma das suas classes deequivalência, [s], ou estão integralmente contidas em F, ou são disjuntas de F. Pelo que

�(s0, ⇢) = s 0l 2 F,

ou seja ⇢ 2 L(A). Logo L(A) = L(Am). ⇤

Teorema 6.2 (autómato mínimo) Seja A um DFA, existe um DFA, Am, tal que

(L(Am) = L(A))^ (8B (L(B) = L(A) ) |Am| |B|)). (6.5)

Este autómato mínimo, Am, é o único que satisfaz (6.5).

74

Page 57: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Dem. Seja Am o autómato definido no Lema 6.1 e provemos que Am é mínimo, no sentido quequalquer outro DFA B com menos estados que Am não é equivalente a A. Seja então B =hS 0,⌃, � 0, s 00, F

0i um DFA com |B| < |Am| = n. Pela forma como Am foi construído, sabemos quepara qualquer par de estados existe uma palavra que é “testemunha” que esses estados não sãoequivalentes, ou seja

(8i, j)(i, j 2 [0, n- 1]^ i 6= j =) (9⇢i,j 2 ⌃?(�([si], ⇢i,j) 2 Fm _̇ �([sj], ⇢i,j) 2 Fm))).

Como nestes autómatos todos os estados são acessíveis apartir do estado inicial (ver a obser-vacão da página 73), podemos tomar, por outro lado, ⇢ 0

0, ⇢0

1, . . . , ⇢0

n-1 tais que �([s0], ⇢ 0

i) = [si],para i 2 [0, n- 1]. Como |S 0| < n temos, pelo Princípio de Dirichlet (ver 1.1) que

(9k, k 0)(k, k 0 2 [0, n- 1] ^ k 6= k 0 ^ b� 0(s 00, ⇢0

k) = b� 0(s 00, ⇢0

k 0).

Mas então(⇢ 0

k⇢k,k 0 2 L(Am)) _̇ (⇢ 0

k 0⇢k,k 0 2 L(Am)))

enquanto(⇢ 0

k⇢k,k 0 2 L(B)) () (⇢ 0

k 0⇢k,k 0 2 L(B)).

Pelo que L(Am) 6= L(B). Logo Am é mínimo.

Provemos agora que Am é único (a menos de renomeação de estados). Suponhamos que paraum outro DFA A 0 = hS 0,⌃, � 0, s 00, Fi se tem |Am| = |A 0| = n. Para cada par de estados desteautómato, s 0i, s

0

j, tem que existir uma palavra que seja “testemunha” da sua não equivalência,porque senão seria possível, aplicando o método aplicado a A, obter um autómato equivalentecom menos estados, que pelo que acabamos de provar, teria que ser não equivalente a Am.Sejam então ⇢i,j 2 ⌃?, com i, j 2 [0, n - 1], as referidas “testemunhas” de não equivalência paraos estados de A 0, ou seja

(8i, j)((i, j 2 [0, n- 1] ^ i 6= j) =) (b� 0(s 0i, ⇢i,j) 2 F 0 _̇ b� 0(s 0j, ⇢i,j) 2 F 0)).

Agora, ou temos

(8⇢, ⇢ 0)(⇢, ⇢ 0 2 ⌃? =) (�m([s0], ⇢) = �m([s0], ⇢0)) () (b� 0(s 00, ⇢) = b� 0(s 00, ⇢

0))),

e então é possível renomear os estados de A 0 por forma a se ter

(8⇢)(8i)(⇢ 2 ⌃? ^ i 2 [0, n- 1] =) (�m([s0], ⇢) = [si] () b� 0(s 00, ⇢) = s 0i))

(8i)(i 2 [0, n- 1] =) (([si] 2 Fm) () (s 0i 2 F 0)))

e os dois autómatos são iguais. Ou

(9⇢, ⇢ 0)(⇢, ⇢ 0 2 ⌃? ^ ((�m([s0], ⇢) = �m([s0], ⇢0)) _̇ (b� 0(s 00, ⇢) = b� 0(s 00, ⇢

0)))

e então, podemos concatenando a estas palavras, ⇢ e ⇢ 0, as “testemunhas” apropriadas, provarque L(Am) 6= L(A 0). ⇤

6.1.1 O algoritmo de Moore

O algoritmo de Moore, normalmente atribuído a Huffman [Huf55] e Moore [Moo56], corresponde exactamenteà construção da relação FP(N) referida no Lema 6.1. Vejamos um exemplo.

75

Page 58: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Exemplo 6.3 Consideremos, então o DFA representado pelo diagrama seguinte.

s0 s1 s2

s4

s7

s5 s6 s3

a

b

a

b

a

b

a

b

a

b

a

b

a b

a

b

e encontremos o autómato determinístico mínimo equivalente utilizando o procedimento indicado nademonstração anterior.

Comecemos por marcar como distinguíveis todos os pares com um estado final e outro não final.A tabela seguinte enumera os elementos de N.

s1s2s3 ⇥ ⇥ ⇥s4 ⇥ ⇥ ⇥s5 ⇥ ⇥s6 ⇥ ⇥ ⇥ ⇥s7 ⇥ ⇥ ⇥

s0 s1 s2 s3 s4 s5 s6

Comecemos a tentar encontrar mais elementos para acrescentar à relação, para obter o seu fecho.Seja N1 a relação

N [⌦(s, s 0) | 9� 2 ⌃�(s,�) 2 N _̇ �(s 0,�) 2 N

↵.

76

Page 59: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

Então,

(�(s0, b), �(s1, b)) = (s4, s2) 2 N ) (s0, s1) 2 N1

(�(s0, a), �(s2, a)) = (s1, s2) 62 N ^ (�(s0, b), �(s2, b)) = (s4, s3) 62 N

(�(s0, a), �(s5, a)) = (s1, s2) 62 N ^ (�(s0, b), �(s5, b)) = (s4, s6) 62 N

(�(s0, b), �(s7, b)) = (s4, s5) 2 N ) (s0, s7) 2 N1

(�(s1, b), �(s2, b)) = (s2, s3) 2 N ) (s1, s2) 2 N1

(�(s1, b), �(s5, b)) = (s2, s6) 2 N ) (s1, s5) 2 N1

(�(s1, a), �(s7, a)) = (s1, s7) 62 N ^ (�(s1, b), �(s7, b)) = (s2, s5) 62 N

(�(s2, a), �(s5, a)) = (s2, s2) 62 N ^ (�(s2, b), �(s5, b)) = (s2, s6) 62 N

(�(s2, b), �(s7, b)) = (s3, s5) 2 N ) (s2, s7) 2 N1

(�(s3, b), �(s4, b)) = (s6, s5) 2 N ) (s3, s4) 2 N

(�(s3, a), �(s6, a)) = (s1, s7) 62 N ^ (�(s3, b), �(s6, b)) = (s6, s3) 62 N

(�(s4, b), �(s6, b)) = (s5, s3) 2 N ) (s4, s6) 2 N1

(�(s5, b), �(s7, b)) = (s6, s5) 2 N ) (s5, s7) 2 N1.

A tabela de N1 é então a seguinte.

s1 ⇥s2 ⇥s3 ⇥ ⇥ ⇥s4 ⇥ ⇥ ⇥ ⇥s5 ⇥ ⇥ ⇥s6 ⇥ ⇥ ⇥ ⇥ ⇥s7 ⇥ ⇥ ⇥ ⇥ ⇥ ⇥

s0 s1 s2 s3 s4 s5 s6

Tentemos acrescentar mais elementos, agora fazendo

N2 = N1 [⌦(s, s 0) | 9� 2 ⌃�(s,�) 2 N1 _̇ �(s 0,�) 2 N1

↵.

Então, e escrevendo somente as clonclusões positivas, temos.

(�(s0, b), �(s2, b)) = (s4, s3) 2 N1 ) (s0, s2) 2 N2

(�(s0, a), �(s5, a)) = (s1, s2) 2 N1 ) (s0, s5) 2 N2.

Que resulta na seguinte tabela.

s1 ⇥s2 ⇥ ⇥s3 ⇥ ⇥ ⇥s4 ⇥ ⇥ ⇥ ⇥s5 ⇥ ⇥ ⇥ ⇥s6 ⇥ ⇥ ⇥ ⇥ ⇥s7 ⇥ ⇥ ⇥ ⇥ ⇥ ⇥

s0 s1 s2 s3 s4 s5 s6

Um ciclo seguinte para tentar acrescentar mais pares, agora a N3, mostra-se infrutífero, peloque o fecho para aquela propriedade P(X) (da demonstração de 6.1), já foi atingido. A relação

77

Page 60: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

complementar desta tem então as seguintes classes de equivalência

{{s0}, {s1, s7}, {s2, s5}, {s3, s6}, {s4}} .

O autómato mínimo obtido é então o seguinte.

{s0} {s1, s7}

{s3, s6}

{s4} {s2, s5}

a

b

a

b

a

b

a

b

a

b

6.1.2 O algoritmo de Brzozowski

Talvez o mais surpreendente dos aloritmos de minimização de autómatos seja o que se deve a Brzo-zowski [Brz62]. Não tanto pela sua performance, que no pior caso pode ser exponencial, mas pela simplicidadede descrição e pela não trivialmente evidente razão do seu funcionamento. A prova da correcção do algoritmo,que aqui será apresentada, segue, em termos gerais, a apresentada no artigo de Champarnaud et al [JMCP02].

Seja A um autómato finito, denotemos por R(A) o autómato reverso como o obtido na Proposição 4.21.Sabemos, pela mesma proposição que

L(A)R = L(R(A)).

E portanto, aplicando mais uma vez o mesmo resultado, que

L(R(R(A)) = L(A).

Denotemos, agora, por D(A) o autómato determinístico obtido pelo método da construção de subconjuntosdo Teorema 4.23. Então é fácil verificar, dado um autómato finito A, que, por um lado, D(R(D(R(A)))) éum autómato determinístico, e por outro, L(D(R(D(R(A))))) = L(A).

Lema 6.4 Seja A um NFA e A 0 = D(A) o autómato determinístico equivalente obtido pela construçãodada pelo Teorema 4.23. Seja q 0 um qualquer estado de A 0. A linguagem direita de q 0 é a união daslinguagens direitas dos estados de A que compõem q 0.

Teorema 6.5 (Brzozowski) Seja A um autómato finito, não necessariamente determinístico, o autó-mato

D(R(D(R(A)))) (6.6)

é o autómato determinístico mínimo equivalente ao autómato A.

Exemplo 6.6 Consideremos o seguinte autómato A:

78

Page 61: Linguagens regulares e expressões regularesrvr/resources/MC/RL.pdf · 3.1.1 Expressões Regulares e Álgebras de Kleene Podemos associar diversas estruturas algébricas aos conjuntos

Draft-v

0.2.3

s0 s1

s2 s3

s4

s5

0

1

0

10

10

1

01

0, 1

O autómato R(A) é então

s0 s1

s2 s3

s4

s5

0

0

1 10 0

0

1

1

0, 1

1

Para obtermos D(R(A)) procedemos como o indicado no Teorema 4.23.

0 1

! {s2, s3, s4} {s2, s3, s4} {s0, s1}

?{s0, s1} {s0, s1} ;

e o autómato obtido, chamando s 00 = {s2, s3, s4} e s 01 = {s0, s1}, é

s 00 s 01

0

1

0

Agora, R(D(R(A))) vem

s 01 s 00

0

1

0

que já é determinístico, pelo que coincide com D(R(D(R(A)))), e portanto está encontrado o DFA mínimoequivalente a A.

6.1.3 O algoritmo de Hopcroft

6.1.4 O algoritmo de Watson

6.2 Comparação de autómatos

79