172
7/30/2019 Teoria da Computação Luís Monteiro http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 1/172 Teoria da Computa¸ ao Lu´ ıs Monteiro Departamento de Inform´ atica Universidade Nova de Lisboa 2829-516 Monte da Caparica, Portugal [email protected] Notas de curso 6 de Setembro de 2007

Teoria da Computação Luís Monteiro

Embed Size (px)

Citation preview

Page 1: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 1/172

Teoria da Computacao

Luıs MonteiroDepartamento de InformaticaUniversidade Nova de Lisboa

2829-516 Monte da Caparica, [email protected]

Notas de curso6 de Setembro de 2007

Page 2: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 2/172

Capıtulo 1

Linguagens

Este capıtulo apresenta as primeiras definicoes em que assenta a teoria daslinguagens formais e automatos. Depois de introduzidas as nocoes funda-mentais de alfabeto, palavra e linguagem, discute-se brevemente o problemada caracterizacao finita de linguagens, que de uma forma ou de outra e otema central da teoria.

1.1 Palavras sobre um alfabeto

Definicao 1.1 [Alfabeto] Um alfabeto e um conjunto de elementos chamados

sımbolos  ou letras .Os conjuntos A = {a , b , . . . , z  }, D = {0, 1, . . . , 9} e E  = A ∪ D ∪

{+, −, ×, ÷, (, )} sao exemplos de alfabetos, o primeiro constituıdo pelas le-tras latinas minusculas, o segundo pelos algarismos decimais, e o terceiropelos sımbolos dos dois anteriores juntamente com operadores aritmeticose parenteses. Em muitos exemplos ao longo do texto e comodo consideraralfabetos com apenas dois ou tres sımbolos, como {0, 1} ou {a,b,c}.

Em geral, a natureza dos sımbolos de um alfabeto e arbitraria, exigindo-se apenas que possam ser considerados indivisıveis  no contexto em que estaoa ser utilizados. Em particular, os sımbolos de um alfabeto nao devem poder

ser compostos a partir de outros sımbolos do mesmo alfabeto. Por exemplo,as palavras chave como begin, while e if sao sımbolos na linguagem Pascal,apesar de serem constituıdas pelas letras b, e, g, etc. E por essa razao, alias,que as palavras chave sao normalmente escritas em tipo negro, visto que a,b, . . ., z nao sao sımbolos do Pascal, ao contrario das letras a, b, . . ., z .

Definicao 1.2 [Palavra] Uma palavra  sobre um alfabeto T  e uma sucessaofinita

a1a2a3 · · · an−1an (n ≥ 0)

1

Page 3: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 3/172

de sımbolos a1, a2, a3, . . . , an−1, an ∈ T , nao necessariamente distintos, que

geralmente se escrevem consecutivamente, sem elementos separadores.

Por exemplo, i1 e anos sao palavras sobre o alfabeto A, 1917 e 0000 saopalavras sobre D, e )))0000× e j2 ÷ (1917 + anos) sao palavras sobre E . Oprograma

program ola(output);begin

writeln(‘ola’)end.

e uma palavra sobre o alfabeto do Pascal, ignorando os espacos e mudancas

de linha; os seus primeiros seis sımbolos sao program, o, l, a, (, o.

Definicao 1.3 [Palavra vazia] A palavra vazia  e a sucessao vazia de sım-bolos. Representa-se por λ.

Note-se que λ nao e um sımbolo do alfabeto T , e apenas uma notacaopara representar a palavra vazia sobre T . Por convencao, ao escrever umapalavra x = a1a2 · · · an assume-se que se n = 0 entao x = λ. Outras notacoescorrentes para a palavra vazia sao , Λ, e ou 1.

Definicao 1.4 [Comprimento] O comprimento da palavra x = a1a2 · · · an e

|x| = n,

o numero de (ocorrencias de) sımbolos em x. Em particular, |λ| = 0.

Definicao 1.5 [Igualdade] Sejam x = a1a2 · · · an e y = b1b2 · · · bk. Poe-se

x = y ⇐⇒ n = k e a1 = b1, a2 = b2, . . . , an = bn.

O conjunto de todas as palavras sobre um alfabeto T  representa-se porT ∗. E ainda usual representar por T + = T ∗ \ {λ} o conjunto de todas aspalavras nao vazias sobre T .

Propriedades 1.6 Se T  e U  forem alfabetos, tem-se as seguintes proprie-dades:

i) T  ⊆ T ∗.Visto que cada sımbolo e uma palavra (de comprimento 1).

ii) ∅∗ = {λ}.Dado que a unica palavra possıvel sobre o alfabeto vazio e a que naocontem ocorrencias de sımbolos.

2

Page 4: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 4/172

iii) T  ⊆ U  ⇒ T ∗ ⊆ U ∗.

Resulta de que qualquer palavra constituıda por sımbolos de T  e tambemconstituıda por sımbolos de U .

iv) T  = ∅ ⇒ T ∗ e infinito.Se T  = ∅ existe a ∈ T ; entao as palavras a, aa, aaa,..., em numeroinfinito, pertencem a T ∗.

Uma forma de “visualizar” o conjunto T ∗ consiste em representa-lo soba forma de uma arvore. Por exemplo, suponhamos que T  = {a,b,c} e consi-deremos a seguinte arvore.

 ¨  ¨  ¨  ¨  ¨  ¨ 

 ¨  ¨r  r 

 r  r  r  r  r  r  s s s sa b c

          

 s s sa b c

......

...          

 s s sa b c

......

...          

 s s sa b c

......

...          

          

          

          

E uma arvore ternaria completa infinita, em que o arco esquerdo que partede cada no esta rotulado com a, o arco central com b, e o direito com c.As palavras de T ∗ correspondem aos percursos finitos iniciados na raiz. A

palavra vazia corresponde ao percurso (vazio) que se inicia e termina naraiz, e em geral uma palavra de comprimento n consiste em percorrer n

arcos consecutivos a partir da raiz. Em traco duplo encontra-se assinaladoo percurso da palavra ba. Se o alfabeto T  tivesse n sımbolos, terıamos umaarvore n-aria em vez de ternaria.

Definicao 1.7 [Concatenacao] O produto ou concatenac˜ ao de duas palavrasx = a1 · · · an e y = b1 · · · bk e a palavra

x.y = a1 · · · anb1 · · · bk.

Frequentemente omite-se o ponto e escreve-se xy em vez de x.y.

Na figura seguinte representa-se esquematicamente esta operacao.

x y

xy

As seguintes propriedades sao de facil verificacao.

3

Page 5: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 5/172

Propriedades 1.8 Sejam x,y,z  ∈ T ∗.

i) x(yz ) = (xy)z  (associatividade ).Se x = a1 · · · an, y = b1 · · · bk e z  = c1 · · · cm, qualquer dos produtosx(yz ) e (xy)z  e igual a a1 · · · anb1 · · · bkc1 · · · cm.

ii) λx = xλ = x (elemento neutro).Quer λx quer xλ acrescentam zero sımbolos a x.

iii) xy = yx, em geral (n˜ ao comutatividade ).Por exemplo, se x = ab e y = ba vem xy = abba e yx = baab, dondexy = yx se a = b, por definicao de igualdade.

iv) |xy| = |x| + |y| (aditividade do comprimento).Imediato.

v) Toda a palavra de T ∗ se escreve de uma unica forma como concatenacaode sımbolos de T  (decomposic˜ ao ´ unica ).Por definicao de igualdade de palavras.

Um conjunto onde esteja definida uma operacao binaria associativa paraa qual existe elemento neutro chama-se um mon´ oide , por conseguinte T ∗ eum monoide, em geral nao comutativo (T ∗ so e comutativo se T  tiver zeroou um sımbolos). Por vezes T ∗ e designado de mon´ oide livre  gerado por T ,em virtude de satisfazer a propriedade de decomposicao unica.

Definicao 1.9 [Potenciacao] Dado x ∈ T 

poe-se x

n

= xx · · · x (n vezes),com a convencao de que x0 = λ. Mais formalmente, as potencias  de umapalavra x definem-se indutivamente por:

• x0 = λ;

• xn+1 = xnx para todo o n ≥ 0.

Por exemplo, se a, b ∈ T  entao a2 = aa e (ab)3 = ababab. Tem-se λn = λ

para todo o n ≥ 0.

1.2 Relacoes de ordem entre palavras

Definicao 1.10 [Subpalavra] Uma palavra x e uma subpalavra  de y, escre-vendo-se x ≤ y, se existirem v e w tais que y = vxw.

v x w

y

4

Page 6: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 6/172

Se v = λ entao y = xw e x e um factor esquerdo ou prefixo de y, e poe-se

x ≤P  y. Se w = λ, y = vx e x e um factor direito ou sufixo de y, o que serepresenta por x ≤S  y. As relacoes ≤, ≤P  e ≤S  chamam-se respectivamenteordem de inclus˜ ao, ordem prefixa  e ordem sufixa .

Por exemplo, rei ≤ areia, rei ≤P  reino e rei ≤S  irei. As notacoes edesignacoes escolhidas para estas relacoes justificam-se por elas satisfazeremas propriedades que caracterizam as ordens parciais.

Propriedades 1.11 Para todos os x,y,z  ∈ T ∗, tem-se:

i) x ≤ x (reflexividade ).Resulta de que x = λxλ.

ii) x ≤ y ≤ z  ⇒ x ≤ z  (transitividade ).Se y = vxw e z  = vyw entao z  = (vv)x(ww).

iii) x ≤ y ≤ x ⇒ x = y (anti-simetria ).Se y = vxw e x = vyw entao x = (vv)x(ww); como |x| = |v| +|v| + |x| + |w| + |w|, tem de ser |v| = |v| = |w| = |w| = 0, isto e,v = v = w = w = λ, por conseguinte x = y.

iv) As relacoes ≤P  e ≤S  satisfazem propriedades analogas.

Estas relacoes tem uma interpretacao simples em termos da representacaode T ∗ em arvore. Por exemplo, x ≤P  y significa que o percurso desde araiz que corresponde a x e uma parte inicial do percurso de y. Nenhumadestas ordens e total, visto que, por exemplo, ab ≤ ba e ba ≤ ab. Se separtir de um alfabeto em que os sımbolos estao totalmente ordenados, deuma maneira arbitraria mas fixa, podem-se ordenar totalmente as palavrasusando a chamada ordem do dicionario ou ordem lexicografica.

Definicao 1.12 [Ordem lexicografica] Seja T  = {a1, a2, . . . , an} um alfabetoordenado por uma ordem total de precedencia  ≺ tal que a1 ≺ a2 ≺ · · · ≺ an.A ordem lexicogr´ afica  <L em T ∗ define-se pondo x <L y se x <P  y, ou se x =vaw e y = vbz  com a ≺ b. Diz-se nesse caso que x precede lexicograficamente y.

Tambem esta ordenacao das palavras se pode interpretar com base naarvore associada a T ∗. Assim, x <L y significa que ou x e uma parte inicialdo percurso de y, ou as palavras tem um percurso inicial comum e depois x

bifurca para a esquerda e y para a direita.Como e habitual, escreve-se x ≤L y quando x <L y ou x = y. Por

exemplo, rei <L reino <L repto porque rei <P  reino e i ≺ p na ordem usualdas letras minusculas. As propriedades seguintes mostram que <L e de factouma ordem total.

5

Page 7: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 7/172

Propriedades 1.13 Para todos os x,y,z  ∈ T ∗:

i) Se x = y tem-se x <L y ou y <L x mas nao ambas (dicotomia ).Se uma palavra for um prefixo proprio da outra, precede-a lexicogra-ficamente. Se nao, ha um primeiro sımbolo no qual elas diferem, e aque contiver o sımbolo que precede o da outra, precede-a lexicografica-mente.

ii) x <L x (irreflexividade ).Nenhuma palavra e um prefixo proprio de si mesma, nem difere de sinalgum sımbolo.

iii) x <L y <L z  ⇒ x <L z  (transitividade ).Se x for um prefixo proprio de z  entao x precede lexicograficamente

z . Se nao, ha um primeiro sımbolo no qual x e z  diferem, digamosx = tau e z  = tcw. Como x <L y, x e y nao podem diferir em nenhumsımbolo de t, de contrario o sımbolo em questao em x precederia ocorrespondente em y, e viria tambem z <L y, o que nao e possıvel pelaprimeira propriedade. Assim, y tem de ter a forma y = tbv, e a b c.Como a = c tem-se a ≺ c, por conseguinte x precede lexicograficamentez .

Para alguns efeitos, a ordem lexicografica e inconveniente, visto que entreduas palavras distintas pode haver uma infinidade de outras palavras. Porexemplo, se a ≺ b, entre a e b ocorrem todas as palavras an com n > 1, isto e,

a <L aa <L aaa <L · · · <L b. A alternativa mais comum e usar uma ordemmista, em que se ordenam primeiro as palavras pelo seu comprimento, e emseguida lexicograficamente as que tem o mesmo comprimento.

Definicao 1.14 [Ordem mista] Seja T  = {a1, a2, . . . , an} um alfabeto orde-nado com a1 ≺ a2 ≺ · · · ≺ an. A ordem mista  <M  em T ∗ define-se porx <M  y se |x| < |y|, ou se |x| = |y| e x <L y.

Na arvore de T ∗, esta ordem corresponde a ordenar as palavras por nıveis,e dentro de cada nıvel da esquerda para a direita.

Claro que se x <P  y entao x <M  y, visto que nesse caso |x| < |y|. Porexemplo, tem-se rei <M  reino e reino <M  repto, porque |reino| = |repto| ereino <L repto. No entanto, reino <M  reineta, apesar de reineta <L reino.

Verifica-se facilmente que <M  e uma ordem total.

Propriedades 1.15 Para todos os x,y,z  ∈ T ∗:

i) Se x = y tem-se x <M  y ou y <M  x mas nao ambas (dicotomia ).Se as palavras tiverem o mesmo comprimento, a que preceder a outrana ordem lexicografica precede-a na ordem mista. Se nao, a de menorcomprimento precede a outra.

6

Page 8: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 8/172

ii) x <M  x (irreflexividade ).

Nenhuma palavra tem comprimento diferente de si mesma, nem se pre-cede lexicograficamente.

iii) x <M  y <M  z  ⇒ x <M  z  (transitividade ).Tem-se, evidentemente, |x| ≤ |y| ≤ |z |. Se os comprimentos foremiguais, entao x <L y <L z , donde x <L z , por conseguinte x <M  z .Se os comprimentos nao forem todos iguais, uma das desigualdadesanteriores e estrita, donde |x| < |z |, e uma vez mais x <M  z .

iv) Cada palavra e precedida na ordem mista por apenas um numero finitode palavras.Para cada k ≥ 0, o numero de palavras de comprimento k e finito

e igual a nk

. Como toda a palavra so pode ser precedida na ordemmista por palavras de comprimento inferior ou igual, as palavras queprecedem uma palavra de comprimento k sao em numero inferior an0 + n1 + · · · + nk.

A ordem mista permite enumerar exaustivamente as palavras de T ∗,comecando pela palavra vazia, seguindo-se as palavras de comprimento 1ordenadas lexicograficamente, depois as de comprimento 2, tambem ordena-das lexicograficamente, e assim sucessivamente. Para o alfabeto {a, b} coma ≺ b, por exemplo, a enumeracao e λ,a,b,aa,ab,ba,bb,aaa,.... Dada umatal enumeracao x0, x1, . . . , xk, . . ., pode-se definir uma funcao sucessor σ para

palavras sobre T  pondo σ(xi) = xi+1 para todo o i ≥ 0. O interesse destafuncao e que ela pode tambem ser definida directamente, sem ter de se re-correr a ordem mista.

Definicao 1.16 [Sucessor] Seja T  = {a1, a2, . . . , an} um alfabeto ordenadocom a1 ≺ a2 ≺ · · · ≺ an. A funcao sucessor  σ : T ∗ → T ∗ e definidarecursivamente pelas igualdades:

• σ(λ) = a1;

• σ(xai) = xai+1 se i < n;

• σ(xan) = σ(x)a1.

Por exemplo, para o alfabeto {a, b} anterior, σ(λ) = a, σ(a) = b, σ(b) =σ(λb) = σ(λ)a = aa, σ(aa) = ab, etc. Como se mostra a seguir, a enumeracaodas palavras de T ∗ pela ordem mista pode ser obtida, tal como neste exemplo,por aplicacao sucessiva de σ a partir de λ.

Propriedades 1.17 Seja x0, x1, . . . , xk, . . . a enumeracao de T ∗ pela ordemmista.

7

Page 9: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 9/172

i) Para todo o x ∈ T ∗, x <M  σ(x).

Se x for a palavra vazia, ou se tiver a forma wai com i < n, e imediato,visto que ai ≺ ai+1. Se x tiver a forma wan, ha dois casos a considerar.Se w tiver comprimento inferior a σ(w), tambem wan tem comprimentoinferior a σ(w)a1, e portanto wan <M  σ(w)a1. Se tiverem o mesmocomprimento, assumindo indutivamente que w <M  σ(w) tem de serw <L σ(w), donde wan <L σ(w)a1, e uma vez mais wan <M  σ(w)a1.

ii) Para todo o x ∈ T ∗ \ {λ}, x = σ(v) para algum v ∈ T ∗.Se x terminar num sımbolo diferente de a1, digamos x = wai comi > 1, entao x = σ(wai−1). Se x = a1 entao x = σ(λ). Se x = wa1 comw = λ, e assumindo indutivamente que w = σ(v) para algum v, vemx = σ(va

n).

iii) Para todo o i ≥ 0, σ(xi) = xi+1.Dado i ≥ 0, ja sabemos pela propriedade anterior que existe j talque xi+1 = σ(x j). Temos apenas de verificar que j = i. Como, pelaprimeira propriedade, x j <M  σ(x j), tem-se j < i + 1. Se i = 0 so podeser j = 0. Se i > 0, assumimos indutivamente o resultado valido paratodo o k < i, vindo σ(xk) = xk+1 <M  xi+1. Isto mostra que nao sepode ter j < i, logo j = i.

Pondo σk(x) = σ(σ(· · · σ(x) · · ·)) para representar k aplicacoes consecu-tivas de σ a x, com a convencao de que σ0(x) = x, e facil ver que xk = σk(λ)

para todo o k ≥ 0. Noutros termos, a k-esima palavra na enumeracao pelaordem mista obtem-se aplicando k vezes σ a λ. Quando tivermos necessidadede enumerar as palavras sobre um dado alfabeto, f a-lo-emos sempre usandoa ordem mista ou a funcao sucessor, supondo dada uma ordem total entre ossımbolos do alfabeto.

1.3 Linguagens

Definicao 1.18 [Linguagem] Uma linguagem  L sobre um alfabeto T  e umconjunto de palavras sobre T , isto e, e um subconjunto de T ∗ (L ⊆ T ∗). Uma

linguagem diz-se finita  se for um conjunto finito, de contrario, diz-se infinita .

De acordo com esta definicao, uma linguagem de programacao e o con- junto dos programas que podem ser escritos na linguagem. Tal definicao “emextensao” talvez nao corresponda a ideia intuitiva que temos de linguagem.No entanto, tem a vantagem de caracterizar a nocao de linguagem de umaforma simples, independentemente dos metodos que possam ser usados paradefinir linguagens.

8

Page 10: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 10/172

Note-se que ∅ e {λ} sao linguagens (distintas) sobre qualquer alfabeto,

e que {a} (com a ∈ T ), T , T +

e T ∗

sao linguagens sobre T . Como outrosexemplos de linguagens, sobre o alfabeto {a, b}, temos:

L1 = {an : n e par},

L2 = {x ∈ T ∗ : |x| ≤ 4},

L3 = {anbn : n ≥ 0},

L4 = {anbm : n ≥ 0, m ≥ 0}.

As linguagens ∅, {λ}, {a}, T  e L2 sao finitas, ao passo que T + e T ∗ saoinfinitas se T  = ∅, bem como L1, L3 e L4.

Qualquer linguagem L sobre T  pode ser representada por uma arvore.

Partindo da arvore de T ∗, classificam-se primeiramente os seus nos em “prin-cipais” (representados por um cırculo duplo) e “secundarios”, consoante aspalavras que terminam nesses nos pertencem ou nao a linguagem L. Em se-guida, os nos secundarios abaixo dos quais so existem nos secundarios podemser eliminados, porque as palavras que por eles passam nao pertencem a L.Obtem-se assim a arvore de L.

Por exemplo, as arvores das linguagens L1, L3 e L4 sao as seguintes:

L1

...

 s s s s s

 e e e

a

a

a

a

L3

......

            

    

 d  d 

 d  d  d  d 

 d  d 

 s s  s  s s e

 s  s s e s ea

a

a

a

b

b

b

b

L4

......

......

...

            

    

 d  d 

 d  d  d  d 

 d  d  d  d  d  d 

 d  d 

 d  d  d  d  d  d  s  s

 s s s

 e  e e  e

 e

 s s  s  s e  e e  e s  s

s e  e

 e s  s e  e  s ea

a

a

a

b

b

b

b

b

b

b

b

b

b

O problema central da teoria das linguagens formais e o da caracterizacaofinita de linguagens. A caracterizacao das linguagens finitas nao poe, emprincıpio, problemas, visto que basta enumerar as palavras que as compoem.O mesmo nao se pode dizer das linguagens infinitas. Em certos casos sim-

ples, como nos exemplos acima, podem definir-se as linguagens por meio depropriedades que as suas palavras, e so elas, satisfazem. Mas em geral issonao se pode fazer. Com efeito, pode mesmo mostrar-se que nem todas aslinguagens admitem uma caracterizacao finita. Mas o que quer isto dizer?

Ao pretender definir linguagens sobre um alfabeto T  = ∅, qualquer queseja o metodo que venha a ser usado, ele pode sempre ser expresso numalinguagem de definicao D sobre um alfabeto finito auxiliar A, possivelmentecontendo T  (por exemplo, D pode ser uma linguagem de programacao; nos

9

Page 11: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 11/172

capıtulos seguintes veremos varios exemplos de tais linguagens). Cada pa-

lavra d ∈ D permite definir uma linguagem Ld sobre T , e o caracter finitoda definicao resulta de que d contem apenas um numero finito de sımbolos.Esta intuicao leva-nos a fazer a seguinte definicao.

Definicao 1.19 [Caracterizacao finita] Seja T  um alfabeto. Por caracte-rizac˜ ao finita  de linguagens sobre T  entendemos uma linguagem de definic˜ aoD sobre um alfabeto auxiliar finito A, e uma correspondencia d → Ld decada definic˜ ao d ∈ D a linguagem definida Ld ⊆ T ∗.

Estamos agora em condicoes de verificar que toda a caracterizacao finitae incompleta, no sentido em que se podem encontrar linguagens que nao sao

por ela definidas.

Proposicao 1.20 Seja  D uma caracterizac˜ ao finita de linguagens sobre  T .Existe uma linguagem  L sobre  T  tal que  L = Ld para todo o d ∈ D.

Dem. Supondo que os sımbolos de A foram ordenados de certa formaarbitraria mas fixa, as palavras de D podem ser enumeradas pela ordemmista:

d0 d1 d2 · · · dk · · · .

Para tanto basta enumerar as palavras de A∗ e remover as que nao pertencem

a D. Mas entao e possıvel enumerar as linguagens definidas por D:

Ld0 Ld1 Ld2 · · · Ldk · · · .

Para ver que esta enumeracao nao esgota as linguagens em P (T ∗), raciocina-mos do seguinte modo. Tal como fizemos para D, as palavras de T ∗ podemser enumeradas a partir de uma ordenacao dos sımbolos de T . Suponhamosque essa enumeracao e x0, x1, . . . , xk, . . ., e definamos a linguagem

L = {xk ∈ T ∗ : xk ∈ Ldk}.

´E facil ver que L nao esta incluıda na lista acima. Com efeito, nao se podeter L = Ldk para nenhum k porque xk ∈ L se e so se xk ∈ Ldk .

Fica assim justificada a afirmacao anterior sobre a impossibilidade de ca-racterizar por meios finitos (que estamos aqui a identificar com caracterizarpor palavras de uma certa linguagem) todas as linguagens sobre um dadoalfabeto nao vazio. Ha resultados na Teoria da Computacao bem mais res-tritivos e profundos do que aquele que acabamos de demonstrar, mas naocabem no ambito desta disciplina.

10

Page 12: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 12/172

Nos capıtulos seguintes consideraremos fundamentalmente dois metodos

para caracterizar linguagens arbitrarias, os automatos e as gramaticas. Noproximo capıtulo comecaremos por estudar as chamadas linguagens “regu-lares”, que tem uma caracterizacao muito simples em termos de certo tipode operacoes sobre linguagens, ditas regulares. A linguagem D de definicaoe nesse caso tambem muito simples, sendo constituıda pelas chamadas ex-pressoes regulares, como se vera.

11

Page 13: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 13/172

Capıtulo 2

Linguagens regulares

Alem das operacoes de uniao, interseccao e complementacao, herdadas da te-oria dos conjuntos, existem outras operacoes sobre linguagens que se prendemdirectamente com a operacao de concatenacao de palavras. Estas operacoessao o produto de duas linguagens e o fecho de uma linguagem, que, jun-tamente com a uniao, constituem as chamadas operacoes regulares. A im-portancia das operacoes regulares advem-lhes do facto de elas serem utili-zadas na definicao das linguagens regulares, que serao introduzidas nestecapıtulo.

2.1 Operacoes regularesDefinicao 2.1 [Produto] O produto ou concatenac˜ ao de duas linguagens L

e M  e a linguagemL.M  = {xy : x ∈ L, y ∈ M }

constituıda por todas as palavras que se obtem concatenando uma palavrade L e outra de M . Tambem se escreve LM  em vez de L.M .

Vejamos alguns exemplos.

• {a,bc}{cd,λ} = {acd, a, bccd, bc}.

• {a

n

b

m

: n ≥ 0, m ≥ 0} = {a

n

: n ≥ 0}{b

m

: m ≥ 0}.• {anbn : n ≥ 0} = {an : n ≥ 0}{bn : n ≥ 0}, visto que, por exemplo,

a3 ∈ {an : n ≥ 0} e b2 ∈ {bn : n ≥ 0} mas a3b2 ∈ {anbn : n ≥ 0}.

No ultimo exemplo, o facto de se usar a mesma letra n em {an : n ≥ 0} e{bn : n ≥ 0} nao tem qualquer significado, visto que nao ha nenhuma relacaoentre as ocorrencias de n no primeiro e no segundo conjuntos. Assim, oproduto {an : n ≥ 0}{bn : n ≥ 0} tambem se pode escrever {an : n ≥ 0}{bm :m ≥ 0}, que e a linguagem usada no segundo exemplo.

12

Page 14: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 14/172

Propriedades 2.2 Sejam L, M  e N  linguagens.

i) {λ}L = L{λ} = L (elemento neutro).Porque {λ}L = {xy : x ∈ {λ}, y ∈ L} = {y : y ∈ L} = L.

ii) L(M N ) = (LM )N  (associatividade ).Tem-se L(M N ) = {xw : x ∈ L, w ∈ M N } = {xyz  : x ∈ L, y ∈ M, z  ∈N }, e desenvolvendo (LM )N  obtinha-se o mesmo conjunto. (Note-seque se fez implicitamente uso da associatividade da concatenacao depalavras.)

iii) ∅L = L∅ = ∅ (elemento absorvente ).Porque?

Observacao 2.3 Qualquer linguagem  finita pode obter-se como uma uni˜ aode produtos das linguagens  ∅, {λ} e  {a} com a ∈ T . Por exemplo, {ab,λ} ={a}{b} ∪ {λ}. ´ E f´ acil estender este raciocınio ao caso geral. 2

Podemos agora definir as potencias de L a partir do produto.

Definicao 2.4 [Potenciacao] As potencias de uma linguagem L definem-seindutivamente por

• L0 = {λ};

• Ln+1 = LnL para todo o n ≥ 0.

Cada palavra de Ln e assim um produto de n palavras arbitrarias de L, nao

necessariamente iguais ou distintas, podendo-se escrever

Ln = {x1x2 · · · xn : x1, x2, . . . , xn ∈ L}.

Convenciona-se que o produto de zero palavras e λ, porque L0 = {λ}, e queo produto de uma palavra x e x, porque L1 = L0L = L.

Consideremos, por exemplo, o alfabeto T  = {a, b}. Tem-se:

• T 0 = {λ};

• T 1 = T  = {a, b};

• T 2 = T T  = {a, b}{a, b} = {a2,ab,ba,b2};

• T 3 = T 2T  = {a3, a2b,aba,ab2, ba2,bab,b2a, b3}; etc.

Em geral, para qualquer alfabeto T , nao e difıcil verificar que T n e o conjuntode todas as palavras de comprimento n sobre T .

Definicao 2.5 [Fecho] O fecho de L e a linguagem

L∗ =n≥0

Ln

e o fecho positivo e L+ = LL∗.

13

Page 15: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 15/172

Cada palavra de L∗ e entao a concatenacao de zero ou mais palavras de

L, e cada palavra de L+

e a concatenacao de uma ou mais palavras de L.Por exemplo:

• {an : n ≥ 0} =

n≥0{an} =

n≥0{a}n = {a}∗.

• {anbm : n ≥ 0, m ≥ 0} = {an : n ≥ 0}{bm : m ≥ 0} = {a}∗{b}∗.

• Como T n e o conjunto das palavras de comprimento n sobre T , o con- junto de todas as palavras sobre T  e

n≥0 T n. Assim, a notacao T ∗

anteriormente introduzida corresponde de facto ao fecho de T , encaradocomo linguagem.

As operacoes de uniao, produto e fecho sao chamadas operacoes “regula-res”, e estao na base da definicao das linguagens regulares.

2.2 Linguagens e expressoes regulares

Definicao 2.6 [Linguagens regulares] Seja T  um alfabeto. As linguagens regulares  sobre T  sao o menor conjunto de linguagens sobre T  tal que:

• ∅, {λ} e {a}, para a ∈ T , sao linguagens regulares.

• Se L e M  forem linguagens regulares entao L ∪ M , L.M  e L∗ saolinguagens regulares.

Observacao 2.7 Pela Observac˜ ao ??, toda a linguagem finita e regular.Mas existem, evidentemente, linguagens regulares infinitas, a mais simples das quais e  {a}∗ = {λ,a,a2, . . .}. 2

Para simplificar a escrita de linguagens regulares, utiliza-se um certo tipode expressoes ditas regulares.

Definicao 2.8 [Expressoes regulares] As express˜ oes regulares  sobre um al-fabeto T  escrevem-se com os sımbolos de T  e com os sımbolos ‘∅’, ‘λ’, ‘+’,‘.’, ‘∗’, ‘(’ e ‘)’, e definem-se indutivamente do seguinte modo:

• ∅, λ e a, para todo o a ∈ T , sao expressoes regulares.

• Se E  e F  forem expressoes regulares entao (E  + F ), (E.F ) e E ∗ saoexpressoes regulares, chamadas respectivamente a soma  e o produto deE  e F , e o fecho de E .

Por exemplo, (((a.b)+c)∗+(a+c)) e uma expressao regular, de acordo coma definicao anterior. Na pratica, a escrita de expressoes regulares simplifica-se bastante omitindo o ponto ‘.’ e alguns parenteses. Omitindo o pontoe os parenteses exteriores, a expressao anterior fica ((ab) + c)∗ + (a + c).

14

Page 16: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 16/172

Convencionando que o produto tem prioridade superior a soma, a expressao

simplifica-se para (ab + c)∗

+ (a + c). Finalmente, escrevemos (ab + c)∗

+ a + cadmitindo que a soma (e o produto) sao associativos, o que verificaremosadiante.

Definicao 2.9 [Linguagem representada] A linguagem representada  por umaexpressao regular E  denota-se L(E ) e define-se indutivamente como segue:

• L(∅) = ∅.

• L(λ) = {λ}.

• L(a) = {a} para todo o a ∈ T .

• Para expressoes regulares E  e F :

– L(E + F ) = L(E ) ∪ L(F ).

– L(EF ) = L(E )L(F ).

– L(E ∗) = L(E )∗.

Por exemplo,L((ab)∗c) = L((ab)∗)L(c)

= L(ab)∗{c}= (L(a)L(b))∗{c}= ({a}{b})∗{c}= {ab}∗{c}.

Ve-se que nao existe uma diferenca substancial entre a escrita de umalinguagem regular e de uma expressao regular que a represente. Basicamente,para obter a linguagem que uma expressao regular representa, inserem-sechavetas ‘{’ e ‘}’ apropriadamente, e troca-se ‘+’ por ‘∪’. Apesar disso,como se vera, as expressoes regulares sao mais simples de manipular, o que

 justifica a sua introducao.As seguintes propriedades sao imediatas.

Propriedades 2.10

i) Toda a expressao regular representa uma linguagem regular.

ii) Toda a linguagem regular e representada por alguma expressao regular.

Exemplo 2.11 Consideremos alguns exemplos de linguagens e expressoesregulares.

1) Inteiros bin´ arios sem sinal e sem zeros a esquerda 

15

Page 17: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 17/172

Linguagem: {0, 1, 10, 11, 100, 101, 110, 111, 1000, . . .}

= {0} ∪ {1}{λ, 0, 1, 00, 01, 10, 11, 000, . . .}

= {0} ∪ {1}{0, 1}∗,

Expressao: 0 + 1(0 + 1)∗.

2) Execuc˜ oes da instruc˜ ao while B do S 

Representemos pelo sımbolo b a avaliacao da condicao Booleana B comresultado “true”, por b a avaliacao de B com resultado “false”, e por s

a execucao de S . Uma execucao da instrucao while B do S  da assimorigem a uma palavra sobre o alfabeto {b,b,s}. O conjunto de todas

as execucoes possıveis define uma linguagem sobre o mesmo alfabeto.

Linguagem: {b,bsb,bsbsb,...}

= {λ, bs, (bs)2, . . .}{b}

= {bs}∗{b},

Expressao: (bs)∗b.

3) Execuc˜ oes da instruc˜ ao repeat S  until B

Este caso e analogo ao anterior:

Linguagem: {sb, sbsb, sbsbsb, . . .}

= {s}{λ, bs, (bs)2, . . .}{b}

= {s}{bs}∗{b},

Expressao: s(bs)∗b.

4) Identificadores Um identificador formado apenas por letras e dıgitos e iniciado por umaletra e caracterizado pela expressao regular:

(a + b + · · ·)(a + b + · · · + 0 + 1 + · · ·)∗.

2.3 Diagramas sintacticos

As linguagens regulares podem tambem ser representadas por diagramas co-nhecidos como diagramas sintacticos (ou diagramas de Wirth). A tıtulo deexemplo, consideremos a linguagem das execucoes de repeat S  until B, que

16

Page 18: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 18/172

como vimos pode ser representada pela expressao regulars(bs)∗b. A mesma

linguagem pode ser caracterizada pelo diagrama seguinte, tomando todos ospercursos possıveis da entrada ate a saıda e concatenando os sımbolos queforem sendo encontrados:

E E E

' ' '

'&

   $   %

s

s b

b

Qualquer expressao regular pode ser representada por um tal diagrama.Na figura seguinte indicam-se as regras para associar um diagrama sintacticoa toda a expressao regular.

∅ E E ∅

λ E {λ}

a E a E {a}

E + F  $   %

&

'

E

E E 

%

   $'&E L(E ) ∪ L(F )

EF  E E  E F  E L(E )L(F )

17

Page 19: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 19/172

E ∗ E

'&'

   $   %'

L(E )∗

Como exemplo, o diagrama

 c

 c

 c

 c

'

'

E

E

 T

 c

' $

& %& $

' %

desliga

marca

fala

atende

atende

toca

18

Page 20: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 20/172

que representa uma conversa telefonica, esta associado a expressao regular

marca (atende toca)∗(atende fala + λ) desliga,

2.4 Propriedades de expressoes regulares

Duas expressoes regulares consideram-se iguais se representarem a mesmalinguagem:

P  = Q ⇐⇒ L(P ) = L(Q).

Por essa razao, confunde-se as vezes P  com L(P ). Por exemplo, escreve-sex ∈ P  ou P  ⊆ Q em vez de x ∈ L(P ) ou L(P ) ⊆ L(Q).

Com base nesta nocao de igualdade, as expressoes regulares satisfazemum certo numero de propriedades, herdadas das correspondentes proprieda-des das linguagens que representam. As propriedades serao agrupadas pelasoperacoes a que respeitam. O primeiro grupo de propriedades diz respeitoa soma de expressoes regulares, que resultam directamente das propriedadesda uniao de conjuntos.

Propriedades 2.12 (Soma) Sejam P , Q e R expressoes regulares.

i) P  + (Q + R) = (P  + Q) + R (associatividade ).

ii) P  + ∅ = ∅ + P  = P  (existencia de elemento neutro).

iii) P  + Q = Q + P  (comutatividade ).iv) P  + P  = P  (idempotencia ).

Seguem-se as propriedades do produto e da iteracao.

Propriedades 2.13 (Produto) Sejam P , Q e R expressoes regulares.

i) P (QR) = (P Q)R (associatividade ).

ii) P λ = λP  = P  (existencia de elemento neutro).

iii) P ∅ = ∅P  = ∅ (existencia de elemento absorvente ).

Propriedades 2.14 (Distributividade) Sejam P , Q e R expressoes regu-lares.

i) P (Q + R) = P Q + P R (distributividade a esquerda ).As palavras de P (Q + R) tem a forma xy, onde x ∈ P  e y ∈ Q ouy ∈ R, logo sao as palavras de P Q + P R. Assim, tem-se a igualdadeanterior. Para a igualdade seguinte raciocina-se de forma analoga.

ii) (Q + R)P  = QP  + RP  (distributividade a direita ).

19

Page 21: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 21/172

Propriedades 2.15 (Iteracao) Sejam P  e Q expressoes regulares.

i) P ∗ + λ = P ∗ (porque λ ∈ P ∗).

ii) P ∗ + P  = P ∗ (porque P  ⊆ P ∗).

iii) (P  + λ)∗ = P ∗.Se num produto de n palavras de P  + λ, k forem iguais a λ, tem-se umproduto de n − k palavras de P , logo pertencente a P ∗. Assim, (P  +λ)∗ ⊆ P ∗. Mas um produto de n palavras de P  e tambem um produtode n palavras de P  + λ, logo (P  + λ)∗ ⊆ P ∗. Das duas desigualdadesdeduz-se a igualdade pretendida.

iv) (P ∗)∗ = P ∗ (porque?).

v) λ + P P ∗ = P ∗ (porque?).

vi) P (QP )∗ = (P Q)∗P .Uma palavra de P (QP )∗ tem a forma x0(y1x1)(y2x2) · · · (ynxn) onde osxi (0 ≤ i ≤ n) pertencem a P  e os y j (1 ≤ j ≤ n) pertencem a Q.Os parenteses foram colocados de modo a dar a perceber claramenteque se tem um produto de uma palavra de P  por outra de (QP )∗, aqual e por sua vez um produto de n palavras de QP , sendo cada umadestas o produto de uma palavra de Q por outra de P . Colocando osparenteses de outra forma, (x0y1)(x1y2)(x2 · · · yn)xn, ve-se que a mesmapalavra pertence a (P Q)∗P . Se tivessemos partido de uma palavrade (P Q)∗P , o mesmo raciocınio mostraria que a palavra pertenceria

tambem a P (QP )∗. Conclui-se que as duas expressoes regulares saoiguais.

2.5 Equacoes lineares direitas

Uma equac˜ ao linear direita  sobre um alfabeto T  tem a forma

X  = AX  + B,

onde X  e a inc´ ognita  e A e B sao expressoes regulares sobre T . A equacao

diz-se “linear” por analogia com a funcao numerica f (x) = ax + b, cujarepresentacao grafica e uma linha recta. Por vezes, sobretudo em exemplos,trocamos os termos e escrevemos X  = B + AX , o que nao importa visto queAX  + B = B + AX .

Como veremos, esta equacao tem sempre como solucao a expressao regularX  = A∗B. Mesmo quando existem outras solucoes, esta e a solucao padrao.

Exemplo 2.16 Vejamos alguns exemplos.

20

Page 22: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 22/172

i) Consideremos as execucoes da instrucao while B do S . Uma execucao

consiste na avaliacao da condicao booleana com valor falso, ou naavaliacao da condicao com valor verdadeiro, seguido da execucao docorpo da instrucao, seguido da repeticao da execucao da instrucao‘while”. Esta definicao recursiva de execucao traduz-se imediatamentena equacao W  = b + bsW , cuja solucao W  = (bs)∗b e a expressaoregular encontrada anteriormente.

ii) O caso da instrucao repeat S  until B e semelhante, obtendo-se aequacao R = sb + sbR e a solucao R = (sb)∗sb. Pela ultima daspropriedades da iteracao apresentadas acima, esta expressao e igual as(bs)∗b, que e a expressao obtida anteriormente para este caso.

iii) Agora consideremos a linguagem sobre o alfabeto {a, b} formada portodas as palavras em que o a aparece aos pares, isto e, toda a ocorrenciade ordem ımpar de a na palavra e imediatamente seguida de outraocorrencia de a (esta de ordem par, pelo que nao obriga a uma novaocorrencia de a). Seja A essa linguagem. Uma palavra em A e ou apalavra vazia (que satisfaz trivialmente a condicao dada), ou comecapor a ou por b. Caso comece por a, como essa ocorrencia e de ordemımpar (e a primeira), e seguida por outra ocorrencia de a e no resto dapalavra o a continua a aparecer aos pares, pelo que o resto da palavraa seguir aos dois a’s iniciais e tambem uma palavra de A. Se o primeirosımbolo da palavra for b, entao o resto da palavra tambem pertence

a A, por um raciocınio analogo ao do caso anterior. Tem-se assim aequacao A = λ + aaA + bA, ou seja A = λ + (aa + b)A, cuja solucao eA = (aa + b)∗λ = (aa + b)∗.

O seguinte resultado estuda as solucoes da equacao X  = AX  + B.

Proposicao 2.17 Seja T  um alfabeto n˜ ao vazio e X  = AX +B uma equac˜ aolinear direita com  A e  B express˜ oes regulares sobre  T .

i) A∗B e soluc˜ ao da equac˜ ao.

ii) Se  λ ∈ A, a equac˜ ao tem infinitas soluc˜ oes.

iii) A∗B e a menor soluc˜ ao com respeito a inclus˜ ao, isto e, est´ a contida em qualquer outra soluc˜ ao.

iv) Se  λ ∈ A, a soluc˜ ao e  unica.

Dem. i) Substituindo na equacao X  por A∗B vem AX +B = A(A∗B)+B =AA∗B + B = (AA∗ + λ)B = A∗B = X , pela quinta propriedade da iteracao.

ii) Para provar que a equacao tem infinitas solucoes basta verificar queX  = A∗B + A∗L e solucao para todo o L ⊆ T ∗ (visto que T ∗ e infinito por T 

21

Page 23: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 23/172

ser nao vazio, logo tem infinitos subconjuntos). Tem-se AX + B = A(A∗B +

A∗

L)+B = AA∗

B +AA∗

L+B = (AA∗

+λ)B +AA∗

L = A∗

B+A∗

L = X . Napenultima igualdade usou-se uma vez mais a quinta propriedade da iteracaobem como o facto que AA∗ = A∗. Com efeito, dado que λ ∈ A, tem-seλ ∈ AA∗, por conseguinte AA∗ = AA∗ + λ = A∗.

iii) Temos de verificar que qualquer outra solucao L contem A∗B. Maisprecisamente, se L = AL + B, entao A∗B ⊆ L. Ora se x ∈ A∗B, entao x

e o produto de uma palavra de A∗ por uma palavra de B. Uma palavra deA∗ e um produto de um certo numero n ≥ 0 de palavras de A, pelo que x

e o produto de n ≥ 0 palavras de A e uma palavra de B. Em particular,x ∈ AnB. Sendo L solucao, pode-se escrever L = AL+B = A(AL+B)+B =A2L+AB+B = · · · = An+1L+AnB+· · ·+AB+B. Isto mostra que AnB ⊆ L,donde x ∈ L. Assim, todo o elemento x de A∗B tambem pertence a L, logoA∗B ⊆ L.

iv) Neste caso e preciso verificar que qualquer outra solucao L e igual aA∗B, isto e, se L = AL + B, entao L = A∗B. Viu-se no caso anterior queA∗B ⊆ L. Falta ver que L ⊆ A∗B. Seja x ∈ L e |x| = n o seu comprimento.Vimos que L = An+1L + AnB + · · · + AB + B. Dado que x ∈ L, x pertencea um dos conjuntos da direita. Como λ ∈ A, as palavras de An+1L temcomprimento ≥ n + 1 > |x|. Assim, x ∈ An+1L, logo x ∈ AkB para algumk ≤ n. Como AkB ⊆ A∗B, tem-se x ∈ A∗B. Assim, de x ∈ L conclui-sex ∈ A∗B, o que mostra que L ⊆ A∗B.

2.6 Sistemas de equacoes lineares direitas

Um sistema de equac˜ oes lineares direitas  sobre um alfabeto T  tem a forma

X 1 = A11X 1 + · · · + A1nX n + B1

...X n = An1X 1 + · · · + AnnX n + Bn

onde os X i sao incognitas, e os Aij e B j sao expressoes regulares sobre T 

(1 ≤ i, j ≤ n).

Exemplo 2.18

1) Numeros inteiros sem sinal e sem zeros a esquerda na base 2:N  = 0 + 1B

B = λ + (0 + 1)B.

Um tal numero e o 0 ou comeca por 1 e e seguido por uma sequenciaarbitraria de 0’s e 1’s, a que corresponde a incognita B.

22

Page 24: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 24/172

Note-se que o sistema nao esta exactamente no formato indicado na

definicao, visto que cada incognita deveria aparecer no membro direitode cada equacao com um coeficiente apropriado. Neste caso, bastaadicionar o termo ∅N  a ambas as equacoes. Como o termo e vazio,nada se altera nas equacoes, excepto a forma, que passa a estar deacordo com a definicao.

2) Palavras com um numero par de ocorrencias de a:P  = bP  + aI  + λ

I  = aP  + bI.

(Formalmente, a ultima equacao devia escrever-se I  = aP  + bI  + ∅.)

Esta linguagem, P , define-se com recurso a linguagem I  de todas aspalavras com um numero ımpar de ocorrencias de a. O que a primeiraequacao indica e que uma palavra com um numero par de ocorrenciasde a pode estar em tres casos: ou comeca por b e a seguir vem umapalavra com um numero par de a’s, ou comeca por a e a seguir tera devir um numero ımpar de a’s, ou e a palavra vazia (que tem zero a’s,um numero par). A equacao para I  tem uma leitura identica.

Definicao 2.19 [Resolucao de um sistema linear direito] Um sistema lineardireito resolve-se por eliminacao e substituicao de incognitas, nos seguintespassos:

1) Elimina-se uma incognita numa (no membro direito de uma) equacao.A eliminacao e feita usando a solucao de uma equacao linear direita,tratando as outras incognitas como constantes.

2) Substitui-se a incognita pela expressao obtida nas restantes equacoesdo sistema.

3) Procede-se de igual modo para as restantes incognitas do sistema, umaa uma, por uma ordem arbitraria.

Note-se a semelhanca deste metodo com o usado em sistemas de equacoesnumericas.

Exemplo 2.20

23

Page 25: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 25/172

Sistema dado P  = aI  + bP  + λ

I  = aP  + bI 

Eliminar I 

− − −

I  = b∗aP 

Substituir na equacao de P 

P  = a(b∗aP ) + bP  + λ

= (ab∗a + b)P  + λ

− − −

Eliminar P 

P  = (ab∗a + b)∗

− − −

Substituir na equacao de I 

P  = (ab∗

a + b)∗

I  = b∗a(ab∗a + b)∗

Formalmente, uma soluc˜ ao de um sistema  e um tuplo (S 1, . . . , S  n) deexpressoes regulares tal que a substituicao de cada incognita pela sua solucaotransforma as equacoes em igualdades entre expressoes regulares. Havendomais do que uma solucao, elas podem-se ordenar dizendo que (S 1, . . . , S  n) ≤(S 1, . . . , S  n) se S i ⊆ S i para todo o i, 1 ≤ i ≤ n. Tal como no caso de uma soequacao, qualquer sistema tem uma solucao mınima, que pode ser calculadapelo metodo de eliminacao e substituicao.

Proposicao 2.21 A resoluc˜ ao de um sistema de equac˜ oes linear direito por eliminac˜ ao e substituic˜ ao calcula a soluc˜ ao mınima do sistema.

Dem. A resolucao consiste em ir sucessivamente transformando o sistemainicial mediante a aplicacao de duas operacoes: eliminacao de uma incognitae sua substituicao nas outras equacoes. Cada uma destas operacoes pro-duz um sistema cujas solucoes sao tambem solucoes do sistema antes de aoperacao ter sido aplicada, como e facil ver. Assim, o sistema final, que janao tem incognitas no membro direito de nenhuma equacao, caracteriza umasolucao que e tambem solucao do sistema inicial. Que a solucao obtida e

mınima resulta de que em cada eliminacao se utiliza a solucao mınima paraa incognita eliminada. A verificacao detalhada desta ultima observacao eomitida.

Observacao 2.22 A ordem pela qual se eliminam as inc´ ognitas tem im-plicac˜ oes na simplicidade das soluc˜ oes que se obtem. No exemplo anterior optou-se por eliminar  I  em primeiro lugar porque a equac˜ ao de  I  n˜ ao tinha termo constante e por isso foi possıvel ter uma soluc˜ ao para  I  com um ´ unico

24

Page 26: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 26/172

termo, o que acabou por simplificar tambem a soluc˜ ao de  P . Se se tivesse 

comecado por eliminar  P  na equac˜ ao P  = aI  + bP  + λ obtinha-se a soluc˜ aoP  = b∗(aI + λ) = b∗aI + b∗, que tem dois termos e torna a soluc˜ ao final me-nos simples. Eis a resoluc˜ ao do sistema com a eliminc˜ ao de  P  em primeirolugar:

P  = aI  + bP  + λ

I  = aP  + bI 

P  = b∗(aI  + λ)= b∗aI  + b∗

− − −

− − −I  = a(b∗aI  + b∗) + bI 

= ab∗aI  + ab∗ + bI 

= (ab∗a + b)I  + ab∗

− − −I  = (ab∗a + b)∗ab∗

P  = b∗a(ab∗a + b)∗ab∗ + b∗

I  = (ab∗a + b)∗ab∗

A soluc˜ ao de  I  e de complexidade compar´ avel a do caso anterior mas a de P  e mais complexa e tambem menos intuitiva. Note-se que estamos aqui a 

 falar da complexidade  da escrita das express˜ oes regulares, j´ a que em ambas as resoluc˜ oes elas denotam as mesmas linguagens e portanto, por definic˜ ao,s˜ ao iguais. 2

2.7 Outros tipos de equacoesEquacao linear esquerda

Em vez da equacao linear direita X  = AX  + B podıamos ter estudadoa equacao linear esquerda X  = XA + B. A solucao padrao neste caso eX  = BA∗. Sabendo isto, os sistemas de equacoes resolviam-se como no casoanterior.

Como veremos, este tipo de equacao surgira mais tarde a proposito daeliminacao da recursividade a esquerda em gramaticas LL(1).

Equacoes lineares, nem direitas nem esquerdas

A equacao X  = aXb + λ e linear (tem no maximo uma ocorrencia de X 

em cada termo), sem ser direita nem esquerda. A solucao desta equacao ea linguagem {anbn : n ≥ 0}, que como veremos no proximo capıtulo nao eregular.

25

Page 27: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 27/172

Sistemas com equacoes lineares direitas e esquerdas

O sistema X  = aY  + λ

Y  = Xb

tem uma equacao linear direita e outra linear esquerda. Substituindo Y  porXb na primeira equacao obtem-se a equacao para X  apresentada no paragrafoanterior. Reconhece-se entao que a solucao dos sistem e

X  = {anbn : n ≥ 0},

Y  = {anbn+1 : n ≥ 0}.

Tambem neste caso nao se obtem como solucoes linguagens regulares: epreciso que todas as equacoes sejam do mesmo tipo — lineares direitas oulineares esquerdas — para se poder garantir que as solu coes sao regulares.Que dizer entao das equacoes nao lineares?

Equacoes nao lineares

A equacao X  = XX + aXb + λ e nao linear porque um dos termos tem duasocorrencias de X . A solucao — encarando o sımbolo ‘a’ como o parentesisa abrir ‘(’ e o sımbolo ‘b’ como o parentesis a fechar ‘)’ — e a chamadalinguagem das expressoes de parenteses bem formadas. As expressoes deprenteses bem formadas sao as que se obtem por exemplo a partir das ex-pressoes aritmeticas apagando todos os sımbolos excepto os parenteses. Umexemplo e (()())(). Esta linguagem tambem nao e regular.

Consideremos no entanto o sistema

I  = SN  (Inteiros com ou sem sinal)S  = ⊕ + + λ (Sinal ou sua ausencia)

N  = A + AN  (Inteiros sem sinal)A = 0 + · · · + 9 (Algarismos)

em que a primeira e a terceira equacoes nao sao lineares. A solucao para I  e

a linguagem dos numeros inteiros sem sinal, onde se representaram os sinaispor ⊕ e para nao criar confusoes com a soma de expressoes regulares.

Entre as incognitas existe uma dependencia que se traduz no seguinte

26

Page 28: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 28/172

diagrama (nao se considera a auto-dependencia de N ):

     ?   ? Ð Ð Ð Ð Ð Ð Ð

 _ _ c c c c c c c c

A

  O O

Resolvendo o sistema seguindo a ordem das dependencias, chega-se asolucao:

A = 0 + · · · + 9S  = ⊕ + + λ

N  = (0 + · · · + 9) + (0 + · · · + 9)N  = (0 + · · · + 9)∗(0 + · · · + 9)I  = (⊕ + + λ)(0 + · · · + 9)∗(0 + · · · + 9).

A conclusao que se tira deste exemplo e que ha sistemas nao linearesque tem solucoes regulares. E facil ver porque. Quando se vai resolver umaequacao de uma incognita, ja se resolveram as equacoes de todas as incognitasde que ela depende (com a excepcao da propria). Tambem ja se substituıramessas incognitas pelas suas solucoes. Assim, a equacao em questao ficou lineara direita e pode ser resolvida pelo metodo habitual.

Como se caracterizam tais sistemas? Vamos chamar-lhes “quase linearesdireitos” porque e possıvel transforma-los em sistemas lineares direitos quetem a mesma solucao para a incognita principal (a da primeira equacao dosistema).

2.8 Sistemas quase lineares direitos

No sistema

I  = SN 

S  = ⊕ + + λ

N  = A + AN A = 0 + · · · + 9

as nao linearidades estao concentradas nos termos SN  e AN . Para eliminarestas nao linearidades vamos substituı-las por novas incognitas, que teraoelas proprias de ser definidas por meio de equacoes. Para melhor se compre-ender o processo, em vez de escolher letras como X  e Y  para representar asnovas incognitas vamos escolher representacoes mais sugestivas, como SN 

27

Page 29: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 29/172

e AN . Vamos mesmo, por uma questao de melhor legibilidade, represen-

tar estas incognitas aqui por SN e AN . Noutros exemplos adoptaremos omesmo procedimento.

Como se caracteriza a equacao que define SN ? A resposta e simples:toma-se a equacao de S , multiplicam-se ambos os membros por N  a direitae substitui-se SN  por SN . Obtem-se a equacao

SN = (⊕ + + λ)N.

Em geral e preciso eliminar ainda as nao linearidades que se introduzem nomembro direito, o que neste caso nao acontece. Procedia-se de forma analogapara AN e chegava-se ao sistema linear direito

I  = SN

SN = (⊕ + + λ)N 

N  = A + ANA = 0 + 1 + 2

AN = (0 + 1 + 2)N 

Havendo uma incognita “principal”, como e I  neste caso, podem omitir-se asequacoes que deixam de ser necessarias, como acontece com a equacao de S .

Definicao 2.23 [Sistemas quase lineares direitos] Seja dado um alfabetoT 

e um sistema de equacoes da forma

X  = · · · + A0X 1A1 . . . X  nAn + · · · ,

cujo membro direito e uma soma de termos como o que esta representado,em que cada A j e uma expressao regular sobre T  e cada X i uma incognita.Sejam X  e Y  incognitas distintas do sistema.

• X  depende  de Y  se Y  ocorrer no membro direito da equacao para X .

• X  domina  Y  se X  depender de Y  e se nao existir uma cadeia de de-

pendencias de Y  ate X .

• O sistema diz-se quase linear direito se para toda a incognita X , tra-tando as incognitas por ela dominadas como constantes, a equacao paraX  e linear direita.

Na definicao de sistema quase linear direito, a razao pela qual e possıveltratar as incognitas dominadas como constantes e que se Y  for dominada

28

Page 30: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 30/172

por X , pode-se resolver a equacao de Y  independentemente de X  e depois

substituir Y  pela sua solucao (a tal constante) na equacao de X .Vejamos o exemplo apresentado anteriormente. Como A e dominada por

N , encarando-a como constante na equacao N  = A + AN , esta fica lineardireita. O mesmo se diz da equacao I  = SN , que alias fica com o membrodireito constante. As duas restantes equacoes nao tem termos nao lineares epor isso nao levantam problemas.

Definicao 2.24 [Linearizacao] E dado um sistema de equacoes quase li-near direito. A linearizac˜ ao do sistema consiste na realizacao das seguintesoperacoes:

1. Escolhe-se uma incognita X  cuja equacao

X  = · · · + A0X 1A1 . . . X  nAn + · · ·

nao seja linear direita.

2. Substitui-se a equacao de X  pelas seguintes equacoes:

(a) A equacao

X  = · · · + A0X 1A1 . . . X  nAn + · · ·

onde X 1A1 . . . X  nAn e uma nova incognita criada para cadatermo nao linear na equacao de X .

(b) Uma equacao para cada nova incognita X 1A1 . . . X  nAn, que seobtem multiplicando ambos os membros da equacao de X 1 a di-reita por A1 . . . X  nAn e substituindo-se todas as ocorrencias deX 1A1 . . . X  nAn por X 1A1 . . . X  nAn.

3. Repetem-se os passos anteriores enquanto existirem termos nao linearesdireitos.

Nos exemplos, X 1A1 . . . X  nAn escreve-se X 1A1 . . . X  nAn , para maior

legibilidade.

Observacao 2.25 Na definic˜ ao de linearizac˜ ao n˜ ao se estipula nenhuma ordem para a escolha da equac˜ ao a linearizar em cada passo. Por uma quest˜ ao de metodo, nos exemplos ser´ a sempre seleccionada uma equac˜ ao cuja inc´ ognita s´ o seja dominada por inc´ ognitas que tem equac˜ oes lineares direitas (ou j´ a linearizadas). 2

29

Page 31: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 31/172

Exemplo 2.26 O seguinte sistema de equacoes define numeros reais sem

sinal:

R = N  + N P  (Reais sem sinal)N  = I  + I.I  (Numeros sem parte expoente)I  = d + dI  (Inteiros sem sinal)P  = eE  (Parte expoente)E  = (− + λ)I  (Expoente)

Por simplicidade usou-se apenas a letra ‘d’ em vez da expressao 0+1 + · · · +9para representar os dıgitos e omitiu-se o sinal ‘+’ do expoente. A base daexponenciacao esta representada por ‘e’. Por exemplo, a palavra d.dde − 2representa o numero d,dd × 10−2.

A ordem de dependencias entre as incognitas esta indicada no diagramaseguinte:

R

     >   > ~ ~ ~ ~ ~ ~ ~

 _ _ d d d d d d d

  O O

 W W H H H H H H H H H H H

 H H H H

     ?   ? ~ ~ ~ ~ ~ ~ ~ ~

Tratando N  e P  como constantes na primeira equacao e I  como constantena segunda, ve-se que o sistema e quase linear direito.

Para linearizar o sistema observamos que R e N  sao as incognitas comequacoes nao lineares. Como R nao e dominado por N , a sua equacao e aprimeira a ser linearizada, sendo substituıda pelas equacoes

R = N  + NP

NP = IP  + I.IP 

No novo sistema, as incognitas com equacoes nao lineares sao N  e NP . Como

nenhuma delas e dominada pela outra, qualquer uma pode ser seleccionada.Escolhendo N , a sua equacao e substituıda por

N  = I  + I.I

I.I = d.I  + d I.I

Ambas as equacoes sao lineares direitas, pelo que nos resta linearizar a

30

Page 32: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 32/172

equacao de NP . Obtem-se

NP = IP + I.IP

IP = dP  + d IP

I.IP = d. IP + d I.IP

Todas as equacoes sao lineares direitas, pelo que o processo de linearizacaopara aqui. Reunindo todas as equacoes, o sistema linearizado e o seguinte:

R = N  + NP

N  = I  + I.I

I.I = d.I  + d I.I

NP = IP + I.IP

IP = dP  + d IP

I.IP = d. IP + d I.IP

I  = d + dI 

P  = eE 

E  = (− + λ)I 

Bem entendido, uma vez terminado oprocesso poderiam renomear-se avontade as incognitas. Por exemplo, fazendo as renomeacoes indicadas natabela abaixo,

NP I.I IP I.IP

W X Y Z  

31

Page 33: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 33/172

o sistema ficaria

R = N  + W N  = I  + X 

X  = d.I  + dX 

W  = Y  + Z 

Y  = dP  + dY 

Z  = d.Y  + dZ 

I  = d + dI 

P  = eE 

E  = (− + λ)I 

Ha duas questoes que o processo de linearizacao levanta. A primeira, ea de saber se as incognitas de um sistema conservam as mesmas solucoesquando se lineariza uma equacao nao linear. A segunda, e a de saber se oprocesso tem fim. Ambas as questoes tem resposta afirmativa.

Proposicao 2.27 O processo de linearizac˜ ao de um sistema quase linear direito termina e o sistema final preserva as soluc˜ oes do sistema original.

Dem. Comecemos por supor que o processo termina. Para concluir que osistema final preserva as solucoes do sistema original, basta verificar que issose passa na passagem de cada sistema ao pr oximo. Essa passagem consisteem trocar uma equacao

X  = · · · + A0X 1A1 . . . X  nAn + · · ·

pelas equacoes

X  = · · · + A0X 1A1 . . . X  nAn + · · ·

X 1A1 . . . X  nAn = · · ·...

Por construcao, a equacao de X 1A1 . . . X  nAn parte da multiplicacao a di-reita de ambos os membros da equacao de X 1 por A1 . . . X  nAn. Isto permiteconcluir que o valor que se calcula substituindo as solucoes de X 1, . . . , X  nno anterior sistema em X 1A1 . . . X  nAn e uma solucao de X 1A1 . . . X  nAn no

32

Page 34: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 34/172

novo sistema. Por conseguinte, a solucao de X  no anterior sistema e tambem

solucao no novo sistema.Vejamos agora a questao da terminacao. Suponhamos que o sistema tem

k incognitas Z 1, . . . , Z  k, ordenadas de forma a que nenhuma incognita domineoutra incognita que tenha sido listada antes dela. (No exemplo anterior dosnumeros reais, duas ordenacoes possıveis sao R , N , P , E , I   e R , P , E , N , I  .)Vamos associar a cada sistema obtido durante o processo de lineariza caoum k-tuplo de numeros naturais, definido do seguinte modo. Chamemos“equacao de base” X  a equacao de X  e a equacao de qualquer incognitaX · · · em que X  ocorra a cabeca. Dado um sistema intermedio do processode linearizacao, associamos-lhe o k-tuplo de numeros naturais cujo j -esimoelemento (1 ≤ j ≤ k) e o numero de equacoes nao lineares de base Z  j. Aobservacao crucial e que quando se lineariza uma equacao de base Z  j, estapassa a ser linear, logo o j-esimo elemento do tuplo associado ao sistemadiminui de uma unidade. Por outro lado, a introducao de equacoes para asnovas incognitas so pode aumentar elementos do tuplo de posicao superiora j, visto que Z  j domina as incognitas distintas de si propria que occorremna parte direita da sua equacao. Assim, se ordenarmos os tuplos pela ordemlexicografica, o tuplo do novo sistema e estritamente inferior ao tuplo dosistema de partida. O ponto seguinte do raciocınio e reconhecer que nao podeexistir uma sequencia infinita t1, t2, t3, . . . de k-tuplos de numeros naturaisem que cada tuplo a seguir ao primeiro e estritamente inferior ao anterior.

Com efeito, se tal sequencia infinita existisse, na passagem de um tuplo parao seguinte uma das posicoes diminuiria em pelo menos uma unidade. Eminfinitas passagens, pelo menos uma posicao diminuiria um numero infinitode vezes. Mas isso e impossıvel (porque?). Conclui-se que nao pode haveruma sequencia infinita de sistemas, logo o processo de linearizacao termina.

33

Page 35: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 35/172

Capıtulo 3

Automatos finitos

Os automatos finitos sao o primeiro modelo computacional de definicao delinguagens que iremos encontrar (e tambem o mais simples, como seria deesperar). As linguagens sao definidas pelo chamado mecanismo de “reco-nhecimento”, que pode ser encarado como um teste aplicado a cada palavraindividualmente. A linguagem reconhecida pelo automato finito e constituıdapor todas as palavras que passem o teste. O teste e aplicado de forma incre-mental, percorrendo os sımbolos da palavra um a um a partir do seu inıcio, ea decisao final so surge apos o percurso completo da palavra. E este caracterincremental do teste que confere aos automatos finitos a sua qualidade com-putacional. Neste capıtulo apresentamos os resultados mais basicos sobreautomatos finitos, incluindo o de que as linguagens por eles reconhecidas saoprecisamente as linguagens regulares.

3.1 Linguagens racionais e automatos finitos

Uma das formas possıveis de introduzir os automatos finitos e atraves daschamadas linguagens racionais, topico que sera aqui apresentado de maneiraalgo informal.

Recordemos a definicao de “arvore de uma linguagem” L sobre um alfa-beto T , apresentada no primeiro capıtulo:

• Partimos da arvore de T ∗, que e uma arvore em que cada no tem umfilho para cada sımbolo de T , sendo o arco que liga o no ao seu filhoetiquetado pelo sımbolo em questao.

• Na arvore de T ∗ distinguem-se dois tipos de no: os nos “principais”,representados graficamente por e que sao os nos onde terminam pala-vras da linguagem L; e os nos “secundarios”, representados por •, onde

34

Page 36: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 36/172

terminam palavras que nao pertencem a L.

• Eliminam-se as sub-arvores que contem apenas nos secundarios. Aarvore resultante e a arvore de L.

Definicao 3.1 (Linguagem racional) Uma linguagem diz-se  racional se a sua ´ arvore contiver um n´ umero finito de sub-´ arvores distintas.

Exemplo 3.2 Consideremos o alfabeto T  = {a, b} e a linguagem represen-tada pela expressao regular a∗b∗. A arvore de T ∗ com a indicacao dos nosprincipais e secundarios com respeito a a∗b∗ e a seguinte:

 '&%$  !"# •

a

 j j j j j j

 j j j j j j j j j j j

 j j

b

                 

 '&%$  !"# •a

 u u u u

 u u u u

 u u u

b

 q q q q q q q q q q '&%$  !"# •a

 y y y y

 y y y y

 y yb

 q q q q q q q q q q

 '&%$  !"# •a

 × × × ×

 × × ×

b

 U U U U U U U '&%$  !"# •

a

    

   

b

 U U U U U U U •a

    

   

b

 I I I I I I I '&%$  !"# •a

    

   

b

 U U U U U U U

 '&%$  !"# •...

 '&%$  !"# •...

•...

 '&%$  !"# •...

•...

•...

•...

 '&%$  !"# •...

Eliminando as sub-arvores que so tem nos secundarios, obtem-se a arvore

 '&%$  !"# •a

 { { { {

 { { { {

 {b

 g g g g g g g g g 1 o o 

 s s f f f f f f f f f f f f f f f f

 '&%$  !"# •a

 { { { {

 { { { {

 {b

 g g g g g g g g g '&%$  !"# •b

 g g g g g g g g g 2 o o 

 } } { {

 { {

 {

   h h h h h h h h h h h h

 '&%$  !"# •a

 { { { {

 { { { {

 {b

 g g g g g g g g g '&%$  !"# •b

 g g g g g g g g g '&%$  !"# •b

 g g g g g g g g g

 '&%$  !"# •...

 '&%$  !"# •...

 '&%$  !"# •...

 '&%$  !"# •...

(Todos os nos desta arvore sao principais, mas nao e forcoso que assim seja,como os exemplos seguintes mostram.) Esta arvore tem apenas duas sub-arvores distintas. Os nos sobre o caminho descendente a esquerda dao origema mesma sub-arvore (designada na figura por sub-arvore 1) e o mesmo sucedecom os restantes nos (sub-arvore 2).

Este facto permite obter uma representacao compacta e finita da arvoreda linguagem. Temos apenas dois nos, 1 e 2, que representam as duas sub-arvores distintas. A partir da figura anterior ve-se que se vai sempre da

35

Page 37: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 37/172

sub-arvore 1 para si propria por um arco etiquetado por a, de 1 para 2 por

um arco etiquetado por b, e de 2 para 2 por um arco etiquetado por b. Estainformacao esta incluıda na figura seguinte, onde se adicionou uma seta doexterior para o no 1 para indicar que ele corresponde a raiz da arvore.

   G   G ?>=<  89:;  7654  0123 1

a  

b    G   G ?>=<  89:;  7654  0123 2

b  

Este diagrama corresponde a um automato finito, como se vera (a sua de-finicao formal sera apresentada na seccao seguinte). Note-se que conhecendoo diagrama se pode reconstituir a arvore da linguagem duplicando sucessiva-mente nos para eliminar ciclos e multiplos arcos incidentes num mesmo no.

Deste modo se conclui que as arvores racionais e os automatos finitos caracte-rizam a mesma classe de linguagens, a que chamamos racionais. Mostraremosadiante que elas sao precisamente as linguagens regulares.

No automato finito anterior, duplicando uma vez o no 1 para eliminaruma passagem pelo ciclo a, duplicando uma vez o no 2 para cada instanciater um so arco b incidente alem do ciclo b, e repetindo estas operacoes umnumero infinito de vezes, obtinha-se sucessivamente:

 ?>=<  89:;  7654  0123 1

a

 Ó Ó Ø Ø Ø Ø

ʯʯʯʯ

b

 '   ' U U U U U U U U

 ?>=<  89:;  7654  0123 1

a

   B   B b    G   G ?>=<  89:;  7654  0123 2

b

  

 ?>=<  89:;  7654  0123 1

a

 Ó Ó Ø Ø Ø Ø

ʯʯʯʯ

b

 '   ' U U U U U U U U

 ?>=<  89:;  7654  0123 1

a

   B   B

b

 '   ' U U U U U U U U  ?>=<  89:;  7654  0123 2

b

  

 ?>=<  89:;  7654  0123 2

b

  

 ?>=<  89:;  7654  0123 1

a

 Ó Ó Ø Ø Ø Ø

ʯʯʯʯ

b

 '   ' U U U U U U U U

 ?>=<  89:;  7654  0123 1

a

 Ó Ó Ø Ø Ø Ø

ʯʯʯʯ

b

 '   ' U U U U U U U U  ?>=<  89:;  7654  0123 2

b

  

 ?>=<  89:;  7654  0123 1

...b

 '   ' U U U U U U U U ?>=<  89:;  7654  0123 2

b

  

 ?>=<  89:;  7654  0123 2

b

  

Duplicando os nos 2 ate eliminar completamente os ciclos b chegava-se aarvore da linguagem a∗b∗ de que se partiu. 2

Exemplo 3.3 Consideremos agora a linguagem de repeat S  until B. Comas convencoes que temos vindo a utilizar, ela pode ser descrita pela expressao

36

Page 38: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 38/172

regular s(bs)∗b. Eis a arvore desta linguagem:

s

1 o o 

•b

    

    

  b

 e e e e e e e e e e 2 o o 

s

 '&%$  !"# • 3 o o 

•b

 Ñ Ñ Ñ Ñ Ñ

 Ñ Ñ Ñ Ñ

b

 d d d d d d d d d

•...

 '&%$  !"# •

Como se ve, esta arvore tem apenas tres sub-arvores distintas. O automatofinito associado e:

   G   G ?>=<  89:; 1

s   C   C ?>=<  89:; 2

b

 k kb    G   G ?>=<  89:;  7654  0123 3

2

Exemplo 3.4 Vejamos agora um exemplo de uma linguagem nao racional.

37

Page 39: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 39/172

A arvore da linguagem {anbn | n ≥ 0} e:

 '&%$  !"# •a

 z z u u u u u

 u u u

•a

 w w w w

 w w w w b

 s s s s s s s s

•a

 x x x x

 x x x x b

 p p p p p p p p '&%$  !"# • 1 o o 

•a

 x x x x

 x x x x b

 p p p p p p p p •b

 r r r r r r r r 2 o o 

•a

 x x x x

 x x x x b

 p p p p p p p p •b

 p p p p p p p p '&%$  !"# • 3 v v      f j

... b  p p p p p p p p •

b  p p p p p p p p •

b  r r r r r r r r 4             f  h

•b

 q q q q q q q q •b

 q q q q q q q q '&%$  !"# • 5 u u              i j

•b

 q q q q q q q q •b

 s s s s s s s s

•b

 q q q q q q q q '&%$  !"# •

•b

 s s s s s s s s

 '&%$  !"# •

As sub-arvores (cujas raızes estao assinaladas com ) 1, 2, 3, 4, 5, . . . sao cla-

ramente distintas entre si, diferindo no comprimento do caminho mais longoque tem (isto e, na sua altura). Como estas arvores sao em numero infi-nito, esta provado que a arvore da linguagem nao tem um numero finito desub-arvores distintas. Logo a linguagem nao e racional. 2

Podemos agora ser um pouco mais precisos sobre a forma como umautomato finito reconhece uma palavra percorrendo-a sımbolo a sımbolo.E util pensar num automato como um dispositivo da forma

Entrada

x ∈ T 

∗   G   G Controlo G   GSaıda

S/N

que le a entrada uma palavra x sımbolo a sımbolo, processa cada sımbololido na sua unidade de controlo e emite a saıda a resposta S (im) ou N (ao).Se a resposta for S  apos a leitura do ultimo sımbolo, entao a palavra e “re-conhecida” (ou “aceite”, como tambem se diz). Caso contrario a palavra naoe reconhecida, tambem se dizendo que e “rejeitada”. A “linguagem reconhe-cida” pelo automato e o conjunto de todas as palavras que sao reconhecidas.

38

Page 40: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 40/172

O funcionamento da unidade de controlo e especificado pelo diagrama

do automato. Passamos a designar os nos como “estados” e os arcos como“transicoes”. Os estados com um cırculo duplo chamam-se de “aceitacao”.Antes de ler qualquer sımbolo, o automato esta posicionado no seu “estadoinicial” (aquele que tem uma seta incidente do exterior). Quando le umsımbolo, efectua a transicao (isto e, percorre o arco) correspondente e passaao estado seguinte. Em cada estado e emitido S  se o estado for de aceitacaoe N  caso contrario.

Outra maneira de ver o funcionamento do automato e como um percursono seu grafo de estados e transicoes. Por exemplo, no automato da linguagemdas execucoes de repeat S  until B, a palavra sbsbsb origina o seguintepercurso:

 ?>=<  89:; 1s    G   G ?>=<  89:; 2

b    G   G ?>=<  89:; 1s    G   G ?>=<  89:; 2

b    G   G ?>=<  89:; 1s    G   G ?>=<  89:; 2

b    G   G ?>=<  89:;  7654  0123 3

Em todos os estados e emitido N  a saıda excepto no ultimo, em que e emitidoS . A palavra e aceite.

E facil ver que os percursos na arvore da linguagem que terminam noque chamamos um no principal correspondem precisamente aos precursosno correspondente automato finito que terminam num estado de aceitacao.Tem-se assim de forma natural o seguinte resultado:

Proposicao 3.5 As linguagens reconhecidas pelos aut´ omatos finitos s˜ ao pre-cisamente as linguagens racionais.

Quando uma palavra nao e aceite, dois casos podem acontecer. O pri-meiro caso e ilustrado pela plavra sbs. Tem-se um percurso que termina numestado que nao e de aceitacao. O outro caso e o da palavra ssb, cujo percursonao se chega a concluir por nao haver nenhuma transicao para o segundo s.

O criterio de nao aceitacao de uma palavra pode ser uniformizado segarantirmos que todo o sımbolo lido gera uma transicao. Para tal procede-sedo seguinte modo:

• Acrescenta-se um novo estado ao automato, que nao e de aceitacao.

• Se um estado nao tiver uma transicao com um certo sımbolo de entrada,acrescenta-se uma transicao para o novo estado com esse sımbolo.

• Para cada sımbolo de entrada, acrescenta-se uma transicao do novoestado para si proprio.

39

Page 41: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 41/172

No caso do automato que temos vindo a considerar, o automato comple-

tado fica:   G   G ?>=<  89:; 1

b,b

    1 1 1 1 1

s   D   D ?>=<  89:; 2

b

 l l

s

 u u

 z w

 u 

  n

 l

b

    ?>=<  89:; 4

s,b,b

   Q   Q

  c  ?>=<  89:;  7654  0123 3

s,b,b

 l l       

O novo estado e o 4, e representamos a traco interrompido as novas transicoes.Adoptamos a convencao usual de representar varias transicoes entre um

mesmo par de estados pelo mesmo arco mas com as v arias etiquetas dastransicoes em questao.

No automato completado, nenhuma palavra da origem a um percursoincompleto. A palavra ssb vista anteriormente tem o percurso Se uma palavraconduz ao novo estado, nao e possıvel tornar a sair dele, pelo que a palavranao e aceite. Tecnicamente, um tal estado, de onde nao se pode tornar asair, chama-se em teoria dos grafos um poco. Por vezes chamamos-lhe um“estado de erro”, visto que em linguagens de programacao, quando se entranum estado semelhante, isso corresponde a um erro sintactico no programa(palavra) que se esta a tentar reconhecer. Mas note-se que nao ha nada depreciso nesta terminologia.

Nesta forma “completa”, as transicoes do automato podem ser represen-tadas por uma tabela. Para o exemplo anterior, a tabela e a seguinte:

Alfabeto T 

Estados Q

δ s b b

1 2 4 4

2 4 3 13 4 4 44 4 4 4

A tabela e a representacao de uma funcao

δ  : Q × T  → Q,

dita de “transicao de estado”, em que Q e o conjunto dos estados e T  e oalfabeto de entrada. Dados q  ∈ Q e a ∈ T , tem-se

δ (q, a) ∈ Q.

40

Page 42: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 42/172

O estado δ (q, a) e aquele para o qual se transita a partir do estado q  quando

se le o sımbolo de entrada a. Por exemplo,δ (1, s) = 2,δ (2, b) = 1,δ (4, b) = 4.

Uma coisa em que nao pode deixar de se reparar e que no automatocompletado a maior parte das transicoes sao para o estado de erro. Natabela da funcao de transicao destacamos as tres transicoes, num total dedoze, que nao conduzem ao estado de erro, as quais mal se deixam perceberno conjunto das outras transicoes. Por uma questao de clareza, nos exemplosomitiremos quase sempre este(s) estado(s) de erro. Imaginamos que ele esta

la, mas nao o representamos porque isso iria dificultar a nossa compreensao dofuncionamento do automato. Mas de um ponto de vista teorico e muito maiscomodo admitir que todos os estados tem transicoes para todos os sımbolosdo alfabeto de entrada, isto e, que δ (q, a) esta sempre definido, e portantoisso aparece reflectido na definicao de automato finito.

3.2 Automato finito

Definicao 3.6 (Automato finito) Um  automato finito (AF) e um quıntuplo

A = (T ,Q ,q  I ,δ ,F )constituıdo pelos seguintes elementos:

• um  alfabeto de entrada T ;

• um conjunto finito Q de  estados;

• um  estado inicial q I ;

• uma func˜ ao δ  : Q × T  → Q de  transicao de estado;

• um conjunto F  ⊆ Q de  estados de aceitacao.

Observacao 3.7 Pode definir-se uma func˜ ao de saıda  χ : Q → {S, N } por

χ(q ) =

S  se q  ∈ F,

N  se q  ∈ F,

que aplica cada estado em N  se o estado nao for de aceitacao e em S  se o es-tado for de aceitacao. Na pratica nao teremos necessidade de usar esta funcaoporque lidaremos directamente com o conjunto F  dos estados de aceitacao.2

41

Page 43: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 43/172

A funcao δ  fornece o estado seguinte, conhecido o estado corrente e o

sımbolo de entrada lido. Se forem lidos varios sımbolos de entrada emsequencia, a funcao δ  permite calcular os sucessivos estado por que passao automato. Por exemplo, consideremos o automato visto anteriormente,cuja tabela que define a funcao de transicao de estado se repete aqui:

δ s b b

1 2 4 42 4 3 13 4 4 44 4 4 4

Partindo do estado 1 e lendo a palavra sbsb (sımbolo a sımbolo) o automatopassa pela sequencia de estados

1,2 = δ (1, s),1 = δ (2, b)2 = δ (1, s),3 = δ (2, b).

Para maior facilidade de expressao, e util dispor de uma funcao δ ∗ que indiquequal o estado final a que se chega depois de ter lido todos os sımbolos de uma

palavra. Por exemplo,δ ∗(1, sbsb) = 3.

E claro que, depois de efectuada a primeira transi cao de 1 para 2, lendo oresto da palavra a partir do estado 2 tambem se atinge o estado 3, pelo quese tem

δ ∗(2,bsb) = 3.

Pode-se escreverδ ∗(1, sbsb) = δ ∗(δ (1, s),bsb).

Em geral, nao e difıcil convencermo-nos que

δ ∗(q,ax) = δ ∗(δ (q, a), x)

para todo o estado q , sımbolo a e palavra x. Esta igualdade corresponde aideia intuitiva de que o estado a que se chega com ax pode ser determinadocalculando o estado para que se transita com a e vendo a partir desse estadoqual o estado que se atinge com x.

42

Page 44: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 44/172

Por outro lado, se por exemplo no estado 3 nao for lido nenhum sımbolo,

o automato permanecera no estado 3, isto e, δ ∗

(3, λ) = 3. Em geral,

δ ∗(q, λ) = q.

Estas consideracoes permitem dar uma definicao mais precisa da funcao δ ∗.

Definicao 3.8 (Extensao de δ ) A func˜ ao δ ∗ : Q × T ∗ → Q define-se doseguinte modo, para todo o q  ∈ Q, a ∈ T  e  x ∈ T ∗:

• δ ∗(q, λ) = q ;

• δ ∗(q,ax) = δ ∗(δ (q, a), x).

Observacao 3.9 Quando a palavra x se reduz a um simples sımbolo a doalfabeto de entrada, tem-se

δ ∗(q, a) = δ ∗(q,aλ) = δ ∗(δ (q, a), λ) = δ (q, a).

E por esta razao que se diz que δ ∗ e uma extensao de δ : para os valores emque δ  esta definida, δ ∗ coincide com ela. 2

Podemos agora calcular mais formalmente δ ∗(1, sbsb):

δ ∗(1, sbsb) = δ ∗(δ (1, s),bsb) = δ ∗(2,bsb)

= δ ∗

(δ (2, b), sb) = δ ∗

(1, sb)= δ ∗(δ (1, s), b) = δ ∗(2, b)= δ (2, b) = 3,

onde se usou o facto estabelecido na observacao anterior de que δ ∗(q, a) =δ (q, a) quando a ∈ T .

Podemos agora caracterizar a linguagem reconhecida por um automatofinito.

Definicao 3.10 (Linguagem reconhecida por um AF) A Linguagem  re-conhecida ou  aceite por um aut´ omato finito A e 

L(A) = {x ∈ T ∗ : δ ∗(q I , x) ∈ F }.

Em termos do grafo do automato, L(A) e o conjunto das plavras deentrada cujo percurso a partir do estado inicial termina num estado deaceitacao. No automato que tem vindo a ser apresentado em exemplo, a pa-lavra sbsb pertence a linguagem por ele reconhecida, por conduzir do estadoinicial 1 ao estado de aceitacao 3. Mas ja a palavra ssb nao e reconhecida,visto que termina no estado 4, que nao e de aceitacao.

43

Page 45: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 45/172

3.3 Nao-determinismo

De acordo com a definicao de automato finito, ele e um sistema determinista,no sentido em que o estado seguinte fica completamente determinado peloestado corrente e pelo sımbolo de entrada lido. Por vezes e util afrouxareste requisito e permitir que a proxima transicao nao fique completamentedeterminada, podendo ser uma de entre um conjunto de v arias transicoespossıveis. Cada transicao efectiva resulta de uma escolha aleatoria de entreas varias possibilidades, pelo que cada comportamento e apenas um entre osque se obteriam fazendo todas as escolhas possıveis em cada passo.

Precisemos agora em que e que consiste o nao-determinismo nos automatosfinitos. As duas fontes de nao-determinismo que iremos considerar estao ilus-

tradas na figura seguinte:

 /.-,  ()*+ /.-,  ()*+  /.-,  ()*+ 

a   W  W        

a   7   7 t t t t t t t t /.-,  ()*+ λ

   W  W        

a   7   7 t t t t t t t t

 /.-,  ()*+ /.-,  ()*+ No primeiro caso ha duas ou mais transicoes a partir do mesmo estado parao mesmo sımbolo de entrada, o que significa que nao ha um unico estadoseguinte mas um conjunto de estados seguintes possıveis. No segundo caso

ha uma transicao etiquetada pela palavra vazia λ. Na presenca de um certosımbolo de entrada, o automato tem a opcao entre ler o sımbolo e seguir acorrespondente transicao, ou entao efectuar primeiro a transicao com λ e lerdepois o sımbolo de entrada. Transicoes etiquetadas com λ sao por vezes cha-madas “internas” por nao dependerem de sımbolos de entrada provenientesdo “exterior”.

Exemplo 3.11 Antes de definir automato finito nao-determinista, vejamosum exemplo. O diagrama

   G   G ?>=<  89:; 1d    G   G ?>=<  89:; 2

.    G   G

λ

 e e

λ

  4   4 ?>=<  89:; 3d    G   G ?>=<  89:; 4

E     G   G

λ

 e e

λ

  7   7 ?>=<  89:; 5+,−   G   G

λ

   W  W ?>=<  89:; 6

d    G   G ?>=<  89:;  7654  0123 7

λ

 e e

representa um automato finito nao-determinista sobre o alfabeto {d,.,E, +, −},onde por simplicidade se representaram os dıgitos de 0 a 9 uniformemente pord. Por analogia com os automatos deterministas, as palavras reconhecidaspor automatos nao-deterministas sao as que etiquetam os caminhos que levam

44

Page 46: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 46/172

do estado inicial a um estado de aceitacao (os λ’s ao longo do caminho sao,

bem entendido, omitidos por representarem a palavra vazia). Neste exemploa linguagem reconhecida e a dos numeros sem sinal. Faz pois sentido darsignificado a estes diagramas independentemente de qualquer interpretacaocomputacional. Computacionalmente podemos imaginar que quando ha maisde uma transicao possıvel, e seleccionada uma arbitrariamente. 2

Definicao 3.12 (Automato finito nao-determinista) Um  automato fi-nito nao-determinista (AFND) e um quıntuplo

A = (T ,Q ,q  I ,δ ,F )

em que T ,Q ,q  I , F  tem o mesmo significado que para aut´ omatos deterministas 

e  δ  e uma func˜ aoδ  : Q × (T  ∪ {λ}) → P (Q).

Recorde-se que P (Q) e o conjunto de todos os subconjuntos de Q. Paraq  ∈ Q e a ∈ T  ∪ {λ}, tem-se δ (q, a) ∈ P (Q), isto e, δ (q, a) ⊆ Q. Assim, aoestipular que δ (q, a) e um conjunto de estados, esta-se a captar a ideia deque podem existir varios estados (possivelmente nenhum) acessıveis a partirde q  por uma transicao etiquetada por a.

Para seguir os percursos no automato determinados pela leitura de umapalavra sımbolo a sımbolo, podıamos definir uma extensao δ ∗ de δ  como sefez para o caso determinista, mas e mais comodo neste caso adoptar uma

solucao diferente.Definicao 3.13 (Transicao) Dados q, q  ∈ Q e a ∈ T ∪{λ}, uma  transicaoe um triplo (q,a,q  ), que geralmente se escreve 

q a

−→ q ,

em que  q  ∈ δ (q, a).

Se tivermos duas transicoes consecutivas, q a

−→ q b

−→ q , e se nao houvernecessidade de conhecer o estado intermedio q , podemos escrever apenas

q a

−→b

−→ q  omitindo o q . Esta convencao aplica-se a um numero qualquer

de transicoes.Definicao 3.14 (Transicao repetida) Dados estados  q, q  ∈ Q e uma pa-lavra  x ∈ T ∗, a relac˜ ao

q x

=⇒ q 

significa que existe um percurso de  q  para  q  etiquetado por  x:

x=a1a2···an   a1−→

a2−→ · · ·an−→ q .

45

Page 47: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 47/172

Exemplo 3.15 Para o exemplo anterior tem-se:

1d

=⇒ 2 porque 1d

−→ 2,

1d

=⇒ 6 porque 1d

−→ 2λ

−→ 4λ

−→ 7λ

−→ 6,

2d

=⇒ 4 porque 2λ

−→ 1d

−→ 2λ

−→ 4

ou 2λ

−→ 4λ

−→ 3d

−→ 4,

1dd

=⇒ 4 porque 1d

−→ 2d

−→ 4.

2

Observacao 3.16 Na definicao anterior, o caso n = 0 corresponde ao per-

curso vazio de q  para q , o qual se convenciona que esta etiquetado por λ.Assim, tem-se q 

λ=⇒ q  para todo o q  ∈ Q. Tambem e facil ver que q 

a−→ q 

implica q a

=⇒ q  (caso n = 1) e que se q x

=⇒ q  e q x

=⇒ q  entao q xx

=⇒ q .Alias, a relacao =⇒ podia ter sido definida a partir de −→ por inducao no

comprimento de x: (i) q λ

=⇒ q  para todo o q ; (ii) se q a

−→ q  e q x

=⇒ q ,entao q 

ax=⇒ q . 2

Estamos em condicoes de caracterizar a linguagem reconhecida por umAFND.

Definicao 3.17 (Linguagem reconhecida por um AFND) A linguagem reconhecida ou  aceite por um aut´ omato finito n˜ ao-determinista A e 

L(A) = {x ∈ T ∗ : (∃ q  ∈ F ) q I x

=⇒ q }.

Informalmente, L(A) e o conjunto de todas as palavras que levam do es-tado inicial a um estado de aceitacao. E importante notar que podem existirvarios percursos associados a palavra x — alguns deles talvez incompletos,por nao ser possıvel concluir a leitura da palavra — mas basta que um sotermine num estado de aceitacao para que a palavra seja reconhecida.

3.4 Relacoes entre AF e AFND

Como se comparam os AFND com os AF (deterministas)? E facil ver queos AFND sao uma generalizacao dos AF, no sentido em que todo o AFpode ser visto como um AFND. Noutros termos, o determinismo e um casoparticular do nao-determinismo em que o conjunto de possibilidades se reduza uma so. Mais precisamente, quando num AF se tem δ (q, a) = q , podemosencarar a situacao como se de um AFND se tratasse em que δ (q, a) = {q } e

46

Page 48: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 48/172

δ (q, λ) = ∅. Como num AF ha um unico percurso associado a cada palavra

x, o mesmo sucede quando ele e visto como um AFND, o que significa queδ ∗(q, x) = q  sse q 

x=⇒ q . Por definicao de linguagem reconhecida em AF e em

AFND, conclui-se que L(A) = L(A). Estas consideracoes estao sintetizadasna seguinte proposicao:

Proposicao 3.18 Seja  A = (T ,Q ,q  I ,δ ,F ) um AF. Seja  A o AFND com todos os elementos iguais a  A, excepto que  δ  : Q × T  → Q e substituıda por δ  : Q × (T  ∪ {λ}) → P (Q), definida por  δ (q, a) = {δ (q, q )} para  a ∈ T  e δ (q, λ) = ∅. Ent˜ ao:

• δ ∗(q, x) = q  em  A sse  q x

=⇒ q  em  A.

• L(A) = L(A).

Evidentemente, nem todo o AFND pode ser visto como um AF, mas comoveremos, todo o AFND e equivalente a um AF, de acordo com a seguintenocao de equivalencia.

Definicao 3.19 (Equivalencia) Dois AFND dizem-se  equivalentes se re-conhecerem a mesma linguagem.

A Proposicao ?? mostra que todo o AF e (equivalente a) um AFND. Se

provarmos o resultado inverso, entao as classes de AF e AFND reconhecemexactamente as mesmas linguagens. Porque precisamos entao de AFND?A resposta e que quando queremos definir um AF e frequentemente maissimples comecar por definir um AFND e depois construir a partir dele o AFequivalente.

A construcao de um AF equivalente a um AFND dado nao e tao directacomo na situacao inversa descrita na Proposicao ??. A ideia-chave e que paraos automatos finitos o nao-determinismo pode ser simulado deterministica-mente. Para ver como isso e possıvel, consideremos o seguinte AFND muitosimples.

   G   G ?>=<  89:; 1

a,b

   A   A

a

   Q   Q ?>=<  89:;  7654  0123 2

b

 i i

b

 j j

Quando e submetida ao automato a palavra bb, ha uma primeira transicaodo estado 1 para os estado 2, mas a seguir podem ocorrer duas transicoes,uma para o estado 1 e outra para o estado 2. Os dois percursos resultantes,

47

Page 49: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 49/172

1b

−→ 2b

−→ 1 e 1b

−→ 2b

−→ 2, podem ser representados numa arvore:

 ?>=<  89:; 1

b    ?>=<  89:;  7654  0123 2

b

 ~ ~ } } } }

 } } } }

 }b

  2   2 e e e e e e e e e

 ?>=<  89:; 1 ?>=<  89:;  7654  0123 2

Para a palavra abaab obtinha-se a arvore abaixo, onde por simplicidade seindicaram ao lado os sımbolos que fizeram transitar de um nıvel para o se-guinte:

a

   

 ?>=<  89:; 1

a

 Ð Ð Ð Ð Ð Ð

 Ð Ð Ð Ð

 Ða

  0   0 b b b b b b b b b

b

   

 ?>=<  89:; 1

b

 Ð Ð Ð Ð Ð Ð

 Ð Ð Ð Ð

 Ð ?>=<  89:;  7654  0123 2

b

 Ð Ð Ð Ð Ð Ð

 Ð Ð Ð Ð

 Ðb

  0   0 b b b b b b b b b

a

   

 ?>=<  89:;  7654  0123 2 ?>=<  89:; 1a

 Ð Ð Ð Ð Ð Ð

 Ð Ð Ð Ð

 Ða

  0   0 b b b b b b b b b ?>=<  89:;  7654  0123 2

•a

   

 ?>=<  89:; 1a

 Ð Ð Ð Ð Ð Ð

 Ð Ð Ð Ð

 Ða

  0   0 b b b b b b b b b  ?>=<  89:;  7654  0123 2

b

   

 ?>=<  89:; 1

b   

 ?>=<  89:;  7654  0123 2

b

 Ð Ð Ð Ð Ð Ð

 Ð Ð Ð Ð

 Ðb

  0   0 b b b b b b b b b

• ?>=<  89:;  7654  0123 2 ?>=<  89:; 1 ?>=<  89:;  7654  0123 2

Como se pode observar, ha tres percursos incompletos (a palavra nao foi todalida) e outros tres completos. Destes, dois terminam em estados de aceitacao,logo a palavra e aceite.

A construcao desta arvore pode ser encarada como uma simulacao de to-dos os comportamentos possıveis do AFND ao ler a palavra abaab. Mas, paradecidir se a palavra e reconhecida ou nao, a simulacao e excessivamente por-menorizada. Tudo quanto precisamos de saber e qual e o conjunto de estadosexistentes em cada nıvel. Por exemplo, o facto de no ultimo nıvel existiremos estados 1 e 2 permite-nos conlcuir que a palavra e aceite, porque o estado2 e de aceitacao. E totalmente irrelevante que o estado 2 apareca repetido.Representando apenas os estados presentes em cada nıvel, as transicoes entre

48

Page 50: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 50/172

nıveis e a seguinte:

 ?>=<  89:; 1

a

    ON  ML  HIJK  GFED  @ABC 1, 2

b    ON  ML  HIJK  GFED  @ABC 1, 2

a

    ON  ML  HIJK  GFED  @ABC 1, 2

a

    ON  ML  HIJK  GFED  @ABC 1, 2

b    ON  ML  HIJK  GFED  @ABC 1, 2

Isto assemelha-se a um percurso de um automato determinista cujos estadosfossem conjuntos de estados do automato nao-determinista dado. De facto,o simulador que vamos construir limita-se a manter a informacao sobre osestados existentes em cada nıvel da arvore de comportamentos e de calcularas transicoes entre os nıveis. No exemplo em discussao ha quatro conjun-tos de estados susceptıveis de serem encontrados em nıveis de arvores decomportamentos. Sao eles:

• {1} — corresponde a raiz da arvore.

• {2} — nıvel que se atinge com a palavra b.

• {1, 2} — idem, com a palavra a.

• ∅ — idem, com a palavra ba.

Qualquer outra palavra produz no fim um destes nıveis, visto que ja aquiestao todos os subconjuntos do conjunto de estados {1, 2}. Estes sao entaoos estados do simulador. O estado inicial e {1} e os estados de aceitacaosao {2} e {1, 2}, visto que correspondem a nıveis da arvore onde terminampercursos do AFND que terminam em estados de aceitacao. As transicoesde um conjunto calculam-se a partir das transicoes individuais dos estadosdo AFND contidos no conjunto. Neste exemplo obtinha-se o AF:

49

Page 51: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 51/172

   G   G GF  ED  @A BC {1}a

   G   G

b

   

 GF  ED  @A BC  ?> =<  89 :; {1, 2} a, b n n

 GF  ED  @A BC  ?> =<  89 :; {2}

b

   Y  Y               a    G   G GF ED  @A BC { } a, b

 h h

Apresentamos em seguida a definicao do simulador determinista.

Definicao 3.20 Seja  A = (T ,Q ,q  I ,δ ,F ) um AFND. Define-se o AF 

A = (T, Q, q I , δ, F )

do seguinte modo:

• O alfabeto de entrada e o mesmo.

• Cada estado de  Q e um subconjunto de  Q. O conjunto Q define-se indutivamente pelas duas cl´ ausulas seguintes, que tambem definem  q I  e δ :

– q I  = {q  ∈ Q : q I λ

=⇒ q } ∈ Q.

– Para  P  ∈ Q e  a ∈ T ,

δ (P, a) = {q  ∈ Q : (∃ q ∈ P ) q a

=⇒ q } ∈ Q.

• O conjunto dos estados de aceitac˜ ao e dado por:

F  = {P  ∈ Q : P  ∩ F  = ∅}.

A proxima propriedade e a justificacao de que A simula A.

Proposicao 3.21 Para todo o x ∈ T ∗,

δ ∗(q I , x) = {q  ∈ Q : q I  x=⇒ q }.

Demonstracao A demonstracao e por inducao no comprimento de x.i) Caso x = λ:

δ ∗(q I , λ) = q I  (def. do ∗ de δ )

= {q  ∈ Q : q I λ

=⇒ q } (def. de q I ).

50

Page 52: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 52/172

ii) Caso x = ya:

δ ∗(q I , ya) = δ (δ ∗(q I , y), a) (def. do ∗ de δ )

= δ ({q  : q I y

=⇒ q }   P 

, a) (hip. indutiva sobre y)

= {q  : (∃ q  ∈ P ) q a

=⇒ q } (def. de δ )

= {q  : (∃ q ) q I y

=⇒ q a

=⇒ q } (def. de P )

= {q  : q I ya

=⇒ q } (Observacao ??).

Fica terminada a demonstracao. 2

Podemos agora verificar que A e A reconhecem a mesma linguagem.

Proposicao 3.22 L(A) = L(A).

Demonstracao Tem-se

x ∈ L(A) ⇐⇒ (∃ q ∈ F ) q I x

=⇒ q  (def. de L(A))

⇐⇒ {q  : q I x

=⇒ q } ∩ F  = ∅ (matematica)

⇐⇒ δ ∗(q I , x) ∩ F  = ∅ (Proposicao ??)

⇐⇒ δ ∗(q I , x) ∈ F  (def. de F )

⇐⇒ x ∈ L(A) (def. de L(A)).

Logo L(A) = L(A). 2

Exemplo 3.23 Retomemos o AFND dos numeros sem sinal apresentado noExemplo ??. Comecamos por construir uma tabela auxiliar, onde para todo oestado q  e sımbolo de entrada a se determinam os estados q  tal que q 

a=⇒ q 

(recorde-se que isto quer dizer que q λ

−→ · · ·λ

−→a

−→λ

−→ · · ·λ

−→ q ). Atabela, que se obtem por inspeccao directa do diagrama que define o AFND,e a seguinte:

d . E  + −1 1, 2, 3, 4, 6, 72 1, 2, 3, 4, 6, 7 3 5, 63 3, 4, 6, 74 3, 4, 6, 7 5, 65 6, 7 6 66 6, 77 6, 7

51

Page 53: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 53/172

Em seguida determinamos o estado inicial: q I  = {q  : 1λ

=⇒ q } = {1}.

Podemos iniciar o processo iterativo que constroi em simultaneo Q e δ . Oprocesso sera materializado pela construcao da tabela da funcao de transicaoδ , que tem as linhas indexadas por Q e as colunas por T . Inicialmente, de Qso conhecemos q I  = {1}, e as suas transicoes ainda nao sao conhecidas, peloque a tabela se resume a:

d . E  + −{1}

Para preencher esta linha, consulta-se a tabela auxiliar, obtendo-se:

d . E  + −

{1} {1, 2, 3, 4, 6, 7} ∅ ∅ ∅ ∅Obtivemos dois novos estados, que se acrescentam a tabela:

d . E  + −{1} {1, 2, 3, 4, 6, 7} ∅ ∅ ∅ ∅

{1, 2, 3, 4, 6, 7}∅

Para preencher a primeira destas linhas faz-se a uniao casa a casa das linhasda tabela auxiliar indexadas por 1, 2, 3, 4, 6, 7. A segunda linha tem todas ascasas vazias:

d . E  + −{1} {1, 2, 3, 4, 6, 7} ∅ ∅ ∅ ∅

{1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6} ∅ ∅∅ ∅ ∅ ∅ ∅ ∅

Desta vez obtiveram-se dois novos estados, {3} e {5, 6}, que se acrescentama tabela. Para estes estados procede-se como anteriormente. O processo ter-mina quando nao forem gerados novos estados (a terminacao esta garantidapor ser apenas ser possıvel gerar um numero finito de conjunto de estadosdo AFND dado). A tabela final e:

d . E  + −

{1} {1, 2, 3, 4, 6, 7} ∅ ∅ ∅ ∅{1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6} ∅ ∅

∅ ∅ ∅ ∅ ∅ ∅{3} {3, 4, 6, 7} ∅ ∅ ∅ ∅

{5, 6} {6, 7} ∅ ∅ {6} {6}{3, 4, 6, 7} {3, 4, 6, 7} ∅ {5, 6} ∅ ∅

{6, 7} {6, 7} ∅ ∅ ∅ ∅{6} {6, 7} ∅ ∅ ∅ ∅

52

Page 54: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 54/172

Para aligeirar a tabela, e costume deixar em branco as casas com ∅ e eliminar

a linha de ∅:

d . E  + −1 {1} {1, 2, 3, 4, 6, 7}2 {1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6}3 {3} {3, 4, 6, 7}4 {5, 6} {6, 7} {6} {6}5 {3, 4, 6, 7} {3, 4, 6, 7} {5, 6}6 {6, 7} {6, 7}7 {6} {6, 7}

Renomearam-se tambem os estados para simplificar a apresentacao do dia-grama correspondente:

   G   G ?>=<  89:; 1d    G   G ?>=<  89:;  7654  0123 2

.

   

E     G   G

d

   ?>=<  89:; 4d    G   G

+,−

  8   8 v v v v v v v v v v v v v v  ?>=<  89:;  7654  0123 6

d

  

 ?>=<  89:; 3d    G   G ?>=<  89:;  7654  0123 5

 y y

d

 j j ?>=<  89:; 7

d

 y y

2

3.5 Automatos finitos e linguagens regulares

Comecamos por ver que as linguagens reconhecidas por aut omatos finitos(deterministas ou nao) sao fechadas para as operacoes regulares, a comple-mentacao e a interseccao.

Proposicao 3.24 Sejam  L1 e  L2 linguagens reconhecidas por aut´ omatos fi-nitos. Ent˜ ao as linguagens  L1 ∪ L2, L1.L2, L∗

1, T ∗ − L1 e  L1 ∩ L2 s˜ ao reco-nhecidas por aut´ omatos finitos.

Demonstracao Sejam A1 = (T, Q1, q 1I , δ 1, F 1) e A2 = (T, Q2, q 2I , δ 2, F 2)AF ou AFND tais que L1 = L(A1) e L2 = L(A2). Vamos construir AFNDA∪, A., A∗, A−, A∩ que reconhecem respectivamente L1 ∪ L2, L1.L2, L∗

1, T ∗ −L1 e L1 ∩ L2.

As construcoes de cada automato serao ilustradas graficamente com basena seguinte representacao esquematica dos AFND:

53

Page 55: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 55/172

E iq I 

 u iF 

  '$

  &%  A

E conveniente supor que Q1 ∩ Q2 = ∅, o que nao se traduz em perda degeneralidade visto que se for necessario o nome dos estados pode ser mu-dado a vontade sem alterar as linguagens reconhecidas. Para simplificara definicao matematica das construcoes que iremos apresentar, identificare-mos cada funcao de transicao δ  com o conjunto de triplos (q,a,P ) tal que

δ (q, a) = P .Caso L1 ∪ L2:O automato A∪ tem a seguinte representacao esquematica:

E iq ∪I 

          λ

 d  d  d  d  d 

λ

 iq 1I 

 u iF 1

  '$  &%  

A1

 iq 2I 

 u iF 2

  '$  &%  

A2

Mais formalmente, A∪ = (T, Q∪, q ∪I , δ ∪, F ∪), com:

• Q∪ = Q1 ∪ Q2 ∪ { p}, em que p ∈ Q1 ∪ Q2.

• q ∪I  = p.

• δ ∪ = δ 1 ∪ δ 2 ∪ {( p, λ, {q 1I , q 2I })}.

• F ∪ = F 1 ∪ F 2.

E facil ver que A∪ reconhece L1 ∪ L2, visto que as palavras reconhecidascorrespondem a percursos em A1 ou em A2, e portanto pertencem a L1 ou aL2.

Caso L1.L2:O automato A. tem a forma:

54

Page 56: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 56/172

E iq 1I 

 iF 1

  '$

  &%  A1

Eλ  i

q 2I 

 u iF 2

  '$

  &%  A2

Nao houve criacao de estados, o estado inicial de A1 e o estado inicialde A., os estados de aceitacao de A. sao os de A2, e criaram-se transicoesetiquetadas por λ dos estados de aceitacao de A1 para o estado inicial de A2.Mais precisamente, A. = (T, Q., q .I , δ ., F .) e definido por:

• Q. = Q1 ∪ Q2.

• q .I  = q 1I .

• δ . = δ 1 ∪ δ 2 ∪ {(q,λ, {q 2I }) : q  ∈ F 1}.

• F . = F 2.

As palavras reconhecidas por A. sao as que determinam um percurso em A1

de q 1I  a F 1, seguidas de um percurso em A2 de q 2I  a F 2, por conseguinte saoas palavras de L1.L2.

Caso L∗

1:Neste caso A∗ tem a forma:

E u iq ∗I 

8 7

 T

λ

 iq 1I 

 u iF 1

  '$  &%  

A1

Acrescentou-se um novo estado a Q1, simultaneamente estado inicial e de

aceitacao de A∗

, e acrescentaram-se transicoes etiquetadas por λ dos estadosde aceitacao para q 1I . Assim, A∗ = (T, Q∗, q ∗I , δ ∗, F ∗), onde:

• Q∗ = Q1 ∪ { p}, p ∈ Q1.

• q ∗I  = p.

• δ ∗ = δ 1 ∪ {(q,λ, {q 1I }) : q  ∈ F 1 ∪ { p}}.

• F ∗ = F 1 ∪ { p}.

55

Page 57: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 57/172

As palavras reconhecidas por A∗ sao todas as que percorrem zero ou mais

vezes A1 de q 1I  a F 1, isto e, sao as palavras do fecho L∗

1 de L1.Caso T ∗ − L1:Para esta construcao temos de supor que o automato A1 e determinista

(ver justificacao na Observacao ?? abaixo), o que nao causa problema por-que sabemos como passar de um automato nao-determinista a um automatodeterminista que reconhece a mesma linguagem. O automato A− tambeme determinista e consiste apenas em trocar em A1 os estados de aceitacaocom os de nao aceitacao. Tem-se A− = (T, Q−, q −I 

, δ −, F −) com Q− = Q1,q −I 

= q 1I , δ − = δ 1 e F − = Q1 − F 1.Caso L1 ∩ L2:Como L1∩L2 = T ∗−((T ∗−L−1)∪(T ∗−L2)), resulta dos casos anteriores

que L1 ∩ L2 e reconhecida por um AFND.Fica concluıda a demonstracao.

2

Observacao 3.25 Se o automato A nao for determinista, a troca dos estadosde aceitacao pelos de nao-aceitacao nao garante que o automato resultantepasse a reconhecer o complemento da linguagem que reconhecia. Basta olharpara os automatos da figura seguinte e observar que ambos reconhecem apalavra a:

   G   G ?>=<  89:; 1a

   G   G

a

   

 ?>=<  89:;  7654  0123 2 G   G ?>=<  89:;  7654  0123 1a

   G   G

a

   

 ?>=<  89:; 2

 ?>=<  89:; 3 ?>=<  89:;  7654  0123 3

2

Observacao 3.26 Nas condicoes da proposicao anterior, se os automatosA1 e A2 que reconhecem L1 e L2 forem deterministas, podem construir-sedirectamente versoes deterministas de A∪ e A∩. Em ambos os casos, osconjuntos de estados, estados iniciais e funcoes de transicao sao iguais; os

automatos so diferem nos estados de aceitacao. Podemos entao escreverA∪ = (T ,Q ,q  I ,δ ,F ∪),A∩ = (T ,Q ,q  I ,δ ,F ∩),

em que:

• Q = Q1 × Q2.

• q I  = (q 1I , q 2I ).

56

Page 58: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 58/172

• δ ((q 1, q 2), a) = (δ 1(q 1, a), δ 2(q 2, a)).

• F ∪ = (F 1 × Q2) ∪ (Q1 × F 2).

• F ∩ = F 1 × F 2.

De um ponto de vista intuitivo, cada um destes automatos simula o funci-onamento de A1 e A2 em simultaneo. Os seus estados guardam a informacaosobre os estados em que se encontram A1 e A2. Em particular, o estadoinicial corresponde ao estado inicial de cada um deles. Uma transicao simulaas transicoes correspondentes de A1 e A2. Nao e difıcil concluir que se umapalavra x determina um percurso de (q 1, q 2) a (q 1, q 2), entao x determina umpercurso de q 1 a q 1 em A1 e um percurso de q 2 a q 2 em A2. Os automatos A∪

e A∩ so diferem no criterio de aceitacao. Consideremos primeiro A∪. Umapalavra x cujo percurso a partir do estado inicial termina num estado emF ∪, termina em F 1 × Q2 ou em Q1 × F 2. No primeiro caso, o percurso que xdetermina em A1 comeca no estado inicial e termina em F 1, logo x ∈ L1. Nosegundo caso se conclui analogamente que x ∈ L2. Como se verifica um casoou outro (ou ambos), tem-se x ∈ L1 ∪ L2. Invertendo o raciocınio conclui-seque toda a palavra em L1 ∪ L2 e reconhecida por A∪. Conjugando as duasobservacoes tem-se L(A∪) = L1 ∪ L2. Para o automato A∩ conclui-se deforma semelhante (e alias mais simples) que L(A∩) = L1 ∩ L2. 2

Teorema 3.27 Toda a linguagem regular e reconhecida por algum aut´ omato finito.

Demonstracao As linguagens ∅, {λ} e {a} com a ∈ T  sao reconhecidaspelos AFND:

   G   G /.-,  ()*+  G   G /.-,  ()*+      G   G /.-,  ()*+  a    G   G /.-,  ()*+     ∅ {λ} {a}

Qualquer outra linguagem regular obtem-se a partir destas por um numerofinito de aplicacoes das operacoes de uniao, concatenacao e fecho, logo, pela

propriedade anterior, e reconhecida por um AFND. 2

Exemplo 3.28 Vamos construir passo a passo um AFND que reconhece(a + ba∗b)∗. Nos AFND’s que se seguem, omite-se a etiqueta λ nas transicoespara nao sobrecarregar as figuras.

Expressao regular a:   G   G /.-,  ()*+  a    G   G /.-,  ()*+     

57

Page 59: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 59/172

Expressao regular a∗:

   G   G    /.-,  ()*+      G   G    /.-,  ()*+ a

   G   G /.-,  ()*+      z z   n

Expressao regular a∗b:

   G   G /.-,  ()*+      G   G T  T  j /.-,  ()*+ 

a   G   G /.-,  ()*+      z z

   G   G    /.-,  ()*+  b    G   G /.-,  ()*+     

Expressao regular ba∗b:

   G   G /.-,  ()*+  b    G   G /.-,  ()*+  G   G    /.-,  ()*+  G   G T  T /.-,  ()*+ a

   G   G /.-,  ()*+      z z   G   G /.-,  ()*+  b    G   G /.-,  ()*+     

Expressao regular a + ba∗b:

 /.-,  ()*+  a    G   G /.-,  ()*+     

   G   G    /.-,  ()*+ 

   c  c  

  

 

  1   1 c c

 c c

 c

 /.-,  ()*+ b

   G   G /.-,  ()*+  G   G /.-,  ()*+  G   G T  T /.-,  ()*+ 

a   G   G /.-,  ()*+  G   G

 z z  /.-,  ()*+ b

   G   G /.-,  ()*+     

Expressao regular (a + ba∗b)∗:

 /.-,  ()*+  a    G   G /.-,  ()*+     

 r r

 z 

  o l i f   G   G    /.-,  ()*+      G   G    /.-,  ()*+ 

   c  c          

  1   1 c c c c c c c c c c

 /.-,  ()*+ b

   G   G /.-,  ()*+  G   G /.-,  ()*+  G   G T  T /.-,  ()*+ a

   G   G /.-,  ()*+  G   G z z  /.-,  ()*+ 

b   G   G /.-,  ()*+     

 o o

                    

AF equivalente:

   G   G /.-,  ()*+     b

   

a    G   G /.-,  ()*+     b

       

    

    

    

a

 q q

 /.-,  ()*+ b

   A   A

a  4   4 p p p p p p p p /.-,  ()*+     b

 i i

a

 y y

 /.-,  ()*+ a

 m mb

   `  ` x x x x x x x x

58

Page 60: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 60/172

Por tecnicas que veremos mais adiante, este AF podia ser simplificado

para o seguinte AF equivalente:

   G   G /.-,  ()*+     a

     b   A   A /.-,  ()*+ 

a

 q q

b

 i i

2

Mostraremos em seguida que a inversa do teorema anterior tambem everdadeira, isto e, as linguagens reconhecidas pelos automatos finitos saoregulares.

Definicao 3.29 Seja  A = (T ,Q ,q  I ,δ ,F ) um AF (determinista). O sistema 

linear direito associado a  A e X q = χ(q ) +

a∈T  aX δ(q,a)

(q  ∈ Q),

onde  χ(q ) = λ se  q  ∈ F  e  χ(q ) = ∅ se  q ∈ F .

Assim, existe uma incognita X q para cada estado q  ∈ Q e uma equacaopara cada incognita. O membro direito da equacao de X q e uma soma devarios termos. O primeiro desses termos, χ(q ), e λ ou ∅ consoante q  e ou naode aceitacao (no ultimo caso, o ∅ pode omitir-se). Os outros termos estaoassociados as transicoes a partir de q : para cada q  tal que q  = δ (q, a), existe

um termo aX q. Como veremos, este sistema tem uma solucao unica em quecada X q e o conjunto de todas as palavras que levam de q  a um estado deaceitacao. Em particular, X qI  e a linguagem reconhecida pelo AF.

Exemplo 3.30 Ao AF

   G   G ?>=<  89:;  7654  0123 1

a    b

   A   A ?>=<  89:; 2

a

  

b

 i i

esta associado o sistema

X 1 = λ + aX 1 + bX 2

X 2 = bX 1 + aX 2.

Resolvendo o sistema comecando por eliminar a incognita X 2 usando a se-gunda equacao, obtinha-se a solucao X 1 = (a + ba∗b)∗ e X 2 = a∗b(a + ba∗b)∗.Note-se que a solucao para X 1 e a expressao regular a partir da qual cons-truımos no exemplo anterior o AF de que partimos neste exemplo. Isso naoe de estranhar visto que, como veremos, a solucao da incognita associada aoestado inicial e a linguagem reconhecida pelo automato. 2

59

Page 61: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 61/172

Teorema 3.31 Seja  A = (T ,Q ,q  I ,δ ,F ) um AFD. As linguagens 

Lq = {x ∈ T ∗ : δ ∗(q, x) ∈ F } (q  ∈ Q)

(palavras que levam de  q  a  F ) s˜ ao a soluc˜ ao ´ unica do sistema linear direitoX q = χ(q ) +

a∈T  aX δ(q,a)

(q  ∈ Q).

Em particular, a linguagem reconhecida por  A satisfaz  L(A) = LqI , logo e regular.

Demonstracao Dizer que as linguagens Lq (q  ∈ Q) sao solucao do sistemasignifica que

Lq = χ(q ) ∪a∈T 

aLδ(q,a)

para todo o q  (ao passar da notacao das expressoes regulares para a daslinguagens, estamos a supor que χ(q ) = {λ} em vez de χ(q ) = λ quando foresse o caso, isto e, quando for χ(q ) = ∅). Temos de mostrar que para todo oq  ∈ Q e todo o x ∈ T ∗ se tem

x ∈ Lq ⇐⇒ x ∈ χ(q ) ∪

a∈T aLδ(q,a).

Distinguimos dois casos.Caso x = λ:

λ ∈ Lq ⇐⇒ δ ∗(q, λ) ∈ F 

⇐⇒ q  ∈ F 

⇐⇒ λ ∈ χ(q )

⇐⇒ λ ∈ χ(q ) ∪

a∈T  aLδ(q,a).

Caso x = ay:

ay ∈ Lq ⇐⇒ δ ∗(q,ay) ∈ F 

⇐⇒ δ ∗(δ (q, a), y) ∈ F 

⇐⇒ y ∈ Lδ(q,a)

⇐⇒ ay ∈ aLδ(q,a)

⇐⇒ ay ∈ χ(q ) ∪

a∈T  aLδ(q,a).

60

Page 62: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 62/172

Esta assim demonstrado que os Lq (q  ∈ Q) sao uma solucao do sistema.

Vamos agora mostrar que nao ha outras solucoes. Mais precisamente, se M q(q  ∈ Q) for outra solucao, entao M q = Lq para todo o q  ∈ Q. Seja

M q,n = {x ∈ M q : |x| = n}

o conjunto das palavras de M q de comprimento n, e defina-se Lq,n analo-gamente. Para provar que M q = Lq, mostraremos por inducao em n queM q,n = Lq,n para todo o n. O passo crucial do raciocınio e notar que, dadoque M q (q  ∈ Q) e solucao do sistema, se tem

M q = χ(q ) ∪

a∈T aM δ(q,a).

Ora as palavras de M q de comprimento 0 estao no primeiro termo, χ(q ), e asde comprimento n + 1 com n ≥ 0 estao no segundo,

a∈T  aM δ(q,a), quando

se tomam em M δ(q,a) as palavras de comprimento n. Pode-se escrever

M q,0 = χ(q ), M q,n+1 =a∈T 

aM δ(q,a),n.

E evidente que os Lq (q  ∈ Q) satisfazem igualdades semelhantes,

Lq,0 = χ(q ), Lq,n+1 =

a∈T aLδ(q,a),n,

visto que como vimos sao solucao do sistema. Estamos em condicoes deapresentar o raciocınio indutivo. Para n = 0 vem

M q,0 = χ(q ) = Lq,0.

Assumindo como hipotese indutiva que M q,n = Lq,n para n ≥ 0, tem-se

M q,n+1 =

a∈T  aM δ(q,a),n=

a∈T  aLδ(q,a),n

= Lq,n+1,

onde a segunda igualdade resulta da hipotese indutiva. Fica concluıda ademonstracao. 2

Os Teoremas ?? e ?? mostram que as linguagens reconhecidas pelosautomatos finitos sao exactamente as linguagens regulares. Ja sabıamos pelaProposicao ?? que os automatos finitos reconhecem as linguagens racionais.Conclui-se que:

Teorema 3.32 Uma linguagem e regular se, e s´ o se, for racional.

61

Page 63: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 63/172

3.6 Existencia de linguagens nao-regulares

Em face do Teorema ?? podemos concluir que uma linguagem nao e regular senao for racional, isto e, se a sua representacao sob a forma de arvore nao tiverum numero finito de sub-arvores distintas. Outro criterio para reconhecerque certas lcinguagens nao sao regulares baseia-se no seguinte resultado.

Proposicao 3.33 (“Pumping Lemma”) Seja  L uma linguagem regular infinita sobre um alfabeto T . Existem palavras  x,y,z ∈ T ∗ tais que  y = λ e xynz  ∈ L para todo o n ≥ 0.

Demonstracao Consideremos um AF que reconhece L e seja k o seu

numero de estados. Como a linguagem L e infinita, tem uma palavra w =a1 · · · am de comprimento m ≥ k (as palavras de comprimento < k sao emnumero n0 + n1 + · · · nk−1, em que n e o numero de sımbolos em T ). Opercurso q 0

a1−→ q 1 · · ·am−→ q m no AF do estado inicial q I  = q 0 a um estado

de aceitacao q m ∈ F  passa por m + 1 > k estados, logo ha pelo menos umque se repete:

E i E ia1 . . . i E iai E ia j+1 . . . i E iam dq I  ∈ F 

 ¥¦x

 ¥¦z 

 iB

ai+1

... i i c

a j

... is  ¤§

y

Assim, existem i e j tais que 0 ≤ i < j ≤ m e q i = q  j. Verifica-se facilmenteque as palavras

x = a1 · · · ai,y = ai+1 · · · a j ,z  = a j+1 · · · am

satisfazem as condicoes do enunciado. 2

62

Page 64: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 64/172

Exemplo 3.34 Ja sabemos que a linguagem L = {anbn : n ≥ 0} nao e

regular, por nao ser racional (ver Exemplo ??). Vejamos agora como se podechegar a mesma conclusao aplicando o “pumping lemma”.

Se a linguagem fosse regular, existiriam x, y = λ, z  com xynz  ∈ L paratodo o n ≥ 0. Vamos mostrar que isto e impossıvel, o que nos permitiraconcluir que a linguagem nao e regular. Mais concretamente, mostraremosque assumindo que xynz  ∈ L para todo o n ≥ 0 se chega a uma contradicao.Como por hipotese xyz  ∈ L (quando n = 1), distinguimos tres casos.

1o¯ caso – y so com a’s:

Dado que as palavras de L sao formadas por ocorrencias de a seguidasde igual numero de ocorrencias de b, as palavras x, y e z  tem de ter aforma x = a p, y = aq e z  = arbs para alguns p,q,r,s com q > 0 (porquey = λ) e p + q + r = s (igual numero de a’s e de b’s em xyz ). Mas entaoxy2z  = a p+2q+rbs pertenceria a linguagem, donde p + 2q + r = s = p + q + r,ou seja, q  = 0. Isto contradiz o facto de que q > 0.

2o¯ caso – y so com b’s:

Este caso e analogo ao anterior.3o¯ caso – y com a’s e b’s:

Neste caso terıamos x = a p, y = aqbr, z  = bs para alguns p,q,r,s ≥ 0 comq,r > 0 e p + q  = r + s. Por hipotese, xy2z  ∈ L. Mas xy2z  = a p(aqbr)2bs =a paqbraqbrbs. Como q, r > 0, viria algum b antes de algum a, de novo umacontradicao. 2

3.7 Automato acessıvel

Um automato finito determinista (AF) pode ser simplificado de duas formas:primeiro, eliminando estados que nunca serao usados; segundo, fundindo emum so estados que exibem o mesmo comportamento, e por isso s ao redun-dantes. Estas duas simplificacoes serao apresentadas respectivamente nestaseccao e na proxima.

Definicao 3.35 (AF acessıvel) Seja  A = (T ,Q ,q  I ,δ ,F ) um AF. Um es-

tado q  ∈ Q diz-se acessıvel se q I a1

−→

a2

−→ · · ·

an

−→ q para alguns a1, a2, . . . , an ∈T. Noutros termos, se existir  x ∈ T ∗ tal que  δ ∗(q I , x) = q . O aut´ omato Adiz-se  acessıvel se todos os seus estados forem acessıveis.

Exemplo 3.36 No AF seguinte, os tres estado de cima sao acessıveis e o

63

Page 65: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 65/172

que esta mais abaixo e inacessıvel:

    /.-,  ()*+ b

  

b

  1   1 c c c c c c c c c c

 /.-,  ()*+  s

  t t

 /.-,  ()*+     

 /.-,  ()*+ b

   c c c c c c c c c cs

   c  c          

(Para maior clareza omitiu-se o estado de erro, como se far a nos exemplos

seguintes.) Como e evidente, o estado inacessıvel nao tem qualquer influenciano comportamento do AF visto que nunca e usado, e por iso pode ser remo-vido sem que isso afecte a linguagem reconhecida. Obtem-se o AF:

    /.-,  ()*+ b

  

b

  1   1 c c c c c c c c c c

 /.-,  ()*+  s

  t t

 /.-,  ()*+     

A simplificacao que resulta da remocao de estados inacessıveis e descrita comtoda a generalidade na proposicao seguinte. 2

Proposicao 3.37 Para todo o AF A = (T ,Q ,q  I ,δ ,F ), existe um AF acessıvel A = (T, Q, q I , δ , F ) que reconhece a mesma linguagem.

Demonstracao O automato A obtem-se de A removendo todos os estadosque nao sao acessıveis. Mais precisamente:

Q = {q  ∈ Q : (∃ x ∈ T ∗) δ ∗(q I , x) = q },q I  = q I ,

δ (q, a) = δ (q, a) (∀ q  ∈ Q, a ∈ T ),F  = F  ∩ Q.

Tem-se tambem δ ∗(q, x) = δ ∗(q, x) para todo o q  ∈ Q e x ∈ T ∗, como semostra facilmente por inducao no comprimento de x. Com efeito, δ ∗(q, λ) =q  = δ ∗(q, λ) e

δ ∗(q,ay) = δ ∗(δ (q, a), y) (por definicao de δ ∗)= δ ∗(δ (q, a), y) (por definicao de δ )= δ ∗(δ (q, a), y) (por hipotese indutiva)= δ ∗(q,ay) (por definicao de δ ∗).

64

Page 66: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 66/172

Tem-se L(A) = {x : δ ∗(q I , x) ∈ F } = {x : δ ∗(q I , x) ∈ F } = L(A). 2

3.8 Automato reduzido

Consideremos o seguinte AF:

    GFED  @ABC 1b

 z z     

     b

  6   6 r r r r r r r r r

 ?>=<  89:; 2

s D   D ?>=<  89:;  7654  0123 

3

 GFED  @ABC 1

b l l

b

   X  X        

Os estados 1 e 1 sao equivalentes, no sentido em que nao e possıvel observarnenhuma diferenca entre os comportamentos de ambos. Imaginemos que oAF e uma caixa, com botoes para os sımbolos de entrada e uma lampadaque se acende para assinalar estados de aceitacao:

Caixa negra

b b s '$ Ts B E'

Suponhamos que se tem dois exemplares do mesmo AF, um no estado 1 eo outro no estado 1. Dizer que nao e possıvel distinguir os comportamen-tos de ambos significa que, premindo a mesma sucessao de botoes nos doisexemplares, qualquer que ela seja, observa-se em ambos a mesma sucessaode estados da lampada.

E facil concluir que 1 e 1 sao equivalentes. Por um lado, nenhum e

de aceitacao, de modo que inicialmente a lampada esta apagada em ambos.Por outro lado, premindo qualquer botao, eles mudam para o mesmo estado(premindo s mudam ambos para o mesmo estado de erro implıcito), logo naovai haver diferenca na sucessao de estados da lampada.

A importancia de haver estados equivalentes e que eles podem ser redu-zidos a um so, dando um AF com menor numero de estados que reconhece amesma linguagem. A reducao efectua-se fundindo ou amalgamando estados

65

Page 67: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 67/172

equivalentes e as respectivas transicoes associadas. Amalgamando 1 e 1

obtinha-se:

    ?>=<  89:; 1b

 Ö Öb

  5   5 r r r r r r r r

 ?>=<  89:; 2 s

  p p

 ?>=<  89:;  7654  0123 3

Note-se que as transicoes 1b

−→ 2 e 1b

−→ 2 foram amalgamadas, enquanto2

s−→ 1 originou 2

s−→ 1.

Definicao 3.38 (Estados equivalentes) Dados dois estados  q, q  ∈ Q de 

um AF, p˜ oe-se  q  ≡ q 

e diz-se que  q  e  q 

s˜ ao equivalentes se δ ∗(q, x) ∈ F  ⇐⇒ δ ∗(q , x) ∈ F 

para todo o x ∈ T ∗, isto e, δ ∗(q, x) e  δ ∗(q , x) s˜ ao ambos de aceitac˜ ao ou nenhum e.

Observacao 3.39 A definicao anterior corresponde a ideia intuitiva de queos comportamento a partir dos dois estados sao iguais. Os estados por queo AF passa a partir de q  e q  quando le a palavra x = a1a2 · · · an sao, respec-tivamente,

q  = δ ∗(q, λ), δ ∗(q, a1), δ ∗(q, a1a2), . . . δ  ∗(q, a1a2 · · · an),q  = δ ∗(q , λ), δ ∗(q , a1), δ ∗(q , a1a2), . . . δ  ∗(q , a1a2 · · · an).

Como a definicao anterior se aplica a todo o x, aplica-se, em particular, aspalavras λ, a1, a1a2, a1a2 · · · an. Deste modo, os pares de estados intermediosque se vao obtendo nos dois casos sao ambos de aceitacao ou nenhum e, oque corresponde a ideia de que os estados da lampada sao identicos nas duassituacoes. 2

Proposicao 3.40 (Caracterizacao alternativa de ≡)

q  ≡ q  ⇐⇒ Lq = Lq,

onde  Lq = {x ∈ T ∗ : δ ∗(q, x) ∈ F }.

Demonstracao Com efeito,

Lq = Lq ⇐⇒ (∀ x ∈ T ∗) x ∈ Lq ⇐⇒ x ∈ Lq

⇐⇒ (∀ x ∈ T ∗) δ ∗(q, x) ∈ F  ⇐⇒ δ ∗(q , x) ∈ F ⇐⇒ q  ≡ q ,

como se pretendia. 2

66

Page 68: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 68/172

Proposicao 3.41 A relac˜ ao ≡ e uma relac˜ ao de equivalencia.

Demonstracao E preciso verificar que ≡ satisfaz tres propriedades, paratodos os q, q , q  ∈ Q:

Reflexividade: q  ≡ q ;Simetria: q  ≡ q  implica q  ≡ q ;

Transitividade: q  ≡ q  e q  ≡ q  implicam q  ≡ q .

Estas propriedades sao faceis de verificar recorrendo a proposicao anterior.Vejamos a tıtulo de exemplo a transitividade. Se q  ≡ q  e q  ≡ q , entaoLq = Lq e Lq = Lq . Pela transitividade da igualdade, Lq = Lq, dondeq  ≡ q . 2

A ideia intuitiva de amalgamar estados equivalentes traduz-se matema-ticamente em substituir os estados do AF dado por conjuntos de estadosequivalentes. A construcao precisa encontra-se na Definicao ??, mas antesprecisamos de introduzir algumas nocoes auxiliares.

Definicao 3.42 (Classe de equivalencia) O conjunto de todos os estados equivalentes a  q  ∈ Q (estados que definem a mesma linguagem  Lq que  q )representa-se por  [q ]≡ — ou por  [q ] para simplificar a escrita — e chama-se a  classe de equivalencia de  q .

Observacao 3.43 As classes de equivalencia satisfazem algumas proprieda-des importantes.

Em primeiro lugar, tem-se sempre q  ∈ [q ], visto que q  e equivalente a q (reflexividade). Conclui-se que a uniao de todas as classes e Q:

q∈Q

[q ] = Q.

Seguidamente, se q  ≡ q , entao [q ] = [q ], isto e, estados equivalentespertencem a mesma classe. Com efeito, usando as propriedades de simetriae transitividade de ≡, q  ∈ [q ] sse q  ≡ q  sse q  ≡ q  ≡ q  sse q  ≡ q  ≡ q 

sse q  ≡ q  sse q  ∈ [q ]. Assim, [q ] e [q ] tem os mesmos elementos, logo saoiguais.

Daqui se infere que se [q ] ∩ [q ] = ∅, entao [q ] = [q ], isto e, duas classes deequivalencia ou sao disjuntas ou sao iguais. Com efeito, seja q  ∈ [q ] ∩ [q ].Tem-se q  ≡ q  ≡ q , donde q  ≡ q , logo [q ] = [q ]. 2

Definicao 3.44 (Conjunto cociente) O conjunto Q/≡ = {[q ] : q  ∈ Q} de todas as classes de equivalencia chama-se o conjunto cociente de  Q por ≡.

67

Page 69: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 69/172

A definicao seguinte concretiza a ideia de construir um automato a partir

da aglomeracao de estados equivalentes.

Definicao 3.45 (Automato reduzido) Seja  A = (T ,Q ,q  I ,δ ,F ) um AF.O AF  reduzido de  A e o AF 

AR = (T, QR, q RI , δ R, F R),

onde:

• QR = Q/≡ e o conjunto das classes de equivalencia de  ≡;

• q RI = [q I ] e a classe do estado inicial de  A;

• δ R([q ], a) = [δ (q, a)] para todo o q  ∈ Q e todo o a ∈ A;

• F R = {[q ] : q  ∈ F } e o conjunto de classes de equivalencia dos estados de aceitac˜ ao de  A.

Observacao 3.46 E preciso verificar que a funcao δ R esta correctamentedefinida, no sentido em que o valor δ R([q ], a) nao depende do estado q  esco-lhido na classe [q ]. Por outras palavras, temos de verificar que se [q ] = [q ],entao [δ (q, a)] = [δ (q , a)]. Tem-se:

[q ] = [q 

] ⇒ q  ≡ q 

⇒ (∀ x ∈ T ∗) δ ∗(q,ax) ∈ F  ⇐⇒ δ ∗(q , ax) ∈ F ⇒ (∀ x ∈ T ∗) δ ∗(δ (q, a), x) ∈ F  ⇐⇒ δ ∗(δ (q , a), x) ∈ F ⇒ δ (q, a) ≡ δ (q , a)⇒ [δ (q, a)] = [δ (q , a)],

como se pretendia. 2

A construcao do automato reduzido AR esta, bem entendido, dependentede se conhecer a relacao ≡, isto e, de se conhecer efectivamente que pares deestados sao equivalentes. Mais adiante veremos um metodo (algoritmo) que

permite calcular a relacao de equivalencia entre estados. Por agora vamosmostrar que AR reconhece a mesma linguagem que A, mas primeiro vejamosum exemplo.

68

Page 70: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 70/172

Exemplo 3.47 Aceitemos que o AF

    GFED  @ABC 1

b

   ~ ~ ~ ~

 ~ ~ ~ ~

 ~ ~b

  2   2 d d d d d d d d d d d

 GFED  @ABC 2

s  @   @

 GFED  @ABC 2

s

 "   "

 GFED  @ABC  ?>=<  89:; 3

 GFED  @ABC 1

b

  

b

   G   G GFED  @ABC  ?>=<  89:; 3

satisfaz as equivalencias

1 ≡ 1, 2 ≡ 2, 3 ≡ 3

e as que resultam destas por reflexividade e simetria. As classes de equi-valencia sao

[1] = [1] = {1, 1},

[2] = [2] = {2, 2},

[3] = [3] = {3, 3},

e constituem os estados do AF reduzido. O estado {1, 1} pode ser interpre-tado como a fusao de 1 e 1, e analogamente para {2, 2} e {3, 3}.

O estado inicial e [1] = {1, 1} e os de aceitacao sao [3] e [3], quesao de resto iguais a {3, 3}. A funcao de transicao satisfaz δ R([1], b) =[δ (1, b)] = [2] = {2, 2}. Dado que [1] = [1], podia tambem ter-se calcu-lado δ R([1], b) = [δ (1, b)] = [2] = {2, 2}.

O AF reduzido e:

    ?>  =<  89 :; {1, 1}b

 Ó Ó

b

  6   6 t t t t t t t t t t t

 ?>  =<  89  :; {2, 2}s

   g g

 GF  ED  @A BC  ?> =<  89 :; {3, 3}

Depois de obtido o AF reduzido podem renomear-se os estados para aligeirara notacao, por exemplo, A = {1, 1}, B = {2, 2}, C  = {3, 3}. 2

69

Page 71: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 71/172

Proposicao 3.48 Com as notac˜ oes anteriores, para todo o q  ∈ Q e  x ∈ T ∗,

δ ∗R([q ], x) = [δ ∗(q, x)].

Demonstracao Esta propriedade generaliza a δ ∗R a condicao que defineδ R. A sua demonstracao e por inducao no comprimento de x.

Caso x = λ:

δ ∗R([q ], λ) = [q ] (def. ∗ de δ R)= [δ ∗(q, λ)] (def. ∗ de δ ).

Caso x = ay:

δ ∗

R([q ], ay) = δ ∗

R(δ R([q ], a), y) (def. ∗ de δ R)= δ ∗R([δ (q, a)], y) (def. δ R)= [δ ∗(δ (q, a), y)] (hip. indutiva)= [δ ∗(q,ay)] (def. ∗ de δ ).

Fica terminada a demonstracao. 2

Teorema 3.49 Sejam  A um  AF  e  AR o seu AF reduzido. Tem-se 

L(AR) = L(A).

Demonstracao Para todo o x ∈ T ∗

:

x ∈ L(AR) ⇐⇒ δ ∗R(q RI , x) ∈ F R (def. L(AR))

⇐⇒ δ ∗R([q I ], x) ∈ F R (def. q RI )

⇐⇒ [δ ∗(q I , x)] ∈ F R (prop. anterior)⇐⇒ δ ∗(q I , x) ∈ F  (def. F R)⇐⇒ x ∈ L(A) (def. L(A)).

Como L(AR) e L(A) tem os mesmos elementos, sao iguais. 2

Para terminar este topico falta-nos apenas mostrar como se pode calcu-lar a relacao ≡. Para cada k ≥ 0, vamos definir uma “aproximacao por

excesso”, ≡k, de ≡. Intuitivamente, dizer que q  ≡k q  significa que nao epossıvel distinguir os estados q  e q  observando apenas os comportamentosde comprimento ≤ k a partir de cada um deles.

A designacao “por excesso” quer dizer que se q  ≡ q , entao q  ≡k q . Isto eevidente a partir da explicacao intuitiva de ≡k, visto que se q  ≡ q , entao naoe possıvel distinguir q  e q  por nenhum dos seus comportamentos, logo, pormaior forca de razao, nao e possıvel distingui-los apenas por comportamentosde comprimento ≤ k.

70

Page 72: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 72/172

A mesma explicacao intuitiva mostra-nos que se q  ≡k q  para todo o

k ≥ 0, entao q  ≡ q 

.Assim, o calculo de ≡ consiste em ir determinando ≡0, ≡1, ≡2, . . . e assim

sucessivamente. Como veremos nao e necessario calcular ≡k para todo ok ≥ 0, mas apenas ate que se verifique ≡k+1=≡k, altura em que ≡=≡k. Umtal k existe sempre, e tem-se ainda k ≤ n−2, em que n e o numero de estadosdo AF.

Vamos agora dar definicoes mais precisas destas nocoes.

Definicao 3.50 (Equivalencia-k) As relac˜ oes  ≡k no conjunto de estados Q de um AF definem-se por induc˜ ao em k como segue, para todos os q, q  ∈ Q:

• q  ≡0 q 

sse  q, q 

∈ F  ou  q, q 

∈ Q − F .• q  ≡k+1 q  sse  q  ≡k q  e, para todo o a ∈ T , δ (q, a) ≡k δ (q , a).

A seguinte proposicao justifica as afirmacoes acima feitas sobre as relacoes≡k.

Proposicao 3.51 Consideremos um AF e as relac˜ oes  ≡k da definic˜ ao an-terior.

1. Cada  ≡k e uma relac˜ ao de equivalencia.

2. Para todos os  q, q 

∈ Q,q  ≡ q  ⇐⇒ (∀ k ≥ 0) q ≡k q .

3. Para todo o k ≥ n − 2, ≡k=≡k+1 ( n e o n  umero de estados do AF).

4. Para todos os  q, q  ∈ Q,

q  ≡ q  ⇐⇒ q  ≡n−2 q .

Demonstracao Todas estas propriedades sao conceptualmente simples,por isso nao as demonstraremos em pormenor, limitando-nos a dar algumas

indicacoes sobre a forma como as demonstracoes poderiam ser conduzidas.1. Esta afirmacao e demonstrada por inducao em k. Para k = 0 e

simples. No caso indutivo, a demonstracao de que ≡k+1 e uma equivalenciae uma consequencia imediata da hipotese indutiva de que ≡k tambem o e.

2. Este facto e crucial. A implicacao ⇒ prova-se por inducao em k. Paraprovar a implicacao inversa, ⇐, mostra-se, para todo o x ∈ T ∗, que δ ∗(q, x) eδ ∗(q , x) estao ambos em F  ou ambos em Q−F , por inducao no comprimentode x.

71

Page 73: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 73/172

3. Como q  ≡k+1 q  implica q  ≡k q , o numero de classes de equivalencia

de ≡k+1 e superior ou igual ao numero de classes de ≡k. A relacao ≡0

tem, por definicao, duas classes. Quando o processo estabiliza, no pior doscasos ha n classes (com um estado cada) e em cada transicao ate se atingira estabilizacao aumentou-se apenas em um o numero de classes. Logo oprocesso estabiliza no maximo ao fim de n − 2 transicoes.

4. Esta afirmacao e uma consequencia de 2 e 3. 2

Exemplo 3.52 Vamos ver como o resultado anterior pode ser usado paradeterminar ≡ e, por conseguinte, construir o AF reduzido. Consideremos oseguinte AF, dado por um diagrama e por uma tabela:

    ?>=<  89:;  7654  0123 2 ?>=<  89:; 1c o o

b    ?>=<  89:; 3

a

 "   "

 ?>=<  89:;  7654  0123 4 ?>=<  89:; 5

a   ?>=<  89:; 6b

  c

 y y

Q a b c

> 1 7 5 2• 2 7 7 7

3 6 7 7• 4 7 7 7

5 6 7 76 7 3 47 7 7 7

Na tabela acrescentou-se o estado 7, de “erro”, implıcito no diagrama, marcou-se o estado inicial com > e os estados de aceitacao com •.Como n = 7, tem-se n − 2 = 5 e sabemos que ≡k+1=≡k para todo o

k ≥ 5. Na verdade, como veremos, este exemplo nao representa o pior casoe as relacoes ≡k estabilizam a partir de k = 2.

O calculo das sucessivas relacoes ≡k ate a estabilizacao esta apresentadonas tabelas seguintes:

≡0 Q a b c

1 A A B3 A A A

A 5 A A A6 A A B7 A A A

B 2 A A A4 A A A

≡1 Q a b c

A 1 B B C 6 B B C 

3 A B BB 5 A B B

7 B B BC  2 B B B

4 B B B

≡2 Q a b c

A 1 C B D6 C B D

B 3 A C C 5 A C C 

C  7 C C C D 2 C C C 

4 C C C 

Vejamos como se constroi a primeira tabela. Na primeira coluna repre-sentaram-se as duas classes de ≡0, nomeadamente, A = Q−F  = {1, 3, 5, 6, 7}

72

Page 74: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 74/172

e B = F  = {2, 4}. O resto da tabela e identico a tabela de transicoes de

estado, excepto que se escreveram as classes a que os elementos pertencem emvez dos proprios elementos. Dois elementos q  e q  na mesma classe e comlinhas iguais satisfazem q  ≡0 q  e (∀ a ∈ T ) δ (q, a) ≡0 δ (q , a), logo q  ≡1 q .Assim, as classes de ≡1 sao formadas pelos estados dentro de uma mesmaclasse de ≡0 que tem linhas iguais. Conclui-se que ≡1 tem tres classes,que podem ser renomeadas como A = {1, 6}, B = {3, 5, 7} e C  = {2, 4}.Podemos agora completar a segunda tabela como fizemos com a primeira.Tal como anteriormente, estados numa mesma classe de ≡1 com linhas iguaisconstituem uma classe de ≡2. Ha quatro classes, que permitem construira terceira tabela pelo processo ja conhecido. Nesta tabela, os estados emqualquer classe tem linhas iguais, o que mostra que ≡3 coincide com ≡2. Oprocesso estabilizou, portanto ≡2 e a relacao ≡.

O AF reduzido extrai-se da ultima tabela tomando as classes como esta-dos:

QR a b c

> A C B DB A C C  C C C C  

• D C C C  

   G   G GFED  @ABC A

b   A   A

a   C   C

c

   

 GFED  @ABC Ba

 i i

b,c

   GFED  @ABC  ?>=<  89:; D

a,b,c

   S   S GFED  @ABC C 

a,b,c

 i i

O estado inicial e a classe que contem o estado inicial do AF dado e os estadosde aceitacao sao as classes dos estados de aceitacao do AF dado (neste casoso uma). 2

3.9 Algumas propriedades decidıveis

Vamos aqui considerar algumas questoes que se podem por a respeito deautomatos finitos e que tem uma resposta “Sim” ou “Nao”. Antecipando

materia que sera apresentada mais adiante, tais questoes dizem-se “decidıveis”se existirem algoritmos que permitem obter uma resposta em todas as si-tuacoes possıveis. As questoes que agora vamos considerar sobre automatosfinitos sao todas decidıveis, mas adiante veremos que ha questoes semelhantesa proposito de outros modelos computacionais que ja nao sao decidıveis.

Existem algoritmos para as seguintes questoes, em que A, A1, A2 saoautomatos finitos com alfabeto de entrada T  e x ∈ T ∗:

1. x ∈ L(A) ?

73

Page 75: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 75/172

Basta determinar o estado q  = δ ∗(q I , x) e ver se q ∈ F .

2. L(A) = ∅ ?

Basta ver se algum estado de aceitacao e acessıvel, isto e, se existealgum percurso do estado inicial para um estado de aceitacao.

3. L(A) = T ∗ ?

Pela Propriedade ??, constroi-se um automato A tal que L(A) =T ∗ − L(A) e ve-se se L(A) = ∅.

4. L(A1) ⊆ L(A2) ?

Tem-se L(A1) ⊆ L(A2) se, e so se, (T ∗ − L(A2)) ∩ L(A1) = ∅. Usandoa Propriedade ??, constroi-se um automato A tal que L(A) = (T ∗ −L(A2)) ∩ L(A1) e ve-se se L(A) = ∅.

5. L(A1) = L(A2) ?

Ve-se se L(A1) ⊆ L(A2) e L(A2) ⊆ L(A1).

74

Page 76: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 76/172

Capıtulo 4

Gramaticas independentes do

contextoAs gramaticas sao o modelo mais utilizado para a definicao da sintaxe daslinguagens formais. Neste capıtulo, apos a definicao geral de gramatica,concentraremos a nossa atencao nas gramaticas independentes do contexto,que constituem a classe de gramaticas que e usada na quase totalidade doscasos na pratica.

4.1 Gramaticas

Os automatos sao dispositivos reconhecedores: testam palavras, verifi-cando se satisfazem certos criterios de reconhecimento. Ao inves, as gramati-cas sao dispositivos geradores: produzem palavras, utilizando certo tipo deregras de producao. O mecanismo de geracao usado e a rescrita: substituicaode uma sub-palavra por outra palavra. A rescrita e especificada por regrasde producao ou producoes: indicam como uma palavra pode ser substituıdapor outra. Estes sao os ingredientes principais da nocao de gramatica.

Definicao 4.1 (Gramatica) Uma  gramatica G e constituıda por quatro ti-pos de entidades:

1. Um alfabeto T  de sımbolos ditos  terminais.

2. Um alfabeto N , disjunto de  T , de sımbolos  nao-terminais. A uni˜ ao dos dois alfabetos escreve-se 

V  = T  ∪ N.

3. Um sımbolo n  ao-terminal S  ∈ N  chamado o sımbolo inicial da gram´ atica.

75

Page 77: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 77/172

4. Um conjunto finito P  de  producoes. Uma produc˜ ao e um par  (α, β ),

que em geral se escreve na forma 

α −→ β 

(ou, por vezes, α ::= β ), em que  α ∈ V ∗N V ∗ e  β  ∈ V ∗ (isto signi- fica que  α tem de conter pelo menos um sımbolo n˜ ao-terminal e  β  e arbitr´ aria). Diz-se que  α e a  cabeca e  β  e o corpo da produc˜ ao.

Costuma-se escrever G = (T , N , S , P  ) para tornar explıcitos todos os compo-nentes da gram´ atica  G.

Exemplo 4.2 A gramatica G = (T , N , S , P  ) seguinte sera usada em variosexemplos mais abaixo:

• T  = {+, =, 1};

• N  = {E , A , B};

• S  = E ;

• P  = { E  −→ +A ,

A −→ BAB ,

A −→ = ,

+B −→ B+ ,B −→ 1

}.

(Quando introduzirmos as gramaticas independentes do contexto veremosuma forma mais aligeirada de apresentar a definicao de gramaticas.) 2

Definicao 4.3 (Derivacao directa, rescrita) Seja  α −→ β  ∈ P  uma produc˜ ao e  γαδ  uma palavra contendo α como sub-palavra. A substituic˜ aoda ocorrencia de  α por β  chama-se  derivacao directa ou  rescrita de  γαδ  em γβ δ  e escreve-se 

γαδ  ⇒G γβδ.Havendo s´ o uma gram´ atica em considerac˜ ao, n˜ ao h´ a possibilidade de confus˜ aoe escreve-se simplesmente  γαδ  ⇒ γβ δ  omitindo o ındice  G.

De forma sucinta, pode dizer-se que uma derivacao directa consiste emsubstituir numa palavra uma ocorrencia da cabeca de uma producao peloseu corpo. Aplicando sucessivamente varias derivacoes directas obtem-seuma derivacao.

76

Page 78: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 78/172

Definicao 4.4 (Derivacao) Uma derivac˜ ao consiste numa sucess˜ ao de zero

ou mais derivac˜ oes directas. Mais precisamente, escreve-se α ⇒∗

G β 

(ou simplesmente  α ⇒∗ β ) se existirem  α0, α1, . . . , αn ∈ V ∗ tal que 

α = α0 ⇒ α1 ⇒ · · · ⇒ αn = β.

A sucess˜ ao anterior chama-se a  derivacao de  α em  β  e o n´ umero n de res-critas e o seu  comprimento. Quando se pretende evidenciar o comprimentoda derivac˜ ao p˜ oe-se 

α ⇒nG β.

A notac˜ ao α ⇒+

G β  significa que existe uma derivac˜ ao de comprimento dife-rente de zero.

Exemplo 4.5 Eis algumas derivacoes directas para a gramatica do Exem-plo ??, cujas producoes reproduzimos aqui para facilitar a consulta:

E  −→ +A ,

A −→ BAB ,

A −→ = ,

+B −→ B+ ,

B −→ 1 .

Em todos os casos estao assinalados a cabeca e o corpo da producao utilizada:

E  ⇒ +A, +A ⇒ +BAB, +BAB ⇒ B+AB.

Mostra-se a seguir uma derivacao da palavra 1 + 1 = 11 a partir dosımbolo inicial E , onde antes de cada rescrita se sublinha a cabeca (mas naoo corpo) da producao utilizada:

E  ⇒ +A ⇒ +BAB ⇒ +BBABB ⇒ +BB = BB ⇒ B + B = BB

⇒ 1 + B = BB ⇒ 1 + 1 = BB ⇒ 1 + 1 = 1B ⇒ 1 + 1 = 11

2

Observacao 4.6 Em geral, uma palavra pode ser rescrita de varias maneiras

diferentes. Por exemplo, a palavra +BB = BB tem cinco rescritas possıveis,+BB = BB ⇒ B + B = BB,

+BB = BB ⇒ +1B = BB,

+BB = BB ⇒ +B1 = BB,

+BB = BB ⇒ +BB = 1B,

+BB = BB ⇒ +BB = B1,

77

Page 79: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 79/172

onde se sublinhou a cabeca da producao utilizada em cada caso. Pela mesma

razao, uma derivacao a partir de uma palavra dada e uma entre variaspossıveis. Note-se, no entanto, que quando sao rescritas duas partes de umapalavra que nao se intersectam, como acontece em todos os casos acima ex-cepto nos dois primeiros, a ordem em que as rescritas sao efectuadas naoinflui no resultado final. Por essa razao, muitas derivacoes acabam por gerara mesma palavra sobre o alfabeto terminal, visto que s ao variantes umasdas outras que diferem apenas na ordem de aplicacao de rescritas indepen-dentes. Por exemplo, embora sejam muitas as derivacoes a partir da pala-vra +BB = BB , as palavras geradas sobre o alfabeto terminal sao apenas+11 = 11, 1 + 1 = 11 e 11+ = 11. Quando estudarmos as gramaticas in-dependentes do contexto veremos como e possıvel caracterizar as derivacoes“equivalentes” pelo facto de partilharem a mesma “arvore de derivacao”. 2

Propriedades 4.7 Com as notac˜ oes anteriores:

1. Se α −→ β  ∈ P , ent˜ ao α ⇒ β .

(Resulta de se fazer γ  = δ  = λ na definicao de rescrita.)

2. Para todo o α ∈ V ∗, α ⇒∗ α.

(E o caso n = 0 na definicao de derivacao.)

3. Se α ⇒∗ β  e  β  ⇒∗ γ , ent˜ ao α ⇒∗ γ .

(Imediato, pela definicao de derivacao.)Definicao 4.8 (Linguagem gerada) Se  G uma gram´ atica. O conjuntodas palavras que derivam de  α ∈ V ∗ e 

D(α) = {β  ∈ V ∗ : α ⇒∗ β }.

Restringindo-nos ao alfabeto terminal, obtemos a linguagem derivada por  α:

L(α) = {x ∈ T ∗ : α ⇒∗ x}.

A l inguagem gerada pela gramatica, L(G), e por definic˜ ao a linguagem L(S )derivada pelo sımbolo inicial  S , isto e,

L(G) = {x ∈ T ∗ : S  ⇒∗ x}.

Exemplo 4.9 Retomemos a gramatica do Exemplo ??, cujas producoes sereproduzem uma vez mais:

E  −→ +A ,

A −→ BAB ,

A −→ = ,

+B −→ B+ ,

B −→ 1 .

78

Page 80: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 80/172

Uma derivacao generica tem a forma

E  ⇒ +A ⇒ +BAB ⇒ +B2AB2 ⇒ · · · ⇒ +BnABn

⇒ +Bn = Bn ⇒ B + Bn−1 = Bn ⇒ · · · ⇒ Bk + Bn−k = Bn

⇒ · · · ⇒ 1k + 1n−k = 1n.

Apos a aplicacao da producao de E , aplica-se um certo numero de vezes (n)a primeira producao do A, seguida de uma aplicacao da segunda producao,obtendo-se E  ⇒∗ +Bn = Bn. Em seguida, trocam-se + e B um certo numerode vezes (k) usando a penultima producao e termina-se substituindo B por 1com a ultima producao. Bem entendido, esta ordem de rescritas nao e unica,em virtude de muitas delas serem independentes, mas e a mais sistematicae por isso e a que melhor se presta a compreender o que a gramatica gera.Nao e difıcil ver que toda a derivacao tem essencialmente esta forma, peloque a linguagem gerada e

L(E ) = {1k + 1n = 1k+n : k, n ≥ 0}

e pode ser interpretada como a “tabuada” da adicao em numeracao unaria (onumero natural n e representado em numeracao unaria por 1n; em particular,0 e representado por λ). 2

4.2 Classificacao de ChomskyA classificac˜ ao de Chomsky  das gramaticas agrupa-as em quatro categoriassegundo a forma das suas producoes.

Tipo 0

Nas gramaticas de tipo 0, as producoes nao estao sujeitas a qualquer res-tricao. Tem entao a forma geral

α −→ β 

com α ∈ V ∗

N V ∗

e β  ∈ V ∗

. Para acentuar este facto, estas gramaticaschamam-se por vezes n˜ ao-restringidas . Bem entendido, toda a gramatica ede tipo 0.

Tipo 1

Nas gramaticas de tipo 1 as producoes tem a forma

αAβ  −→ αγβ 

79

Page 81: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 81/172

com α, β  ∈ V ∗ e γ  ∈ V + (γ  = λ). A intuicao e que o sımbolo nao-terminal

A pode ser substituıdo por γ  = λ desde que A esteja rodeado a esquerda porα e a direita por β  (tambem se diz que a substituicao e feita no “contexto”(α, β ), que parmanece inalterado pela operacao).

As gramaticas do tipo 1, em que todas as producoes tem a forma indi-cada com a possıvel excepcao da producao S  −→ λ para o sımbolo inicialda gramatica se ele nao ocorrer no corpo de nenhuma producao, ainda de-pendentes do contexto, em virtude da interpretacao dada as suas producoes.Claramente, as gramaticas do tipo 1 sao tambem do tipo 0.

Tipo 2

As gramaticas de tipo 2 tem todas as producoes da forma

A −→ α

com A ∈ N  e α ∈ V ∗ (note-se que pode ser α = λ). Estas gramaticastambem se chamam independentes do contexto, visto que o sımbolo nao-terminal A pode ser sempre substituıdo pela palavra α (que pode ser vazia)independentemente do contexto em que A se encontre.

Se nas producoes de tipo 1 nao se tivesse exigido que γ  = λ, as producoesde tipo 2 seriam um caso particular daquelas, bastando para isso tomarα = β  = λ. A unica excepcao sao as producoes da forma A −→ λ, que sao

de tipo 2 mas nao de tipo 1. Assim, uma gramatica de tipo 2 pode nao serde tipo 1, nomeadamente se contiver producoes A −→ λ com A = S .

Tipo 3

Finalmente, as producoes de tipo 3 tem uma de duas formas,

A −→ x ou A −→ xB,

com A, B ∈ N  e x ∈ T ∗. Estas gramaticas chamam-se tambem lineares di-reitas , visto que o corpo das suas producoes contem no maximo um sımbolonao-terminal, o qual ocorre o mais a direita possıvel. Como as producoes

de tipo 3 sao de tipo 2, as gramaticas lineares direitas sao independentesdo contexto. A forma das producoes e a designacao das gramaticas sugeremuma relacao estreita com os sistemas de equacoes lineares direitos, e por con-seguinte com os automatos finitos. De facto, mostraremos mais adiante queexistem “traducoes” muito directas , em ambos os sentidos, entre gramaticaslineares direitas e AFND que preservam as linguagens gerada e reconhecida.

Que se pode dizer sobre as relacoes entre as classes de linguagens geradaspor estes tipos de gramaticas?

80

Page 82: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 82/172

Para i = 0, 1, 2, 3, seja Li a classe das linguagens geradas pelas gramaticas

do tipo i. Tem-se as seguintes inclusoes estritas :

L3 L2 L1 L0.

As inclusoes (nao estritas) L3 ⊆ L2 e L1 ⊆ L0 sao faceis de estabelecer, vistoque as producoes dos tipos 3 e 1 sao casos particulares, respectivamente,das producoes dos tipos 2 e 0. A inclusao L2 ⊆ L1 sera vista mais adiante,bem como as inclusoes estritas L3 L2 L1. A inclusao estrita L1 L0

nao sera aqui estabelecida, porque no que se segue estaremos exclusivamenteinteressados nas gramaticas independentes do contexto (tipo 2) e no casoparticular das gramaticas lineares direitas (tipo 3).

Convencao importante: A partir deste ponto,quando nos referirmos a uma gramatica sem especificaro seu tipo, teremos sempre em mente uma gramaticaindependente do contexto, que se abrevia para GIC.

4.3 Derivacoes em GIC

Ha duas propriedades que as derivacoes em GIC satisfazem e que sao usadasinumeras vezes sem que isso seja referido explicitamente. A primeira pro-priedade capta a ideia de que as rescritas se mantem validas se as palavrasrescritas forem inseridas em contextos maiores. Mais precisamente, se α de-rivar β , entao tambem o faz em qualquer contexto (θ, σ), isto e, θασ derivaθβσ.

Proposicao 4.10 Para todos os  α , β , θ , σ ∈ V ∗,

α ⇒∗ β  implica  θασ ⇒∗ θβσ.

Demonstracao No caso em que α ⇒∗ β  e uma derivacao directa

α = γAδ  ⇒ γρδ  = β 

com A −→ ρ ∈ P  tem-se, evidentemente, a derivacao directa

θασ = θγAδσ ⇒ θγρδσ = θβσ,

logo θασ ⇒∗ θβσ.No caso geral, ha uma derivacao

α = α0 ⇒ α1 ⇒ · · · ⇒ αn = β.

81

Page 83: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 83/172

Aplicando a cada derivacao directa a conclusao anterior, obtem-se

θασ = θα0σ ⇒ θα1σ ⇒ · · · ⇒ θαnσ = θβσ,

e uma vez mais se conclui que θασ ⇒∗ θβσ. 2

Podemo-nos perguntar se toda a palavra derivada a partir de θασ e daforma θβσ em que α deriva β . Mas isto pode nao ser verdade, porque querθ quer σ podem conter sımbolos nao-terminais que sao rescritos durante aderivacao, e portanto esta nao se fica so a dever a uma derivacao de α. Noentanto, se θ e σ contiverem apenas sımbolos terminais, ja isso nao acontece ea derivacao decorre mesmo de uma derivacao de α, como o proximo resultadomostra.

Proposicao 4.11 Sejam  α, γ  ∈ V ∗ e  x, y ∈ T ∗. Ent˜ ao

xαy ⇒∗ γ  implica  ∃ β  ∈ V ∗ :γ  = xβy,

α ⇒∗ β.

Demonstracao Se xαy ⇒∗ γ  tem-se

xαy ⇒ xα1y ⇒ · · · ⇒ xαny = γ,

em que cada α se rescreve no α seguinte visto que x e y nao tem ocorrenciasde sımbolos nao-terminais. Tem-se assim

α ⇒ α1 ⇒ · · · ⇒ αn.

Fazendo β  = αn, conclui-se α ⇒∗ β , como se pretende. 2

4.4 Arvores de derivacao

As derivacoes numa gramatica podem ser apresentadas sob a forma de uma

arvore, chamada uma arvore de derivacao. As arvores de derivacao tem variasvantagens sobre as derivacoes quando se trata de captar a estrutura daspalavras derivadas, estrutura essa que e essencial para atribuir significado aspalavras, como veremos. Antes de dar a definicao geral vamos apresentar umexemplo, mas primeiro e conveniente introduzir uma convencao que permitesimplificar a escrita de gramaticas particulares.

82

Page 84: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 84/172

Convencao 4.12 Em exemplos as GIC serao representadas apenas pelas

suas producoes. Por convencao, os sımbolos nao-terminais sao as cabecas dasproducoes, o sımbolo inicial e a cabeca da primeira producao e os sımbolosterminais sao os restantes sımbolos que ocorrem nos corpos das producoes.

E costume tambem adoptar uma convencao que simplifica a escrita dasproducoes. Se

A −→ α1, A −→ α2, . . . , A −→ αn

forem todas as producoes existentes na gramatica para o sımbolo nao-terminalA, a sua escrita abrevia-se para

A −→ α1 | α2 | · · · | αn.

Esta expressao pode ler-se da seguinte maneira: um A e um α1 ou um α2 ou. . . um αn.

Consideremos por exemplo a gramatica

E −→E + T 

E −→T 

T −→T  ∗ F 

T −→F 

F −→(E )F −→a

Trata-se de uma gramatica muito simplificada de expressoes aritmeticas,onde as expressoes basicas (variaveis e numeros) estao uniformemente repre-sentadas pelo sımbolo a. De acordo com as nossas convencoes, os sımbolosnao-terminais sao {E , T , F  }, sendo E  o sımbolo inicial, e os sımbolos termi-nais sao {+, ∗, (, ), a}. Com a escrita abreviada das producoes, a gramaticafica

E −→E + T  | T 

T −→T  ∗ F  | F 

F −→(E ) | a

Esta gramatica e algumas variantes serao usadas ao longo desta seccao. 2

Exemplo 4.13 Consideremos de novo a gramatica

E −→E + T  | T 

T −→T  ∗ F  | F 

F −→(E ) | a

83

Page 85: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 85/172

As producoes podem ser representadas por arvores:

 { { { { { { { {

 g g g g

 g g g g

E  + T T 

 { { { { { { { {

 g g g g

 g g g g

T  ∗ F F 

 | | | | | | | | |

 f f f f

 f f f f

 f F 

( E  ) a

A cabeca de cada producao etiqueta a raiz e o corpo as folhas, ordenada-mente, da esquerda para a direita. E importante observar que cada no eetiquetado por um e um so sımbolo. Quando existe uma producao de corpovazio, A −→ λ, representa-se por

A

λ

Uma arvore de derivacao constroi-se expandindo uma folha etiquetadapor um sımbolo nao-terminal pela arvore de uma producao para esse sımbolo.Como exemplo, tem-se a seguinte arvore de derivacao:

       

 t t t t

 t t t

E  + T 

       

 t t t t

 t t t

T T  ∗ F 

F F  a

a a

As folhas desta arvore estao etiquetadas por sımbolos terminais e os nosinteriores por sımbolos nao-terminais. Cada no interior, juntamente com osseus sucessores imediatos, constitui uma arvore de producao.

84

Page 86: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 86/172

Concatenando as etiquetas das folhas da esquerda para a direita obtem-se

uma palavra sobre o alfabeto terminal, neste caso a palavra a + a ∗ a. Nao edifıcil ver que esta palavra pode ser derivada a partir da gramatica. A partirda arvore, alias, podem extrair-se varias derivacoes desta palavra. Duas delastem especial interesse. Comecando na raiz e seleccionando sempre o sımbolomais a esquerda ainda nao expandido para ser rescrito obtem-se a derivac˜ aoesquerda  da palavra:

E  ⇒ E + T  ⇒ T  + T  ⇒ F  + T  ⇒ a + T 

⇒ a + T  ∗ F  ⇒ a + F  ∗ F  ⇒ a + a ∗ F 

⇒ a + a ∗ a

Rescrevendo sempre o sımbolo nao-terminal mais a direita, obtem-se umaderivac˜ ao direita :

E  ⇒ E + T  ⇒ E + T  ∗ F  ⇒ E + T  ∗ a

⇒ E + F  ∗ a ⇒ E + a ∗ a ⇒ T  + a ∗ a

⇒ F  + a ∗ a ⇒ a + a ∗ a

Muitas outras derivacoes da mesma palavra sao possıveis, variando a escolhado sımbolo a rescrever. Uma vantagem da arvore de derivacao e que e umarepresentacao unica que inclui todas as derivacoes possıveis. 2

Definicao 4.14 (´Arvore de derivacao) Seja  G = (T , N , S , P  ) uma gra-m´ atica. Uma  arvore de derivacao de  G caracteriza-se do seguinte modo:

• ´ E uma ´ arvore finita, n˜ ao vazia e ordenada. Esta ´ ultima condic˜ ao sig-nifica que os sucessores imediatos de cada n´ o se consideram totalmente ordenados. Em representac˜ oes gr´ aficas, os n´ os desenham-se da es-querda para a direita na respectiva ordem.

• A raiz e etiquetada por um elemento de  N .

• Os n´ os interiores s˜ ao etiquetados por elementos de  N , que tambem po-dem etiquetar folhas. Se um n´ o interior tiver etiqueta  A e os sucesso-

res imediatos, na ordem esquerda-direita, tiverem etiquetas X 1, . . . , X  n,ent˜ ao A −→ X 1 · · · X n e uma produc˜ ao da gram´ atica.

• Os n´ os n˜ ao etiquetados por elementos de  N , que s˜ ao necessariamente  folhas, s˜ ao etiquetados por elementos de  T  ∪ {λ}.

Note-se que um so no etiquetado por qualquer A ∈ N  e uma arvore dederivacao, e e a mais simples possıvel visto que a arvore nao pode ser vazia.

85

Page 87: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 87/172

Definicao 4.15 (Fronteira) Chama-se  fronteira de uma ´ arvore de deriva-

c˜ ao a palavra que resulta concatenando as etiquetas das suas folhas da es-querda para a direita, isto e, a sequencia de folhas que se obtem no percursoprefixo da ´ arvore.

Representaremos esquematicamente por

A

ʯʯʯʯʯʯ

 T T T T

 T T

α

a arvore de derivacao de raiz (etiquetada por) A e fronteira α.A propriedade seguinte relaciona derivacoes e arvores de derivacao.

Proposicao 4.16 Sejam  A ∈ N  e  α ∈ V ∗. Tem-se  A ⇒∗ α sse  α for a  fronteira de uma ´ arvore de derivac˜ ao de raiz  A.

Demonstracao Vamos considerar separadamente os dois casos da equiva-lencia.

Caso “se”:Suponhamos que e dada uma arvore de derivacao de raiz A e fronteira

α e mostremos que A ⇒∗ α. Se a arvore se reduz a um no, a raiz e igual

a fronteira, isto e, A = α. Tem-se A ⇒

A, logo A ⇒

α. No caso geral aarvore tem a forma

A

      

  

 v v v v v v

 v v

X 1

 Ð Ð Ð Ð  b b

 b b. . . X n

     

 c c c c

 c

α1 αn

em que A −→ X 1 · · · X n e uma producao e α = α1 · · · αn. Assumindo, porinducao na altura da arvore, que X 1 ⇒∗ α1, . . . , X  n ⇒∗ αn, deduz-se queX 1 · · · X 

n⇒∗ α1 · · · α

n. Como A ⇒ X 1 · · · X 

ne α = α1 · · · α

n, conclui-se que

A ⇒∗ α.Caso “so se”:Agora vamos supor que A ⇒∗ α e vamos mostrar que existe uma arvore

de derivacao de raiz A e fronteira α. A demonstracao e por inducao nocomprimento da derivacao A ⇒∗ α.

Se o comprimento for zero, tem de ser α = A, e a arvore procurada temum unico no etiquetado por A.

86

Page 88: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 88/172

Se o comprimento for n +1, existe uma producao A −→ X 1 · · · X n tal que

X 1 · · · X n ⇒∗

α e o comprimento desta ultima derivacao e n. Por uma pro-priedade das derivacoes, existem α1, . . . , αn tal que X 1 ⇒∗ α1, . . . , X  n ⇒∗ αn

e α1 · · · αn = α. (Note-se que se algum X i ∈ T , entao αi = X i.) Como cadaderivacao X i ⇒∗ αi tem comprimento ≤ n, podemos supor, pela hipoteseindutiva, que existem arvores de derivacao

X i

 × × × × × × ×

 V V V V

 V V V

αi

para i = 1, . . . , n. Mas entao a arvore

A

      

  

 v v v v v v

 v v

X 1

 Ð Ð Ð Ð  b b

 b b. . . X n

     

 c c c c

 c

α1 αn

satisfaz as condicoes requeridas. Fica terminada a demonstracao. 2

Este resultado mostra que a linguagem gerada por uma gramatica G eo conjunto de todas as palavras x ∈ T ∗ para as quais existe uma arvore de

derivacaoS 

ʯʯʯʯʯʯ

 T T T T

 T T

x

de raiz S  (sımbolo inicial da gramatica) e fronteira x. Esta arvore e impor-tante porque confere a x uma estrutura que e usada para lhe dar significado.

4.5 Consideracoes semanticas

Nesta seccao fazemos uma primeira abordagem ao tema da atribuicao de si-gnificado as palavras de uma linguagem (semantica da linguagem) com basena estrutura que as palavras adquirem atraves das suas arvores de derivacao.Ilustraremos esta observacao com gramaticas de expressoes aritmeticas (masgeneralizavel a qualquer tipo de expressoes), e discutiremos nomeadamentequestoes de precedencia de operadores e de ordem de avaliacao de operacoes.

87

Page 89: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 89/172

Avaliacao de expressoes

Consideremos uma variante da gramatica que temos vindo a utilizar emexemplos, excepto que em vez de a vamos ter os dıgitos decimais:

E  −→ E + T  | T 

T  −→ T  ∗ F  | F 

F  −→ (E ) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

A arvore de derivacao de 3 + 2 ∗ 5 e a seguinte:

       

 t t t t

 t t t

E  + T 

       

 t t t t

 t t t

T T  ∗ F 

F F  5

3 2

O valor numerico que a expressao aritmetica 3 + 2 ∗ 5 representa pode serdirectamente calculado a partir da sua arvore de derivacao:

Partindo das folhas em direccao a raiz, calcula-se o valor de cada

no interior da maneira evidente em funcao dos valores dos seusfilhos, sendo que o valor de uma folha etiquetada com um dıgitoe o valor desse dıgito.

Repete-se a seguir a arvore de derivacao anterior, indicando junto de cadano o seu valor:

 n n n n n n

 n n n n

      

      13

 n n n n n n

      

E  3 1 1 + T 

 m m m m m m

 m m m m m

      

      10

 m m m m m m

      

T  3 1 1 T  2

 1 1 ∗ F  5

 1 1

F  3 1 1 F  2

 1 1 5 5

3 3 2 2

No capıtulo sobre gramaticas de atributos veremos como se pode definircom precisao a avaliacao de expressoes (e de muitas outras caracterısticassemanticas de linguagens), mas para os nossos objectivos aqui esta descricaoinformal e suficiente.

88

Page 90: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 90/172

Prioridade na avaliacao de operadores

O calculo do valor da expressao 3 + 2 ∗ 5 efectuou em primeiro lugar a mul-tiplicacao 2 ∗ 5 = 10 e so depois a adicao 3 + 10 = 13, como seria desej avel.Mas como se conseguiu esse efeito?

Olhando para a arvore de derivacao que ilustra esse calculo ve-se que, nosentido das folhas para a raiz, a operacao ∗ e encontrada antes de + e osoperandos da adicao so ficam completamente conhecidos depois de ter sidoefectuada a multiplicacao.

Na gramatica esse efeito consegue-se separando as producoes que intro-duzem adicoes das que produzem multiplicacoes e hierarquizando-as. Aproducao que introduz as adicoes e E  −→ E + T . Esta producao e usada em

primeiro lugar para gerar todas as adicoes que se desejem e so depois se usaa producao E  −→ T  para gerar multiplicacoes a partir de T . Desta formagarante-se que as multiplicacoes fiquem mais proximas das folhas e por issosejam avaliadas antes das adicoes.

E curioso observar que nao seria difıcil conceber uma gramatica que tro-casse a prioridade convencional dos operadores. Na verdade, bastaria, como eevidente, trocar o + com o ∗, mas na gramatica abaixo trocaram-se tambemT  e F  para manter o significado convencional de ‘termo’ e de ‘factor’, res-pectivamente elemento de uma soma e elemento de um produto. Eis entao agramatica:

E  −→ E ∗ F  | F 

F  −→ F  + T  | T 

T  −→ (E ) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Esta gramatica gera a mesma linguagem que a anterior. Na figura seguintemostra-se a arvore de derivacao de 3 + 2 ∗ 5 juntamente com a sua avaliacao:

 n n n n n n

 n n n n

      

      25

 n n n n n n

      

E  5 1 1 ∗ F  5

 1 1

 n n n n n n

 n n n n

      

     5

 n n n n n n

       T  5 1 1

F  3 1 1 + T  2

 1 1 5 5

T  3 2 2

3 3

89

Page 91: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 91/172

Este exemplo mostra que nao basta em geral conceber uma gramatica

para gerar a sintaxe da linguagem em que estamos interessados, e importanteque a gramatica seja concebida para ter em conta os aspectos semanticospretendidos.

Regressando a gramatica com a prioridade convencional dos operadores,observemos que esta disponıvel o mecanismo habitual de inverter a ordem deavaliacao quando isso for desejavel, que e o uso de parenteses. Na expressao(3 + 2) ∗ 5 os parenteses obrigam a efectuar a adicao antes da multiplicacao.Eis a sua arvore de derivacao:

 n n n n n n

 n n n n

 w w w w w w

 w w w

T  ∗ F 

 p p p p p p

 p p p p

 y y y y y y

 y y y y y a

( E 

 Ð Ð Ð Ð Ð

 b b b b

 b )

E  + T 

T F 

F  a

a

Operadores unarios

Em geral, os operadores unarios (com um so argumento), quando existem, saoos que tem maior prioridade. E o que acontece, por exemplo, nas expressoesaritmeticas com o operador ‘−’ que calcula o simetrico de um numero. Deacordo com a discussao apresentada acima, nao e difıcil ver que este operadorpode ser introduzido numa gramatica de expressoes aritmeticas na seguinteforma:

E  −→ E + T  | T 

T  −→ T  ∗ F  | F 

F  −→ P  | −P 

P  −→ (E ) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

90

Page 92: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 92/172

Esta gramatica garante que uma expressao como −1 + 3 e calculada com o

seu valor correcto, que e 2, em vez do valor incorrecto −4 que se obteria sese efectuasse em primeiro lugar a adicao (desenhe a arvore de derivacao!).

Ordem de avaliacao

Numa expressao a + a + a podemos querer que ela seja avaliada da esquerdapara a direita ou da direita para a esquerda. No primeiro caso usamos umagramatica da forma

E  −→ a | E + a

Intuitivamente, ao avaliar o + numa expressao E +a, todas as adicoes geradaspor E  — a esquerda do + que ocorre na producao — tem de ser avaliadas

antes. Podemos observar essa situacao na arvore de derivacao de a + a + a:

 ~ ~ ~ ~ ~

 c c c c

 c

 ~ ~ ~ ~ ~

 d d d d

 d + a

E  + a

a

Se pretendessemos a avaliacao da direita para a esquerda usarıamos agramatica

E  −→ a | a + E 

A expressao a + E  mostra que antes de avaliar o + que l a ocorre e precisoavaliar as adicoes geradas por E . Como estas se situam a direita do + queestamos a considerar, a avaliacao faz-se da direita para a esquerda.

A arvore de derivacao de a + a + a seria:

     

 d d d d

 d

a + E 

 ~ ~ ~ ~ ~

 d d d d

 d

a + E 

a

4.6 Ambiguidade

Ate aqui assumimos implicitamente que cada palavra tinha uma so arvorede derivacao. O que acontece quando existem duas arvores de derivacaodiferentes para a mesma palavra?

91

Page 93: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 93/172

Definicao 4.17 (Gramatica ambıgua) Uma gram´ atica G diz-se  ambıgua

se existir uma palavra sobre  V  = T  ∪ N  que tem (pelo menos) duas ´ arvores de derivac˜ ao diferentes.

Nao e difıcil encontrar exemplos de gramaticas ambıguas. Uma pri-meira classe de exemplos tem a ver com situacoes em que e necessario gerarsequencias de elementos. Por exemplo, a gramatica de que se mostra o frag-mento

S  −→ A | SS 

A −→ · · ·

e ambıgua, como o mostram as duas arvores de derivacao seguintes da palavraAAA:

     

 d d d d

 d

     

 c c c c

 c S 

S S A

A A

 ~ ~ ~ ~ ~

 c c c c

 c

S S 

     

 c c c c

 c

A S S 

A A

Para gerar AAA e preciso usar em primeiro lugar a producao S  −→ SS , o querequer decompor a palavra AAA em duas e gerar cada uma delas por S . Oproblema e que ha duas formas de decompor AAA, donde a ambiguidade. O

problema resolve-se estipulando uma forma unica de efectuar a decomposicao.Por exemplo, pode-se dizer que a primeira palavra tem apenas um A e a outraos restantes. Isto levaria a substituir a producao S  −→ SS  por S  −→ AS .Outra solucao, simetrica desta, seria dizer que e a segunda palavra que temapenas um A, o que nos levaria a nova producao S  −→ SA. Assim, agramatica anterior poderia ser substituıda por qualquer das seguintes:

S  −→ A | AS S  −→ A | SA

A −→ · · · , A −→ · · · ,

assumindo que as producoes de A nao introduzem S  de novo.

Ha muitas variantes da gramatica anterior. O problema seria essencial-mente o mesmo se se pudesse gerar a sequencia vazia ou se os elementos dasequencia estivessem separados por vırgulas:

S  −→ λ | A | S, S 

No caso das expressoes aritmeticas poderıamos ter, por exemplo,

E  −→ a | E + E 

92

Page 94: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 94/172

e a segunda producao poderia ser substituıda por E  −→ E +a ou E  −→ a+E 

consoante se previlegiasse a avaliacao da esquerda para a direita ou da direitapara a esquerda.

Se tivessemos expressoes aritmeticas com mais de um operador, ao remo-ver a ambiguidade terıamos de ter em atencao a prioridade dos operadores.Consideremos por exemplo a gramatica:

E  −→ E + E  | E ∗ E  | (E ) | a

Os termos (E ) e a nao introduzem ambiguidade visto que E  esta rodeadapor parenteses. Isolando estes termos e representando-os por F  chega-se agramatica:

E  −→ E + E  | E ∗ E  | F F  −→ (E ) | a

A linguagem gerada pelas producoes de E  gera sequencias de F  separadaspor + ou por ∗, como por exemplo

F  + F  + F  ∗ F  + F  ∗ F.

podıamos remover a ambiguidade imaginando que estas expressoes eram de-compostas de forma a que a segunda expressao fosse F , para se ter a avaliacaoda esquerda para a direita. A gramatica a que se chegava seria:

E  −→ F  | E + F  | E ∗ F 

F  −→ (E ) | a

O problema com esta gramatica e que nem sempre se quer avaliar as ex-pressoes na ordem estrita esquerda-direita quando ha em jogo operadores dediferentes prioridades. A arvore de derivacao seguinte da palavra a + a ∗ a

ilustra esta afirmacao:

 ~ ~ ~ ~ ~

 d d d d

 d

 ~ ~ ~ ~ ~

 d d d d d

∗ F 

E  + F  a

F  a

a

A alternativa e olhar para a sequencia de F  separados por + e ∗ e ter umaleitura a dois nıveis. Num primeiro nıvel decompomos a sequencia em sub-

93

Page 95: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 95/172

sequencias separadas por + e num segundo nıvel consideramos essas sub-

sequencias como sequencia de F  separadas por ∗:

F  ∗ · · · ∗ F    

+ F  ∗ · · · ∗ F    

+ · · · + F  ∗ · · · ∗ F    

Por exemplo, para a sequencia apresentada acima tem-se

F   

+ F   

+ F  ∗ F    

+ F  ∗ F    

Assim, E  gera sequencias de T  separadas por + e T  gera sequencias de F 

separadas por ∗, como se mostra na gramatica seguinte:

E  −→ T  | E + T 

T  −→ F  | T  ∗ F 

F  −→ (E ) | a

Problemas de ambiguidade tambem surgem com operadores unarios, comona gramatica

E  −→ a | E + a | −E 

Aqui o problema e que quando se escreve −a + a nao se sabe se o sinal ‘−’afecta toda a expressao ou somente o primeiro a:

E  ~ ~ ~ ~ ~

 d d d d

 d

− E 

 ~ ~ ~ ~ ~

 c c c c

 c

E  + a

a

E  ~ ~ ~ ~ ~

 c c c c

 c

 ~ ~ ~ ~ ~

 d d d d

 d + a

− E 

a

Neste caso, atendendo a que ‘−’ tem prioridade superior a +, bastaria subs-tituir a producao E  −→ −E  por E  −→ −a. Numa situacao um pouco maisgeral viu-se num exemplo anterior como introduzir esta operacao unaria.

Nesta passagem nao muito sistematica por algumas fontes de ambiguidadeconvem referir o uso excessivo de λ. A gramatica

S  −→ λ | AS 

A −→ λ | a

gera todas as sequencias de a, incluindo a vazia. Para gerar uma sequencia decomprimento k, pode comecar por gerar uma sequencia de A de comprimenton ≥ k e depois, usando a producao A −→ λ, eliminar n−k desses A. Existem

94

Page 96: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 96/172

assim muitas maneiras de gerar, por exemplo, a palavra a, tres das quais se

ilustram a seguir:

     

 c c c c

 c

A S 

a λ

 ~ ~ ~ ~ ~

 c c c c

 c

A S 

     

 c c c c

 c

a A S 

λ λ

 ~ ~ ~ ~ ~

 c c c c

 c

A S 

     

 c c c c

 c

λ A S 

a λ

A solucao neste caso seria nao permitir apagar A para obrigar a gerar onumero exacto requerido, o que se consegue eliminando a producao A −→ λ.

A gramatica ficariaS  −→ λ | AS 

A −→ a

Os exemplos anteriores mostram que uma mesma linguagem pode tergramaticas ambıguas e gramaticas nao-ambıguas. O que acontece se tods asgramaticas para uma mesma linguagem forem ambıguas?

Definicao 4.18 (Linguagem inerentemente ambıgua) Uma linguagem diz-se  inerentemente ambıgua se toda a gram´ atica que gera a linguagem for ambıgua.

Uma linguagem inerentemente ambıgua e{aibic j : i, j ≥ 1} ∪ {aib jc j : i, j ≥ 1}.

Nao procuraremos justificar esta afirmacao. Uma explicacao intuitiva poderaser que a linguagem exige metodos diferentes para gerar cada uma das sub-linguagens que entram na sua definicao, mas entao as palavras aibici (i ≥ 1)pertencem a ambas as sub-linguagens, e por conseguinte podem ser geradasde duas maneiras diferentes.

4.7 Gramaticas lineares direitas e automatos

finitos

Nesta seccao vamos mostrar como se passa de uma gramatica linear direita(GLD) a um automato finito (AF) que reconhece a linguagem gerada pelagramatica e vice-versa. Recordemos que numa GLD as producoes tem aforma A −→ x ou A −→ xB com A, B ∈ N  e x ∈ T ∗. Para relacionarGLD com AF e conveniente dispor de uma forma ainda mais simplificadadas producoes, o que e objecto da propriedade seguinte.

95

Page 97: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 97/172

Proposicao 4.19 Toda a GLD  G = (T , N , S , P  ) pode ser transformada 

numa GLD  G

tal que  L(G) = L(G

) e as produc˜ oes de  G

s˜ ao da forma 

A −→ λ, A −→ B ou  A −→ aB

com A, B ∈ N  e  a ∈ T .

Demonstracao A demonstracao e um algoritmo para transformar G emG que se executa em dois passos.

1o¯ passo

Seja A −→ x uma producao com x ∈ T +, isto e, x ∈ T ∗ mas x = λ. Estetipo de producoes nao e permitido em G. Consequentemente, retiramos deP  a producao A −→ x e em sua substituicao acrescentamos as producoes

A −→ xB e B −→ λ onde B e um novo sımbolo nao-terminal (“novo”no sentido em que nao existia previamente em V ). Mais formalmente, estaoperacao consiste em definir a gramatica

G0 = (T, N 0, S , P  0),

em queN 0 = N  ∪ {B} com B ∈ V, e

P 0 = (P  − {A −→ x}) ∪ {A −→ xB,B −→ λ}.

E facil concluir que L(G0) = L(G). Com efeito, para ver que L(G) ⊆ L(G0)

observe-se que toda a palavra sobre T  derivada em G pode ser derivada emG0. Para tal, substitui-se cada rescrita wA ⇒ wx em G em que e usada aproducao A −→ x (necessariamente a ultima rescrita das derivacoes em queocorre) por wA ⇒ wxB ⇒ wx em G0. A verificacao de que L(G0) ⊆ L(G)e semelhante. Temos de ver que toda a palavra sobre T  derivada em G0

tambem e derivada em G. Em qualquer derivacao de G0, se qualquer umadas novas producoes for usada, entao tem de ser as duas usadas em bloco,B −→ λ imediatamente a seguir a A −→ xB. A razao de ser deste facto eque sendo B um novo sımbolo, as duas unicas producoes em que ocorre (nacabeca ou no corpo) sao as novas producoes. Assim, obtem-se uma derivacaoem G substituindo wA ⇒ wxB ⇒ wx por wA ⇒ wx.

Para finalizar o primeiro passo, repete-se esta operacao ate que nao exis-tam mais producoes da forma A −→ x com x ∈ T +. Seja

G1 = (T, N 1, S , P  1)

a gramatica a que se chegou. Como acabou de se ver, tem-se L(G1) = L(G).Por outro lado, as producoes desta gramatica tem a forma

A −→ λ ou A −→ xB.

96

Page 98: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 98/172

Resta-nos eliminar estas ultimas em que |x| > 1, substituindo-as por producoes

com a forma requerida.2o¯ passo

Seja A −→ a1a2 · · · anB uma producao de G1 com a1, a2, . . . , an ∈ T  en > 1. Esta producao elimina-se substituindo-a pelas producoes

A −→ a1A1

A1 −→ a2A2

...An−1 −→ anB

onde A1, A2, . . . , An−1 sao novos sımbolos nao-terminais. Seja G2 a gramati-

ca assim obtida (cuja definicao mais formal se deixa como exercıcio). Averificacao de que L(G2) = L(G1) faz-se como no passo anterior. Assim, aderivacao directa

xA ⇒ xa1a2 · · · anB

em G1 usando a producao eliminada corresponde em G2 a derivacao

xA ⇒ xa1A1 ⇒ xa1a2A2 ⇒ · · · ⇒ xa1 · · · an−1An−1 ⇒ xa1 · · · anB.

Inversamente, as novas producoes em G2 tem de ser usadas em bloco comona derivacao anterior, visto que A1, A2, . . . , An−1 sao novos sımbolos que so

ocorrem nas novas producoes, e isso corresponde a derivacao directa xA ⇒xa1a2 · · · anB em G1. Por este processo de traducao em ambos os sentidosse ve que G1 e G2 derivam as mesmas palavras sobre T , como se pretende.Iterando este passo ate nao existirem mais producoes da forma indicada, fica-se com uma GLD G tal que L(G) = L(G) e cujas producoes tem a formadesejada. 2

Depois de dar um exemplo, estamos em condicoes de relacionar GLD eAFND.

Exemplo 4.20 A GLD

S  −→ aS  | cc | AA −→ bcA | λ

transforma-se ao fim do primeiro passo em

S  −→ aS  | ccB | A

B −→ λ

A −→ bcA | λ

97

Page 99: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 99/172

Depois do segundo passo obtem-se finalmente

S  −→ aS  | cB1 | A

B1 −→ cB

B −→ λ

A −→ bA1 | λ

A1 −→ cA

2

Proposicao 4.21 (De GLD para AFND) Para toda a GLD G, existe um AFND  M  tal que  L(M ) = L(G).

Demonstracao Suponhamos que toda a producao em G = (T , N , S , P  )tem a forma A −→ λ ou A −→ aB com A, B ∈ N  e a ∈ T  ∪ {λ}. (Se G naotiver essa forma, transforma-se primeiro numa gramatica que a tenha usandoa proposicao anterior.) O AFND M  = (T , Q , q  I , δ , F  ) define-se como segue:

Q = N,

q I  = S,

δ (A, a) = {B : A −→ aB ∈ P }, A ∈ N, a ∈ T  ∪ {λ},

F  = {A : A −→ λ ∈ P }.

E facil ver que a toda a derivacao

S  ⇒ a1A1 ⇒ a1a2A2 ⇒ · · · ⇒ a1 · · · anAn ⇒ a1 · · · an

em G corresponde um percusro

q I  = S a1−→ A1

a2−→ A2 · · ·an−→ An ∈ F 

em M  e vice-versa, logo L(M ) = L(G). 2

Exemplo 4.22 A GLD

S  −→ aS  | T T  −→ bT  | λ

corresponde o AFND

   /   / GFED  @ABC S λ    /   /

a

 u u GFED  @ABC  ?>=<  89:; T 

b

 u u

A derivacaoS  ⇒ aS  ⇒ aT  ⇒ abT  ⇒ ab

98

Page 100: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 100/172

na gramatica tem o correspondente percurso

S a

−→ S λ

−→ T b

−→ T.

no automato. 2

Proposicao 4.23 (De AFND para GLD) Para todo o AFND  A, existe uma GLD  G tal que  L(G) = L(A).

Demonstracao Seja A = (T , Q , q  I , δ , F  ) um AFND. Define-se a GLDG = (T , N , S , P  ) por

N  = Q,

S  = q I ,

P  = {q  −→ ap : p ∈ δ (q, a)}∪{q  −→ λ : q  ∈ F }.

A verificacao de que L(G) = L(A) e como na Proposicao ??. 2

Exemplo 4.24 A figura seguinte mostra um automato e a gramatica quedele se extrai:

   /   / ?>=<  89:; q 

b

   )   )

a   

 ?>=<  89:;  7654  0123  p

b

 i i

a

 t t ⇒ q  −→ aq  | bp p −→ λ | bq  | ap

Note-se que se se passasse de novo da gramatica ao automato usando a cons-trucao da Proposicao ?? obtinha-se o automato de que se partiu. Se seefectuassem as passagens GLD → AFND → GLD, a gramatica final seriaigual a inicial. 2

4.8 Propriedades de fecho das linguagens in-

dependentes do contextoProposicao 4.25 (Fecho para as operacoes regulares) Se L e L  forem linguagens independentes do contexto, ent˜ ao L ∪ L, L.L e  L∗ s˜ ao indepen-dentes do contexto.

Demonstracao Suponhamos que G = (T , N , S , P  ) e G = (T, N , S , P )(mesmo T ) sao GIC tais que L = L(G) e L = L(G). Podemos supor,sem perda de generalidade, que N  ∩ N  = ∅, porque se isso nao acontecesse,

99

Page 101: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 101/172

poderıamos sempre renomear os sımbolos de N  de forma a satisfazer esta

propriedade sem alterar a linguagem gerada. Para cada uma das operacoesregulares sobre linguagens, vamos apresentar uma gramatica que gera a lin-guagem em questao.

Caso L ∪ L:Consideremos a gramatica

G∪ = (T,

N  ∪ N  ∪ {S 0}, (S 0 ∈ T  ∪ N  ∪ N )S 0,

P  ∪ P  ∪ {S 0 −→ S  | S }).

As palavras geradas por S  nesta gramatica sao as que sao geradas por S  emG, visto que N  ∩ N  = ∅ e por conseguinte numa derivacao a partir de S 

nunca pode ser rescrito um sımbolo nao-terminal em N . Assim, S  gera emG∪ a linguagem L(G). Analogamente, S  gera L(G) em G∪. Como S 0 temas producoes S 0 −→ S  | S , conclui-se que L(S 0) = L(S ) ∪ L(S ), isto e,L(G∪) = L(G) ∪ L(G).

Caso L.L:Neste caso, a gramatica

G• = (T,

N  ∪ N  ∪ {S 0}, (S 0 ∈ T  ∪ N  ∪ N )

S 0,P  ∪ P  ∪ {S 0 −→ SS })

satisfaz L(G•) = L(G) ∪ L(G). O raciocınio e identico ao do caso anterior.Caso L∗:Para a operacao de iteracao pode usar-se a gramatica

G∗ = (T,

N  ∪ {S 0}, (S 0 ∈ T  ∪ N )S 0,

P  ∪ {S 0 −→ λ | SS 0}).

Em qualquer derivacao a partir de S 0, a producao S 0 −→ SS 0 e aplicada umcerto numero n ≥ 0 de vezes, seguida de uma aplicacao de S 0 −→ λ paraeliminar o sımbolo S 0. E assim gerada uma sequencia SS  · · · S  de n ≥ 0ocorrencias de S , cada uma das quais gera uma palavra de L. As palavrasgeradas sao entao os produtos de zero ou mais palavrs de L, logo sao asplavras de L∗. 2

100

Page 102: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 102/172

Proposicao 4.26 (Interseccao e complementacao) A classe das lingua-

gens independentes do contexto n˜ ao e fechada para as operac˜ oes de inter-secc˜ ao e complementac˜ ao.

Demonstracao Veremos mais adiante que a linguagem

{anbncn : n ≥ 0}

nao e independente do contexto. Aqui vamos para ja usar esse facto paradefinir linguagens independentes do contexto L e L cuja interseccao L ∩ L

nao e independente do contexto. Sejam

L = {a

n

b

n

c

k

: n, k ≥ 0},L = {anbkck : n, k ≥ 0}.

A linguagem L e gerada pela gramatica

anbnck −→ anbn ckanbn −→ a anbn b | λ

ck −→ c ck | λ

onde usamos os sımbolos nao-terminais anbnck, anbn e ck para maiorclareza. A linguagem L define-se por uma gramatica semelhante. Assim, L

e L sao independentes do contexto, mas a sua interseccao,

L ∩ L = {anbncn : n ≥ 0},

nao e, como veremos. Isto mostra que a classe das linguagens independentesdo contexto nao e fechada para a interseccao. Tambem nao e fechada para acomplementacao porque se assim fosse entao

L ∩ L = T ∗ − ((T ∗ − L) ∪ (T ∗ − L))

seria independente do contexto, o que ja sabemos nao ser. 2

4.9 Gramatica reduzida

Vamos comecar por apresentar algoritmos que determinam conjuntos desımbolos que satisfazem certas propriedades.

101

Page 103: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 103/172

Sımbolos que geram a palavra vazia

O primeiro e o conjunto dos sımbolos nao-terminais que geram a palavravazia. Como veremos, esta e uma informacao a que e necessario recorrer combastante frequencia.

Proposicao 4.27 O conjunto dos sımbolos n˜ ao-terminais que geram a pa-lavra vazia e o conjunto Λ definido indutivamente como segue:

• Se  A −→ λ ∈ P , ent˜ ao A ∈ Λ.

• Se  A −→ α ∈ P  e  α ∈ Λ∗, ent˜ ao A ∈ Λ.

(A primeira condic˜ ao e um caso particular da segunda e em rigor poderia ser dispensada, mas assim ficam mais explıcitos a base da definic˜ ao indutiva e opasso indutivo.)

Demonstracao Sejam Γ = {A ∈ N  : A ⇒∗ λ} e Λ o conjunto definidoindutivamente no enunciado. Vamos mostrar que Γ = Λ. Comecamos pormostrar a inclusao Λ ⊆ Γ, isto e, se A ∈ Λ, entao A ⇒∗ λ. Segundo adefinicao de Λ, ha duas possibilidades. Ou A −→ λ ∈ P , caso em queA ⇒∗ λ, como se pretende. Ou existe α ∈ Λ∗ tal que A −→ α ∈ P . Supondoque ja se demonstrou para cada sımbolo nao-terminal que ocorre em α queesse sımbolo gera λ, entao tambem α gera λ e tem-se A ⇒ α ⇒∗ λ.

Para demonstrar a inclusao inversa, Γ ⊆ Λ, tomemos A ∈ Γ e umaderivacao A ⇒∗ λ. Mostramos por inducao no comprimento da derivacaoque A ∈ Λ. O primeiro passo da derivacao consiste na utilizacao de umaproducao A −→ α, e a derivacao decompoe-se em A ⇒ α ⇒∗ λ. Se α = λ,entao A ∈ Λ pela primeira condicao da definicao de Λ. Se nao, todos ossımbolos nao-terminais em α geram λ com derivacoes de comprimento inferiorao da derivacao a partir de A que estamos a considerar. Por hipotese indutiva,cada sımbolo nao-terminal em α pertence a Λ, logo α ∈ Λ∗. Pela segundacondicao da definicao de Λ, tambem neste caso se tem A ∈ Λ. Fica terminadaa demonstracao. 2

Exemplo 4.28 A gramatica seguinte exemplica o calculo dos sımbolos quegeram λ:

S  −→ aAb | bAa

A −→ BC  | aB | Cb

B −→ λ | aB

C  −→ λ | Cb

Passo Λ1o B, C 

2o A

Λ = {A,B,C }.

102

Page 104: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 104/172

O algoritmo e apresentado sob a forma da marcacao de sımbolos: no primeiro

passo marcam-se com uma barra os sımbolos que tem uma producao com ocorpo vazio; no passo n+1 marcam-se com n+1 barras os sımbolos ainda naomarcados que tem uma producao cujo corpo tem todos os sımbolos marcados.2

Sımbolos produtivos

Numa gramatica podem existir sımbolos que nao desempenham qualquer pa-pel util e por isso podem ser eliminados sem afectar a linguagem gerada pelagramatica. Os primeiros que iremos encontrar sao os sımbolos improdutivos.

Definicao 4.29 (Sımbolos produtivos e improdutivos) Um sımbolo n  ao-terminal A de uma gram´ atica diz-se produtivo se  L(A) = ∅ e improdutivo se L(A) = ∅.

Proposicao 4.30 O conjunto P r dos sımbolos produtivos pode ser definidoindutivamente pelas duas condic˜ oes seguintes:

• Se  A −→ x ∈ P  e  x ∈ T ∗, ent˜ ao A ∈ P r.

• Se  A −→ α ∈ P  e  α ∈ (T  ∪ P r)∗, ent˜ ao A ∈ P r.

(Tambem neste caso a primeira condic˜ ao e um caso particular da segunda.)

Demonstracao Tal como na definicao indutiva de Λ, inicialmente nao seconhecem elementos em P r, donde a primeira condicao e equivalente nestecaso a segunda: os primeiros sı mbolos A ∈ N  reconhecidos como pertencen-tes ao conjunto definido indutivamente sao aqueles para os quais existe umaproducao A −→ x com x ∈ T ∗, sımbolos esses que sao evidentemente pro-dutivos. Nos passos seguintes selecciona-se uma producao A −→ α ∈ P  comα ∈ (T  ∪ P r)∗. Assumindo indutivamente que L(α) = ∅, tem-se igualmenteL(A) = ∅. Isto permite conlcuir que todos os sımbolos do conjunto defi-nido indutivamente sao produtivos. Para ver que o conjunto contem todos osımbolos produtivos, tomamos um sımbolo A ∈ N  qualquer nao pertencente

ao conjunto e verificamos que ele e improdutivo. Com efeito, dado que elenao pertence ao conjunto, toda a producao A −→ α tem no seu corpo α umsımbolo nao terminal que tambem nao pertence ao conjunto. Segue-se quetoda a palavra derivada a partir de A tem um sımbolo nessas condicoes, eem particular nao pertence a T ∗. Isto quer dizer que L(A) = ∅, como sepretendia. 2

Podemos eliminar os sımbolos improdutivos de uma gramatica que issonao altera a linguagem gerada.

103

Page 105: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 105/172

Proposicao 4.31 Seja  G = (T , N , S , P  ) uma GIC com  L(S ) = ∅ e  P r o

conjunto de sımbolos produtivos. A gram´ atica G = (T,Pr,S, {A −→ α ∈ P  : A ∈ Pr,α ∈ (P r ∪ T )∗}

satisfaz  L(G) = L(G).

Demonstracao Toda a derivacao em G e uma derivacao em G, visto queG e G tem o mesmo sımbolo inicial e as producoes de G tambem pertencema G. Mas a inversa tambem e verdadeira para as derivacoes em G de palavrassobre T  a partir de S , atendendo a que nenhum sımbolo improdutivo podeocorrer nessas derivacoes. Assim, L(G) = L(G). 2

Exemplo 4.32 Para a seguinte gramatica tem-se P r = {A,B,C }, calculadoem tres passos:

A −→ aBb | bBa

B −→ CD | aC  | Ab

C  −→ a | aC 

D −→ E  | DA

E  −→ aE  | Da

Passo P r

1o C 

2o B

3o A

Na aplicacao do algoritmo usou-se um processo de marcacao semelhante aodo calculo de Λ. A gramatica simplificada e:

A −→ aBb | bBa

B −→ aC  | Ab

C  −→ a | aC 

2

Sımbolos acessıveis

Agora vamos eliminar os sımbolos inacessıveis de uma gramatica, isto e, ossımbolos que nao entram em nenhuma derivacao a partir do sımbolo inicial.

Definicao 4.33 (Sımbolos acessıveis e inacessıveis) Seja G uma gram´ atica.Um sımbolo X  ∈ V  diz-se  acessıvel se existirem  α, β  ∈ V ∗ tal que 

S  ⇒∗ αXβ,

o que se representa na ´ arvore de derivac˜ ao esquem´ atica 

 s s s s s s s s s

   O   O

 u u u u

 u u u u

 u

α X β 

Um sımbolo que n˜ ao seja acessıvel diz-se  inacessıvel.

104

Page 106: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 106/172

Proposicao 4.34 O conjunto Ac dos sımbolos acessıveis define-se indutiva-

mente por:

• S  ∈ Ac.

• Se  A ∈ Ac e  A −→ αXβ  ∈ P , ent˜ ao X  ∈ Ac.

Demonstracao A definicao indutiva pode ser ilustrada pela figura se-guinte:

 s s s s s s s s s

   O   O

 u u u u

 u u u u

 u

σ A

 s s s s s s

 s s s

 Ò Ò Ò Ò Ò

 ` ` ` `

 `

 u u u u u

 u u u u

θ

α X  β 

E facil ver que os sımbolos acessıveis satisfazem as condicoes do enunciado eque todos os sımbolos que satisfazem essas condicoes sao acessıveis. 2

Exemplo 4.35 O algoritmo que se extrai da definicao indutiva e o seguinte:

Inicializacao Com Ac vazio, coloca-se S  em Ac.

Iteracao Repete-se a operacao seguinte, ate nao ser possıvel seleccionar maiselementos:

Selecciona-se um sımbolo nao-terminal em Ac que nao tenha sido an-teriormente seleccionado e acrescentam-se a Ac todos os sımbolos queocorrem nos corpos das producoes do sımbolo seleccionado.

Esta algoritmo foi aplicado a gramatica abaixo, usando como de costumeum processo de marcacao:

A −→ aBb | bBa

B −→ Cb | bC 

C  −→ a | aC 

D −→ E  | Dc

E  −→ dE  | Da

Tem-se Ac = {a,b,A,B,C }. Eliminando os sımbolos inacessıveis obtem-se:

A −→ aBb | bBa

B −→ Cb | bC 

C  −→ a | aC 

Estas gramaticas geram, evidentemente, a mesma linguagem. 2

105

Page 107: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 107/172

Proposicao 4.36 Seja  G = (T , N , S , P  ) uma GIC e  AC  o conjunto de 

sımbolos acessıveis. A gram  atica G = (T  ∩ Ac,N ∩ Ac,S, {A −→ α ∈ P  : A ∈ Ac}

satisfaz  L(G) = L(G).

Demonstracao Semelhante a da Proposicao ??. 2

Gramatica reduzida ou limpa

Como vimos, os sımbolos improdutivos e os inacessıveis sao inuteis, na me-dida em que nao contribuem para definir a linguagem que a gramatica gera,

por isso podem ser eliminados.Definicao 4.37 (Gramatica reduzida ou limpa) Uma gram´ atica diz-se reduzida ou  limpa se n˜ ao contiver sımbolos improdutivos nem inacessıveis.

Proposicao 4.38 Seja  G uma gram´ atica. Seja  G a gram´ atica que se obtem de  G eliminando, por esta ordem,

1o os sımbolos improdutivos,2o os sımbolos inacessıveis 

e todas as produc˜ oes onde eles ocorrem. Ent˜ ao G e uma gram  atica reduzida.

Demonstracao A gramatica G nao tem sımbolos inacessıveis, visto que

estes foram os ultimos a ser eliminados. Antes dessa eliminacao, os sımbolos ja eram todos produtivos, visto que os improdutivos tinham sido eliminadosanteriormente. Apos a eliminacao dos inacessıveis, os produtivos continua-ram produtivos, visto que as derivacoes a partir deles so contem sımbolosacessıveis, que por isso permaneceram tambem na gramatica. Assim, todosos sımbolos sao produtivos e acessıveis, logo a gramatica e reduzida. 2

Exemplo 4.39 A ordem pela qual os sımbolos inuteis sao eliminados e im-portante. Observe-se a figura seguinte:

S  −→ a | A

A −→ ABB −→ b

P r /   /S  −→ a

B −→ b

Ac

   

Ac

 Q Q

S  −→ a

106

Page 108: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 108/172

Na gramatica inicial todos os sımbolos sao acessıveis. Se se tivessem elimi-

nado os inacessıveis em primeiro lugar, a gramatica nao teria sofrido al-teracao. Ora a eliminacao de sımbolos improdutivos pode fazer com que cer-tos sımbolos anteriormente acessıveis passem a ser inacessıveis, como aconteceneste exemplo. Logo a eliminacao de inacessıveis em primeiro lugar seguidada eliminacao de improdutivos pode nao levar a uma gramatica reduzida. 2

4.10 Forma normal de Chomsky

A forma normal de Chomsky aplica-se a gramaticas que nao tem producoescujo corpo e vazio. Nao ha grande perda de generalidade nesta restricao,

como vamos ver de imediato: a menos da derivacao da palavra vazia, asproducoes de corpo vazio podem ser totalmente eliminadas sem que se altereo conjunto de palavras nao vazias que sao geradas. Bem entendido, nao hamilagres: a eliminacao das producoes de corpo vazio tem de ser compensadapela adicao de producoes apropriadas de corpo nao vazio.

Definicao 4.40 (Gramatica livre-λ) Uma produc˜ ao A −→ λ de corpo va-zio chama-se uma  producao-λ. Uma gram´ atica  livre-λ e uma gram  atica sem produc˜ oes-λ.

Proposicao 4.41 Para toda a gram´ atica G, existe uma gram´ atica livre-λ G

tal que  L(G) = L(G) − {λ}

Demonstracao Sendo G = (T , N , S , P  ), a gramatica G = (T , N , S , P  )difere de G apenas no seu conjunto de producoes. Para obter P , retiram-se de P  as producoes-λ, para a gramatica ficar livre-λ, mas compensa-seindirectamente o seu efeito acrescentando outras producoes. Mais precisa-mente, para cada A −→ X 1 · · · X n em P  com n > 0, acrescentam-se todas asproducoes da forma A −→ X i1 · · · X ik (k > 0) onde os X  j omitidos geram λ

(isto e, X  j ⇒∗ λ para j ∈ {1, . . . , n} − {i1, . . . , ik}).Toda a palavra gerada em G pode tambem ser gerada em G: sempre

que em G se usar uma das novas producoes A −→ X i1 · · · X ik , em G usa-seuma derivacao A ⇒∗ X i1 · · · X ik construıda com base na producao A −→X 1 · · · X n e em derivacoes X  j ⇒∗ λ para todo j ∈ {1, . . . , n} − {i1, . . . , ik}.

Reciprocamente, uma derivacao de uma palavra = λ em G pode serreproduzida em G com as modificacoes apropriadas: sempre que em G seuse uma producao A −→ X 1 · · · X n em que X i1 , . . . , X  ik nao venham a gerara palavra vazia mas os outros X  j sim, em G emprega-se directamente a

107

Page 109: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 109/172

producao A −→ X i1 · · · X ik . Este processo esta ilustrado na figura seguinte:

A

      

 j j j j j j j j

 j j j j j j j

 r r r r

 r r

        

       

k s +   3 A

 | | | | |

 f f f f

 f

X 1

      Q Q

 Q Q... X i1

 Ù Ù Ù Ù  S S

 S S... X  j

      Q Q

 Q Q... X ik

 Ù Ù Ù Ù  S S

 S S... X n

      Q Q

 Q QX i1

 Ù Ù Ù Ù  S S

 S S. . . X ik

 Ù Ù Ù Ù  S S

 S S

λ xi1 λ xik λ xi1 xik

Fica terminada a demonstracao. 2

Exemplo 4.42 Na figura seguinte mostram-se uma gramatica com Λ ={X, Y } e a gramatica de onde foram eliminadas as producoes-λ.

E  −→ T X 

X  −→ +T X  | λ

T  −→ F Y 

Y  −→ ∗F Y  | λ

F  −→ (E ) | a

E  −→ T X  | T 

X  −→ +T X  | +T 

T  −→ F Y  | F 

Y  −→ ∗F Y  | ∗F 

F  −→ (E ) | a

Para comparacao, apresentam-se as arvores de derivacao de a + a ∗ a emambas as gramaticas:

 Õ Õ Õ Õ

 v v v v v v v v

 Õ Õ Õ Õ  W W

 W WX 

 Ó Ó Ó Ó

 w w w w w w

 w w

F Y  + T 

 Ó Ó Ó Ó  Y Y

 Y YX 

a λ F Y 

 Ó Ó Ó Ó Ó

 Y Y Y Y

λ

a ∗ F Y 

a λ

 Ô Ô Ô Ô  Y Y

 Y Y

T X 

 Ó Ó Ó Ó  X X

 X X

F  + T 

 Ô Ô Ô Ô  W W

 W W

a F Y 

 Õ Õ Õ Õ Õ

 X X X X

a ∗ F 

a

2

Definicao 4.43 (Forma normal de Chomsky) Uma gram´ atica diz-se na forma normal de Chomsky (FNC) se s´ o tiver produc˜ oes da forma 

A −→ a ou  A −→ BC 

com a ∈ T  e  A,B,C ∈ N .

108

Page 110: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 110/172

O resultado seguinte mostra que toda a gramatica pode ser transformada

noutra gramatica em FNC desde que seja livre-λ.

Proposicao 4.44 Toda a gram´ atica livre-λ G pode ser transformada numa gram´ atica  G em FNC tal que  L(G) = L(G).

Demonstracao A construcao de G a partir de G sera feita em tres passos.Cada passo sera ilustrado por um exemplo.

1o passoPara cada a ∈ T :

• Cria-se um novo sımbolo nao-terminal A.

• Substitui-se a por A em todas as producoes.

• Acrescenta-se a producao A −→ a.

Seja G1 a gramatica obtida ao fim do primeiro passo. E evidente que G e G1

geram a mesma linguagem. Por exemplo, a gramatica

S  −→ aSb | c

e transformada emS  −→ ASB | C 

A −→ aB −→ b

C  −→ c

Ao fim deste passo fica-se com uma gramatica G1 que so tem producoes daforma A −→ a ou A −→ B1 · · · Bn com n > 0, a ∈ T  e A, B1, . . . , Bn ∈ N .

2o passo

• Substitui-se cada producao A −→ B1 · · · Bn em que n > 2 por

A −→ B1C 1C 1 −→ B2C 2

...C n−2 −→ Bn−1Bn

onde C 1, . . . , C  n−2 sao novos sımbolos nao-terminais.

109

Page 111: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 111/172

Seja G2 a gramatica a que se chega. Por um raciocınio analogo a um ja por

diversas vezes aqui feito se conclui que L(G2) = L(G1). Por exemplo, paraa gramatica G1 do exemplo em curso obtem-se, para G2,

S  −→ AT  | C 

T  −→ SB

A −→ a

B −→ b

C  −→ c

Dispomos agora de uma gramatica G2 em que as producoes tem a formaA −→ a ou A −→ B ou A −→ BC , sendo necessario eliminar as da formaA −→ B.

3o passo

• Para cada derivacao A ⇒+ B em um ou mais passos e cada producaoB −→ α em que α ∈ N  (isto e, α tem a forma a ou CD), acrescenta-sea producao A −→ α.

• No fim, removem-se as producoes da forma A −→ B.

A gramatica G assim obtida esta evidentemente em FNC. Que G e G gerama mesma linguagem deve-se a que se podem converter arvores de derivacao deuma gramatica em arvores da outra usando a transformacao esquematizada

a seguir:A1

A2...

 k s +   3 A1

 Ô Ô Ô Ô  X X

 X X... An−1

 | | | | |

 f f f f

 f

An

 | | | f f

 f α α

α

Continuando o exemplo anterior, chegava-se finalmente a gramatica

S  −→ AT  | c

T  −→ SB

A −→ aB −→ b

C  −→ c

(Note-se que a gramatica podia ainda ser simplificada eliminando o sımbolonao-terminal C  e a producao C  −→ c visto que C  e inacessıvel.) 2

A importancia da FNC deve-se, em parte, a que ela permite decidir seuma palavra e ou nao gerada por uma gramatica.

110

Page 112: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 112/172

Proposicao 4.45 Para toda a gram´ atica  G, e decidıvel se  x ∈ L(G) com 

x ∈ T ∗

.

Demonstracao Analisam-se separadamente os casos em que x = λ ex = λ.

Caso x = λ:Calcula-se Λ e verifica-se S  ∈ Λ.Caso x = λ:Procede-se do seguinte modo:

1. Determina-se uma gramatica livre-λ G tal que

L(G

) = L(G

) − {λ

},

o que e possıvel pela Proposicao ??. Como x = λ, tem-se x ∈ L(G) se,e so se, x ∈ L(G).

2. Constroi-se, pela Proposicao ??, G em FNC com

L(G) = L(G).

Tem-se entao a seguinte propriedade:

Seja  |x| = n > 0. Se  x ∈ L(G), ent˜ ao x e derivada em  2n − 1 passos.

Com efeito, seja x = a1 · · · an. Primeiro deriva-seS  ⇒n−1 A1 · · · An

em n − 1 passos usando producoes do tipo A −→ BC  (parte-se dapalavra S  de comprimento 1 para chegar a uma de comprimento n eem cada passo o comprimento da palavra aumenta de uma unidade emvirtude de as producoes usadas terem dois sımbolos no corpo, logo saonecessarios n − 1 passos). Depois deriva-se

A1 · · · An ⇒n a1 · · · an

com producoes do tipo A −→ a, o que requer n passos.

3. Com base nesta observacao, usa-se o seguinte algoritmo:

• Enumeram-se todas as derivacoes esquerdas em G de compri-mento 2n − 1.

• Verifica-se se x e gerada ou nao.2

111

Page 113: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 113/172

Exemplo 4.46 Consideremos de novo a gramatica obtida na demonstracao

da Proposicao ??, que se reproduz:

S  −→ AT  | c

T  −→ SB

A −→ a

B −→ b

Para saber que palavras de comprimento tres sao geradas, basta considerartodas as derivacoes de comprimento 2 × 3 − 1 = 5, que se podem organizarsob a forma de arvore:

S     #   + y y y

 y y y y y y y

 y y y y y y

 y y y y           0

AT 

   

c     1

aT 

   

          2

aSB

 r z n n n n n n

 n n n n

 n n n n

  #   + y y y y y y

 y

 y y y y y y

 y          3

aATB

   

acB

   

    4

aaTB acb     5

Constata-se que acb e a unica palavra de comprimento tres que pertence aL(G). 2

4.11 Propriedade de iteracao

A propriedade seguinte e usada para mostrar que certas linguagens nao saoindependentes do contexto.

Proposicao 4.47 (Teorema uvwxy) Seja  G uma GIC que gera uma lin-

guagem infinita. Existe  k > 0 tal que todo oz  ∈ L(G) com  |z | > k

se pode escrever na forma z  = uvwxy

em que v = λ ou  x = λ

112

Page 114: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 114/172

uvn

wxn

y ∈ L(G)para todo o n ≥ 0.

Demonstracao Suponhamos que existe k > 0 tal que toda a palavraz  ∈ L(G) com comprimento |z | > k tem uma derivacao da forma

S  ⇒∗ uAy ⇒∗ uvAxy ⇒∗ uvwxy = z  (4.1)

com u,v,w,x,y ∈ T ∗, A ∈ N  e v = λ ou x = λ. Repetindo n vezes asub-derivacao A ⇒∗ vAx vem A ⇒∗ vnAxn, logo

S  ⇒∗ uAy ⇒∗ uvnAxny ⇒∗ uvnwxny.

Assim, uvnwxny ∈ L(G) para todo o n ≥ 0, como se pretende. Falta apenasver que a derivacao (??) existe.

Comecemos entao por definir k. Ponhamos

 p = max{|α| : ∃ A, A −→ α ∈ P },

m = numero de elementos em N,

k = pm+1.

Noutros termos, p e o comprimento maximo do corpo das producoes dagramatica e m e o numero de sımbolos nao-terminais. A escolha de k deve-sea que se a arvore de derivacao de x ∈ T ∗ tiver altura h (numero de desnıveis),

o comprimento de x e majorado por ph, por definicao de p:

  O O

h

    

            

 R R R R

 R R R R

 R R R R

|x| ≤ ph

x

Escolhamos entao z  ∈ L(G) com |z | > k = pm+1. Se a arvore de derivacao dez  tivesse altura ≤ m +1 ter-se-ia |z | ≤ pm+1 = k. Logo a arvore de derivacaode z  tem pelo menos um ramo de comprimento ≥ m + 2.

 Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ

   O   O

 W W W W

 W W W W

 W W W W

 W W W W

 W W W  O O

≥m+2

    

A

 Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô    O

   O

 X X X X

 X X X X

 X X X X

A

     

   O   O

 c c c c

 c

u v w x y

 1z

 1

113

Page 115: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 115/172

Esse ramo tem um numero de sımbolos nao-terminais ≥ m + 1, logo pelo

menos um deles aparece repetido. Esta situacao corresponde praticamentea derivacao (??), resta-nos apenas verificar que existe um tal caminho comv = λ ou x = λ.

Se v = x = λ, isso quer dizer que A ⇒∗ A. Removendo essa parte daderivacao, por ser desnecessaria, ficava-se com a arvore:

 s s s s s s s

 s s   O   O

 u u u u u

 u u u u

u A

     

 c c c c

 c y

w

Se fosse possıvel eliminar deste modo todos os nos com sımbolos nao-terminaisrepetidos em caminhos da raiz ate as folhas, ficava-se com uma arvore de al-tura ≤ m + 1, o que ja sabemos ser impossıvel. Logo existe um caminhocomo o indicado em que v = λ ou x = λ. 2

Proposicao 4.48 (Uma linguagem nao-IC) A linguagem  L = {anbncn :n ≥ 0} n˜ ao e independente do contexto.

Demonstracao Vamos supor que L = L(G) para uma certa GIC G parachegar a uma contradicao. Seja z  = anbncn com 3n > k (k da proposicao

anterior). Tem-se z  = uvwxy com v = λ ou x = λ e uviwxiy ∈ L para todoo i ≥ 0. Vamos distinguir dois casos:

Caso 1Suponhamos que v ou x contem pelo menos dois dos sımbolos a,b,c.

Entao em uv2wx2y, um b precede um a ou um c precede um b, o que eimpossıvel.

Caso 2Agora vamos considerar o caso em que v e x contem apenas um ou zero

de a,b,c (mas nao ambos zero). Entao uv2wx2y nao tem igual numero dea,b,c, o que e de novo impossıvel. 2

114

Page 116: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 116/172

Capıtulo 5

Gramaticas de Atributos

Este capıtulo e uma primeira introducao ao estudo da semantica das lingua-gens formais.

5.1 O metodo dos atributos

Vimos anteriormente, para gramaticas de expressoes aritmeticas, como sepodiam usar as arvores de derivacao para calcular o valor das expressoes. Oponto de vista que vamos aqui adoptar e que o valor de uma expressao eapenas um dos seus possıveis atributos . Vamos ver como se podem associar

atributos aos sımbolos nao terminais de uma gramatica, e como se podeespecificar o calculo dos valores desses atributos.

Consideremos a seguinte gramatica muito simplificada de expressoes ari-tmeticas, que contempla apenas adicoes de algarismos decimais:

S  −→ E 

E  −→ E + F  | F 

F  −→ 0 | 1 | 2 | · · · | 9

Estamos interessados em especificar o calculo do valor de uma destas ex-pressoes, usando arvores de derivacao como no capıtulo anterior. Por exem-

plo, a palavra 3 + 2 + 9 tem a seguinte arvore de derivacao, com o valor decada no interior (etiquetado por um sımbolo nao terminal) indicado entre

115

Page 117: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 117/172

parenteses:

S (14)

 v v v v v v

 H H H H

 H H(14)

 v v v v v v

 H H H H

 H H(5) + F  (9)

E  (3) + F  (2) 9

F  (3) 2

3

O valor de cada no interior e calculado em funcao do valor dos filhos. Comoum no e os seus filhos correspondem a cabeca e ao corpo de uma producao,respectivamente, tambem se pode dizer que o valor da cabeca e calculado emfuncao do valor dos sımbolos do corpo.

Consideremos primeiro a producao S  −→ E . Representando por v(S ) ovalor de S  e por v(E ) o valor de E , o calculo de v(S ) em funcao de v(E )pode exprimir-se pela igualdade v(S ) = v(E ), que afirma que o valor de S  eigual ao valor de E  (conhecido este, determina-se aquele).

Saltemos de momento a producao E  −→ E  + F . A producao E  −→ F 

trata-se de uma forma analoga a anterior pondo v(E ) = v(F ), onde v(F )

representa o valor de F .As producoes F  −→ 0, . . . , F  −→ 9 nao trazem surpresas, vindo v(F ) =

0, . . . , v(F ) = 9.Regressemos a producao E  −→ E  + F . Para indicar que o valor da

cabeca e a soma dos valores dos sımbolos nao terminais do corpo podıamosescrever v(E ) = v(E ) + v(F ), mas esta equacao deixa v(E ) indeterminadoe v(F ) = 0. Ha pois necessidade de distinguir as duas ocorrencias de E  naproducao. Ela passa a ser escrita (exclusivamente para fins de definicao dosatributos) na forma E 1 −→ E 2 + F , onde se acrescentaram ındices diferentesas duas ocorrencias de E . E importante notar que E 1 e E 2 nao sao dois“novos” sımbolos nao terminais, mas sim duas ocorrencias distintas do mesmo

sımbolo. Pode entao escrever-se v(E 1) = v(E 2) + v(F ).A gramatica, juntamente com as equacoes que definem os atributos,

116

Page 118: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 118/172

mostra-se a seguir:

S  −→ E v(S ) = v(E )E 1 −→ E 2 + F v(E 1) = v(E 2) + v(F )E  −→ F v(E ) = v(F )F  −→ 0 v(F ) = 0...

...F  −→ 9 v(F ) = 9

A arvore de derivacao anterior pode agora redesenhar-se indicando explicita-mente o atributo a que os valores se referem (isto e particularmente necessarioquando um sımbolo tiver mais de um atributo).

S  (v=14)

 o o o o o o o o o o

 O O O O

 O O O O

 O O(v=14)

 o o o o o o o o o o

 O O O O

 O O O O

 O O(v=5) + F  (v=9)

E  (v=3) + F  (v=2) 9

F  (v=3) 2

3

Os atributos sao usados para atribuir significado as palavras de uma lin-guagem. Diz-se entao que se esta a definir a semˆ antica  da linguagem. Maso significado atribuıdo depende do objectivo que se tem em mente. Porexemplo, para a gramatica anterior definiu-se o valor de cada expressao, maspoderiam ter-se definido muitos outros atributos, como o codigo numa lin-guagem maquina que avalia a expressao, ou a expressao escrita na formapos-fixa. Vejamos em pormenor este ultimo caso.

A forma p´ os-fixa  de uma expressao consiste em escrever sistematicamenteos argumentos em primeiro lugar e so depois o sımbolo da operacao a efectuar.

Assim, a forma pos-fixa de 3+2 e 3 2+, mas ja a de 3+2+9 depende da ordemde execucao das operacoes. Se a ordem requerida for (3 + 2) + 9, a formapos-fixa e 3 2 + 9+, se se pretender 3+ (2 + 9), deve ter-se 3 2 9 + + (para verque assim e, percorra-se a forma da esquerda para a direita e, sempre que seencontrar o ‘+’, somem-se os dois ultimos numeros encontrados ou resultantesde avaliacoes anteriores). Na gramatica anterior, e dada precedencia aosoperadores mais a esquerda (observe-se que as arvores de derivacao tendema crescer para a esquerda), logo e a primeira das formas anteriores que se

117

Page 119: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 119/172

pretende. A forma pos-fixa de uma expressao reduzida a um algarismo e o

proprio algarismo.Seja p o atributo de S , E  e F  cujo valor e a forma pos-fixa da expressao

representada pelo sımbolo em questao. Para qualquer atributo que se defina,seja ele a, e preciso definir o conjunto V a dos valores que ele pode tomar. Noexemplo anterior tinha-se

V v = Nat,

em que Nat = {0, 1, 2, . . .} e o conjunto dos numeros naturais. Para p tem-se

V  p = {+, 0, 1, . . . , 9}∗.

Nao e difıcil de ver que p se pode definir como segue:

S  −→ E p(S ) = v(E )E 1 −→ E 2 + F p(E 1) = p(E 2) p(F )+E  −→ F p(E ) = p(F )F  −→ 0 p(F ) = 0...

...F  −→ 9 p(F ) = 9

A arvore de derivacao para 3 + 2 + 9 fica:

S ( p=32+9+)

 l l l l l l l l l l l l l

 R R R R

 R R R R

 R R R R

 R( p=32+9+)

 l l l l l l l l l l l l l

 R R R R

 R R R R

 R R R R

 R( p=32+) + F  ( p=9)

E  ( p=3) + F  ( p=2) 9

F  ( p=3) 2

3

A tıtulo de exemplo considere-se a primeira ocorrencia de E , mesmo abaixode S . A equacao apropriada e p(E 1) = p(E 2) p(F )+, onde E 1 representa aocorrencia em questao e E 2 o seu filho esquerdo. Tem-se entao p(E 2) = 3 2+e p(F ) = 9, donde p(E 1) = 3 2 + 9+.

118

Page 120: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 120/172

5.2 Atributos sintetizados e atributos herda-

dos

Um atributo diz-se sintetizado se o seu valor num no de uma arvore dederivacao depender dos valores dos atributos dos filhos e, possivelmente, deoutros atributos do proprio no. Assim, para uma producao define-se umatributo sintetizado da sua cabeca em funcao de atributos do corpo e deoutros atributos da cabeca. Nos exemplos anteriores, ambos os atributoseram sintetizados.

Mas existem atributos cujo valor num no depende dos valores de atributosdos irmaos e do pai. Chamam-se herdados  a esses atributos. Numa producao,

definem-se atributos herdados de sımbolos nao terminais do corpo, em funcaode outros atributos da producao.Em resumo, numa producao podem definir-se:

• atributos sintetizados da cabeca;

• atributos herdados de sımbolos nao terminais do corpo.

Qualquer destes atributos pode depender, em princıpio, de qualquer outroatributo da producao. Veremos adiante uma restricao que se pode impor aestas dependencias que permite o calculo eficiente do valor dos atributos.

Para ilustrar o uso de atributos sintetizados e herdados, consideremos a

seguinte gramatica:S  −→ E 

E  −→ F X 

X  −→ +F X  | λ

F  −→ 0 | 1 | · · · | 9

Trata-se de uma gramatica de expressoes aritmeticas que define a mesma lin-guagem da gramatica apresentada na seccao anterior. Mas ha uma diferencaimportante, do ponto de vista do calculo de atributos: as palavras geradaspelo sımbolo X  nao sao expressoes aritmeticas, por isso nao se pode, porexemplo, atribuir-lhes um valor numerico.

Suponhamos que pretendemos definir atributos que permitam determinaro valor numerico das expressoes geradas pela gramatica. Por analogia como exemplo anterior, e de esperar que se defina para S , E  e F  um atributo v

de valores em V v = Nat. E mesmo facil ver como se calculam v(S ) e v(F )com as producoes S  −→ E  e F  −→ 0, . . . , F   −→ 9: as equacoes sao comono exemplo referido, e v e um atributo sintetizado de S  e F .

119

Page 121: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 121/172

Ja nao e tao imediato ver como se calcula v(E ) para a producao E  −→

F X , visto que esse valor deve depender dos atributos de X , os quais aindanem sequer se conhecem. Comecemos entao por ver que atributos X  deveter.

Numa derivacao a partir de S , se num dado ponto o sımbolo nao terminalmais a esquerda for X , ele deve estar precedido por uma palavra a1 + · · · + an

onde a1, . . . , an sao dıgitos, como se observa na derivacao seguinte:

S  ⇒ E  ⇒ F X  ⇒ a1X  ⇒ a1 + F X  ⇒ a1 + a2X 

⇒ a1 + a2 + F X  ⇒ · · · ⇒ a1 + · · · + anX .

A palavra que precede X  tem um valor associado que e a soma dos dıgitosa1, . . . , an. Este valor, que e conhecido ou dado quando se inicia a derivacaode X  numa derivacao esquerda, constitui o atributo d de X . Este atributo,que nao depende de nenhuma producao para X , nao pode ser calculado paraa cabeca X  de uma producao em funcao de atributos do corpo, logo nao esintetizado. Assim, so podera ser herdado.

As palavras sobre o alfabeto terminal que X  deriva tem a forma an+1 +· · ·+an+k ou λ. Se ao dado de X , d(X ), se forem sucessivamente adicionandoos algarismos an+1, . . . , an+k (ou nada, no caso de λ), obtem-se um valornumerico como resultado da derivacao de X . Este valor constitui o atributor de X , o qual e sintetizado.

Em resumo, os atributos da gramatica, os seus tipos e os seus domıniosde valores sao os seguintes:

Sint. Herd.S vE vX r dF v

V v = V r = V d = Nat.

Para definir os atributos, procedemos do seguinte modo: para cada produ-cao, definimos os atributos sintetizados da cabeca e os atributos herdadosdos sımbolos nao terminais do corpo. Dado o significado pretendido paraos atributos anteriormente explicado, nao e difıcil ver que se devem ter asseguintes definicoes:

120

Page 122: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 122/172

Sintetizados Herdados

S  −→ E v(S ) = v(E )

E  −→ F X v(E ) = r(X ) d(X ) = v(F )

X 1 −→ +F X 2 r(X 1) = r(X 2) d(X 2) = d(X 1) + v(F )

X  −→ λ r(X ) = d(X )

F  −→ 0 v(F ) = 0

......

F  −→ 9 v(F ) = 9

A seguinte arvore de derivacao de 3 + 2 + 9 mostra a sequencia do calculodos atributos:

S  v = 14

 u u u u u u u u u u

 K K K K

 K K K K

 K K Kv = 14

 O O

F  v = 3 /   / d = 3

  %   %

 m m m m m m m

 m m m m m m m m m

 s s s s s

 s s s s s s

 K K K K K

 K K K K

 K Kr = 14

 e e

3 + F  v = 2+   /   / d = 5

  %   %

 l l l l l l l l l l l l l l l l l

 s s s s s s s s s s s

 K K K K

 K K K K

 K K Kr = 14

 e e

2 + F  v = 9+   /   / d = 14 C  CX  r = 14

 e e

9 λ

5.3 Gramaticas de atributos

Uma gramatica com definicao de atributos chama-se uma gram´ atica de atri-butos . Mais formalmente, uma gramatica de atributos consiste nos seguinteselementos:

I. GramaticaUma gramatica independente do contexto G = (T , N , S , P  ), onde

• G esta na forma reduzida.

• S  nao ocorre no corpo de nenhuma producao.

121

Page 123: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 123/172

II. Atributos

• Um conjunto A de elementos chamados atributos .

• Para cada a ∈ A, um conjunto V a dos valores  de a.

• Para cada A ∈ N , um conjunto

A(A) ⊆ A

dos atributos de  A.

– O conjunto A(A) e uma uniao

A(A) = H(A) ∪ S (A)

de um conjunto H(A) de atributos ditos herdados  e de um con- junto S (A) de atributos ditos sintetizados , com H(A) ∩ S (A) = ∅.

– O sımbolo inicial nao tem atributos herdados, isto e, H(S ) = ∅ eA(S ) = S (S ).

III. Calculo dos atributosPara cada producao

X 0 −→ X 1 · · · X n

define-se, para cada atributo sintetizado da cabeca e cada atributo herdadodo corpo, uma funcao que indica como calcular os valores desse atributo emtermos dos restantes atributos. Mais precisamente:

• Seja a ∈ A(X k), onde a ∈ S (X k) se k = 0 e a ∈ H(X k) se k > 0.

• Entao, para certos

a1 ∈ A(X k1), . . . , am ∈ A(X km)

com 0 ≤ k1 ≤ · · · ≤ km ≤ n, e dada uma funcao

f  : V a1 × · · · × V  am → V a.

E costume escrever a(X k) para indicar o valor do atributo a de X k, eentao o seu calculo e representado pela equacao

a(X k) = f (a1(X k1), . . . , am(X km)).

122

Page 124: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 124/172

5.4 Outro exemplo

A seguinte gramatica descreve, de forma muito simplificada, a parte de de-claracoes de uma linguagem de programacao:

S  −→ L

L −→ λ | D; L

D −→ varV  : T 

V  −→ a | · · · | z 

T  −→ int | real

Pretende-se definir atributos que permitam construir uma tabela de iden-

tificadores  associada a cada palavra. A tabela sera representada por umconjuntod(S ) = {(x1, t1), . . . , (xn, tn)}

de todos os pares (xi, ti) formados por uma variavel xi ∈ {a , . . . , z  } e umtipo ti ∈ {int, real} correspondentes as declaracos contidas na palavra.

Na gramatica nao ha nada que impeca que uma variavel seja declaradamais de uma vez, mas isso e considerado um erro, mesmo que na declaracaorepetida a variavel tenha o mesmo tipo. Assim, tambem se pretende deter-minar o conjunto

e(S ) = {(y1, u1), . . . , (ym, um)}

dos erros resultantes de declaracoes repetidas.Note-se que a linguagem formada pelas palavras sem declaracoes repetidas

(isto e, com uma arvore de derivacao para a qual e(S ) = ∅) e uma sub-linguagem propria da linguagem definida pela gramatica. Essa sub-linguagempoderia ser directamente definida por uma gramatica, mas a gramatica naoseria independente do contexto, e e de esperar que fosse complicada e difıcilde compreender. Por isso, na pratica e preferıvel definir uma linguagemmais geral por meio de uma gramatica independente do contexto (que e maisfacil de conceber e compreender) e restringi-la posteriormente com metodossemanticos, como estamos aqui a fazer com o metodo dos atributos. E essa aatitude adoptada, em particular, na definicao das linguagens de programacao.

Os atributos que irao ser usados estao definidos na seguinte tabela:

Sint. Herd.S d, e

L dS , eS  dA, eAD v, t

V v

T t

123

Page 125: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 125/172

Sobre o significado de d e e ja falamos. Os valores destes atributos sao

conjuntos de pares (variavel, tipo), logo

V d = V e = P (V v × V t)

onde V v = {a , . . . , z  } e V t = {int, real}. O sımbolo L tem atributos herdadosdA e eA, e atributos sintetizados dS  e eS . O significado destes atributos esemelhante ao dos atributos de X  no exemplo das expressoes aritmeticasanteriormente apresentado. Numa derivacao

S  ⇒∗ varx1 : t1; . . . ; varxn : tn; L

dA(L) e o conjunto das declaracoes que ocorrem antes  de L, isto e, no prefixo

varx1 : t1; . . . ; varxn : tn

omitindo as repeticoes, e eA(L) sao as declaracoes repetidas de variaveis (istoe, os erros) antes  de L. Mas L deriva uma palavra que tem a mesma formado prefixo acima, e entao dS (L) contem as declaracoes seguintes  a derivacaode L, isto e, as declaracoes em dA(L) as quais se vieram juntar as existentesna palavra derivada de L. O conjunto eS (L) define-se de forma semelhante.Os conjuntos de valores de dA, eA, dS  e eS  sao, bem entendido, iguais aos ded e e:

V dA = V eA = V dS = V eS = P (V v × V t).Os atributos v e t sao faceis de caracterizar: sao respectivamente a variavel

e o tipo do sımbolo a que se aplicam. Os seus conjuntos de valores V v e V t ja foram definidos.

Para definir os atributos temos necessidade de uma funcao auxiliar

vars : P (V v × V t) → P (V v)

que dado um conjunto X  ⊆ V v ×V t de pares (variavel, tipo) forma o conjunto

vars(X ) = {x : (∃ t) (x, t) ∈ X }

das variaveis que figuram como primeiras componentes desses pares. Poroutras palavras, se X  for um conjunto de declaracoes, vars(X ) e o conjuntode variaveis declaradas.

A definicao de atributos e a seguinte:

124

Page 126: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 126/172

Sintetizados Herdados

S  −→ L d(S ) = dS (L) dA(L) = ∅

e(S ) = eS (L) eA(L) = ∅

L −→ λ dS (L) = dA(L)

eS (L) = eA(L)

L1 −→ D; L2 dS (L1) = dS (L2) dA(L2) = dA(L1) ∪if v(D) ∈ vars(dA(L1))then ∅else {(v(D), t(D))}

eA(L2) = eA(L1) ∪if v(D) ∈ vars(dA(L1))then {(v(D), t(D))}else ∅

D −→ varV  : T v(D) = v(V )

t(D) = t(T )

V  −→ a v(V ) = a...

T  −→ int t(T ) = int...

A equacao para dA(L2) podia escrever-se

dA(L2) =

dA(L1) se v(D) ∈ vars(dA(L1)),

dA(L1) ∪ {(v(D), t(D))} caso contrario.

O mesmo se diz, evidentemente, de eA(L2)

5.5 Ordem de avaliacao dos atributos – cir-cularidade

Ate aqui nao referimos a ordem pela qual devem ser calculados os atributos,nem levantamos sequer o problema de saber se eles podem sempre ser calcu-lados. Vamos aqui considerar uma situacao em que os atributos dependemuns dos outros de forma circular. O seu calculo obrigaria a resolucao de umsistema de equacoes, o que nem sempre e possıvel. A apresentacao deste

125

Page 127: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 127/172

problema sera feita por meio de um exemplo. Nao procuraremos dar uma

definicao formal de “circularidade” ou apresentar algoritmos que permitama sua deteccao.

Consideremos entao a gramatica

S  −→ BA

B −→ BA | b

A −→ a

onde estao definidos os seguintes atributos:

Sint. Herd.S s, t, u V s = V t = V uB s, v z   = V v = V z = Nat.A z 

Consideremos a definicao dos atributos:

Sintetizados Herdados

S  −→ BA s(S ) = z (A) + 1 z (B) = 2s(S ) + 1

t(S ) = s(B) + 2 z (A) = t(S ) + 1

u(S ) = 0

B1 −→ B2A s(B1) = z (A) + 1 z (B2) = z (B1) + 1v(B1) = v(B2) + z (B2) z (A) = 2v(B1) + 3

B −→ b s(B) = 0

v(B) = 0

A −→ a

Seja ainda a arvore de derivacao da palavra baa:

 w w w w w w w w w

 G G G G

 G G G G

 G Gt

  #   #

u s

 v vB1

 w w w w w w w w w

 G G G G

 G G G G

 Gz 

 { {

v

     

s

  G G

A1 z 

 W W

B2 z 

   9  9

v

   ;  ;

s A2 z 

 V V

a

b a

126

Page 128: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 128/172

As duas ocorrencias de A e B foram distinguidas por meio de ındices. Indica-

ram-se os atributos de cada no mas nao os seus valores. As setas a ponteadoindicam as dependencias entre atributos, tal como se deduz das equacoes queos definem. O percurso fechado no sentido indicado pelas setas correspondea circularidade na definicao dos atributos. Para ver como a dependenciacircular se traduz em termos do calculo dos atributos, escrevemos as equacoesdos atributos que intervem no percurso fechado:

s(S ) = z (A1) + 1z (A1) = t(S ) + 1t(S ) = s(B1) + 2s(B1) = z (A2) + 1

z (A2) = 2v(B1) + 3v(B1) = v(B2) + z (B2)v(B2) = 0z (B2) = z (B1) + 1z (B1) = 2s(S ) + 1.

Efectuando as substituicoes sucessivas chegava-se a equacao

s(S ) = 4s(S ) + 12.

Esta equacao traduz a dependencia de s(S ) de si proprio. Esta independenciae indesejavel porque na maioria dos casos nao tem solucao, e mesmo quandotem, o calculo dos atributos e ineficiente. No nosso caso, a equacao nao temsolucao porque estamos a considerar como domınio de valores dos atribu-tos o conjunto Nat = {0, 1, 2, . . .}, mas se estivessemos a considerar Int ={. . . , −2, −1, 0, 1, 2, . . .} ja teria a solucao s(S ) = −4.

5.6 Avaliacao da esquerda para a direita

Os atributos podem ser facilmente avaliados na chamada “avaliacao da es-querda para a direita” se a sua definicao satisfizer a seguinte propriedade:

Para toda a producao X 0 −→ X 1X 2 · · · X n:

• Os atributos sintetizados  de X 0 so dependem de:

– atributos herdados de X 0;

– atributos quaisquer de X 1, . . . , X  n.

• Os atributos herdados  de X k com 1 ≤ k ≤ n so dependem de:

– atributos herdados de X 0;

127

Page 129: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 129/172

– atributos quaisquer de X 1, . . . , X  k−1.

Todos os exemplos vistos ate aqui, com excepcao do que ilustra o fenomenoda circularidade, satisfazem estas condicoes. Nesse caso, a avaliacao dos atri-butos pode ser feita de acordo com o seguinte esquema recursivo, aplicado aum no N  de uma arvore de derivacao:

avalia(N ):begin

Seja X 0 −→ X 1 · · · X n a producao usada no no N ;for k := 1 to n do

if X k e um nao-terminal then

begin

V  := k-esimo filho de N ;Avaliar os atributos herdados de V ;avalia(V )

end;Avaliar os atributos sintetizados de N 

end

Quando avalia(N ) e chamado, conhecem-se os atributos herdados deN  e calculam-se primeiro os atributos dos filhos e depois os seus atributossintetizados.

128

Page 130: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 130/172

Capıtulo 6

Automatos de Pilha

[VERSAO PRELIMINAR.]Um automato de pilha (AP) e essencialmente um automato finito ao qual

se acrescentou uma pilha, que pode conter sımbolos de um alfabeto especialchamado “alfabeto da pilha”. Lendo a pilha do topo ate a base, sımbolo asımbolo, forma-se uma palavra que descreve completamente o seu conteudo.Uma caracterıstica importante dos AP, que os distingue dos automatos fini-tos, e que tem memoria infinita, visto que se podem guardar na pilha todasas palavras sobre o alfabeto correspondente.

Uma transicao de um AP depende nao so do estado em que ele se encontra,como do sımbolo que esta no topo da pilha. No fim da transicao, tanto oestado como o conteudo da pilha se alteraram. A modificacao do estadoconsiste em substituı-lo por outro, eventualmente o mesmo. A modificacaoda pilha consiste em desempilhar o sımbolo do topo e em seu lugar empilharuma palavra arbitraria.

As transicoes sao especificadas por uma funcao δ com tres argumentos. Aoescrever δ (q , z , a), q  e um estado, z  e o sımbolo do topo da pilha, e a pertenceao alfabeto de entrada ou e λ. Em geral, δ (q , z , a) e um conjunto finito depares da forma ( p, γ ), que permitem seleccionar de forma nao determinista oestado seguinte p e a palavra γ  que substitui z  no topo da pilha.

Definicao 6.1 [Automato de pilha] Um aut´ omato de pilha  (AP) e um septuplo

A = (T , Q , Z , q  I , z I , δ , F  ),

em que:

• T  e o alfabeto de entrada ;

• Q e um conjunto finito de estados ;

• Z  e o alfabeto da pilha ;

129

Page 131: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 131/172

• q I  ∈ Q e o estado inicial ;

• z I  ∈ Z  e o sımbolo inicial da pilha ;• δ  e a funcao de transic˜ ao de configurac˜ oes ;

• F  ⊆ Q e o conjunto de estados de aceitac˜ ao.

A funcao δ  tem por domınio o conjunto

Q × Z  × (T  ∪ {λ}),

o que quer dizer que se calcula δ (q , z , a) para q  ∈ Q, z  ∈ Z  e a ∈ T  ∪ {λ},como explicado mais acima. O codomınio de δ  e o conjunto

P fin(Q × Z 

)

de todos os subconjuntos finitos de Q × Z ∗. Assim, δ (q , z , a) e um conjuntofinito de pares da forma ( p, γ ) com p ∈ Q e γ  ∈ Z ∗, como tambem referidoanteriormente. Escreve-se entao

δ  : Q × Z  × (T  ∪ {λ}) → P fin(Q × Z ∗).

Definicao 6.2 [Configuracao] Uma configurac˜ ao de um AP e um par (q, γ )descrevendo o estado em que o AP se encontra e o conteudo da pilha. Aconfiguracao inicial  e (q I , z I ). O conjunto de todas as configuracoes e Q×Z ∗.

Definicao 6.3 [Transicao] Escreve-se

(q,zγ )a

(q , γ γ )

se(q , γ ) ∈ δ (q , z , a),

onde q, q  ∈ Q, z  ∈ Z , γ, γ  ∈ Z ∗ e a ∈ T  ∪ {λ}. Diz-se entao que ha umatransic˜ ao da configuracao (q,zγ ) para a configuracao (q , γ γ ) etiquetada pora, o que justifica o nome dado a δ .

Note-se que, ao representar o conteudo da pilha por uma palavra, osımbolo do topo e o primeiro da esquerda. Assim, em zγ , o topo e z , oqual, depois de desempilhado e substituıdo por γ , da o novo conteudo γ γ .

E costume representar graficamente um AP na seguinte forma:

130

Page 132: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 132/172

   ¤   ¥

   ¤   ¥ b a a b

γ  ∈ Z ∗Pilha

 e  e¡ 

 ¡ Cabeca de Leitura e Escrita

 ¡  ¡e 

 e Cabeca de Leitura

q  ∈ QUnidade deControlo

§¦

§¦1 0 1 1

x ∈ T ∗

Fita deLeitura

Vejamos com mais pormenor a interpretacao do seu funcionamento.

Inicialmente:• Uma palavra x ∈ T ∗ esta inscrita na fita de leitura, e a cabeca de leitura

esta colocada sobre o primeiro sımbolo de x (o mais a esquerda).

• A unidade de controlo esta no estado inicial q I .

• A pilha contem unicamente o sımbolo z I  e a cabeca de leitura e escritaesta colocada sobre z I .

Em resumo, inicialmente o AP esta na configuracao inicial (q I , z I ) e tem apalavra x para ler.

Em certa etapa do funcionamento:

• A cabeca de leitura esta sobre uma celula da fita de leitura contendoum sımbolo a ∈ T  que ocorre na palavra x; os sımbolos a esquerda dea (mas nao o proprio a) ja foram lidos.

• Na pilha esta inscrita uma palavra de Z ∗, podendo dar-se dois casos:

– Essa palavra e a palavra vazia λ.

– A palavra e nao vazia e o primeiro sımbolo (z , digamos) esta a serinspeccionado pela cabeca de leitura e escrita. Podemos designaressa palavra por zγ , com z  ∈ Z  e γ  ∈ Z ∗. (Inicialmente, z  = z I  eγ  = λ.)

• A unidade de controlo esta num estadoq 

∈Q

.Assim, o AP esta numa configuracao (q, λ) ou (q,zγ ), esta a examinar osımbolo a ∈ T , e prepara-se para efectuar uma transicao para uma novaconfiguracao.

Transic˜ ao de configurac˜ ao:

• Consideremos a configuracao anterior. Se a palavra inscrita na pilhafor λ, isto e, se a configuracao for (q, λ), nao ha transicao possıvel.

131

Page 133: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 133/172

• Caso contrario, a transicao vai depender dos sımbolos q, z , podendo

o AP escolher entre ignorar ou nao o sımbolo a. Esta possibilidadede escolha, que traduz o primeiro aspecto nao determinista do AP,existe em princıpio visto que tanto (q , z , λ) como (q , z , a) (ignorar enao ignorar a, respectivamente) pertencem ao domınio de δ .

– Ignorando a, suponhamos que

δ (q , z , λ) = {(q 1, γ 1), . . . , (q r, γ r)}.

Entao o AP pode escolher qualquer um dos pares acima enumera-dos, que e o segundo aspecto do nao determinismo de um AP. Seescolheu (q i, γ i), transita para a configuracao (q i, γ iγ ) e mantem 

a cabeca de leitura sobre o sımbolo a. O novo estado da unidadede controlo e q i, e a cabeca de leitura e escrita apagou (desempi-lhou) z  e escreveu (empilhou) γ i, ficando a inspeccionar o primeirosımbolo de γ iγ . Se γ i = λ, esta accao reduz-se a desempilhar z .Se γ i = z , a pilha fica inalterada. Se γ i = ρz , a accao consiste emempilhar ρ em cima de z . Note-se que se δ (q , z , λ) = ∅, nao hatransicao possıvel ignorando a.

– Tendo a em consideracao, se

δ (q , z , a) = {( p1, ρ1), . . . , ( ps, ρs)},

tudo se passa como anteriormente, com a excepcao de que o sımboloa foi lido, e portanto a cabeca de leitura avanca  para o proximosımbolo de x (se existir; se nao, para a proxima celula da fita, queesta vazia). Se δ (q , z , a) = ∅, nao ha transicao possıvel lendo a.

O comportamento do AP consiste numa sucessao de transicoes a partir daconfiguracao inicial. Contrariamente ao caso dos automatos finitos, e habitoconsiderar dois criterios de reconhecimento de linguagens.

Criterios de reconhecimento:

• Apos ler uma palavra, o AP atinge uma configuracao em que a pilha

esta vazia. A linguagem reconhecida por este criterio chama-se “lin-guagem nula” e denota-se N (A) para um AP A.

• Apos ler uma palavra, o AP atinge uma configuracao em que o estadoe de aceitacao. A linguagem reconhecida por este criterio denota-seL(A).

• Uma situacao de erro e detectada em qualquer dos casos quando apalavra nao tiver sido toda lida e δ (q , z , λ) = ∅ = δ (q , z , a) para oestado corrente q , topo da pilha z  e sımbolo de entrada a.

132

Page 134: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 134/172

Para formalizar as nocoes de funcionamento e reconhecimento comecamos

por generalizar a relacao de transicao de configuracoes a palavras arbitrariasde T ∗.

Definicao 6.4 [Transicao iterada] Dadas configuracoes c e c e x ∈ T ∗, poe-se

cx

c

se e so se existirem

• configuracoes c0, c1, . . . , cn e

• elementos a1, a2, . . . , an ∈ T  ∪ {λ}

tais que

• c = c0a1

c1a2

· · ·an

cn = c, e

• x = a1a2 · · · an.

A relacao cx

c significa que o AP pode atingir a configuracao c partindode c apos ter lido a palavra x. Convenciona-se que

c

para toda a configuracao c, o que esta de acordo com a interpretacao anterior.

Definicao 6.5 [Linguagem reconhecida] Seja A um AP. A linguagem reco-nhecida por  A pelo criterio da pilha vazia , ou linguagem nula  de A, e alinguagem

N (A) = {x ∈ T ∗ : (∃q  ∈ Q) (q I , z I )x

(q, λ)}.

A linguagem reconhecida por  A pelo criterio dos estados de aceitac˜ ao e

L(A) = {x ∈ T ∗ : (∃q  ∈ F, γ  ∈ Z ∗) (q I , z I )x

(q, γ )}.

Veremos adiante que estes dois criterios sao equivalentes, no sentido emque definem a mesma classe de linguagens.

Exemplo 6.6 Para toda a palavra x = a1a2 · · · an sobre um determinadoalfabeto, seja

xI  = an · · · a2a1

a palavra “inversa” de x, tambem chamada “imagem ao espelho” de x. Sejaagora T  = {a, b} e consideremos a linguagem

L = {xxI  : x ∈ T ∗}

133

Page 135: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 135/172

formada por palavras arbitrarias seguidas da sua imagem ao espelho. Um AP

A para reconhecer esta linguagem pelo criterio da pilha vazia pode funcionardo seguinte modo.

O automato vai lendo sucessivamente os sımbolos inscritos na fita deleitura e empilha-os. Num dado momento, “adivinha” (nao deterministica-mente) que leu a metade x da palavra xxI  inicialmente na fita de leitura,e altera o seu modo de funcionamento. Se o seu “palpite” estiver correcto,o conteudo da pilha e xI , como e facil de ver. Assim, o automato passa acomparar o sımbolo lido com o sımbolo do topo da pilha e, caso sejam iguais(como e de esperar, se a palavra inicialmente na fita de leitura pertencer a L

e se o palpite estiver correcto), desempilha, avanca na fita de leitura, e repetea operacao ate a pilha ficar vazia.

O AP vai ter dois estados, Q = { p, q }, tal que no estado p empilha eno estado q  desempilha. Como a operacao inicial e desempilhar, deve ter-se q I  = p. O alfabeto da pilha e Z  = {a,b,z }, onde z  e um sımbolo queinicialmente tem de estar na pilha para ela nao estar vazia. Por essa mesmarazao, z I  = z . Como o AP vai reconhecer a linguagem pelo criterio da pilhavazia, o conjunto F  e irrelevante e podemos por F  = ∅. Para terminar aespecificacao do automato falta definir a funcao δ , o que e feito mediante aseguinte tabela:

δ a b λ

 p, z p, az p, bz q, z  p, a p, aa p, ba q, a

 p, b p, ab p, bb q, b

q, z q, λ

q, a q, λ

q, b q, λ

As linhas da tabela estao indexadas por pares em Q × Z  que indicam oestado corrente e o topo da pilha (omitiram-se os parenteses da notacao usualdos pares para simplificar a leitura). As colunas estao indexadas por T ∪{λ},

e as casas da tabela contem os valores de δ . Por exemplo, no cruzamento dalinha p, z  com a coluna a encontra-se p,az , o que indica que

δ ( p, z, a) = {( p, az )}.

Evidentemente, varios pares podem ocupar a mesma casa, visto que os valoresde δ  podem ser conjuntos com mais de um elemento. Algumas casas podemestar vazias, e nesse caso o valor de δ  e o conjunto vazio, como em δ (q , z , a) =∅ na tabela acima.

134

Page 136: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 136/172

O comportamento do AP no estado p e independente de o sımbolo que

esta no topo da pilha ser z , a ou b, e consiste ou em empilhar o sımbolo lidoou em mudar para o estado q  sem ler. Neste estado desempilham-se todosos sımbolos da pilha que coincidam com os sımbolos lidos ou, no caso de notopo da pilha estar z , este e desempilhado sem atender a fita de leitura. Ocomportamento em p e nao determinista, visto que ha a opccao entre ler oproximo sımbolo e empilha-lo, e ignora-lo mudando o estado para q .

O comportamento do AP pode ser observado passo a passo indicando assucessivas configuracoes pelas quais vai passando juntamente com a porcaoda fita que ainda falta ler. Um comportamento possıvel em que a palavraabba e reconhecida e o seguinte:

ESTADO PILHA FITA p z abba

 p az bba

 p baz ba

q baz ba

q az a

q z λ

q λ λ

A palavra ab nao e reconhecida, visto que nenhum comportamento conduza pilha vazia com a palavra toda lida. Eis um comportamento possıvel:

ESTADO PILHA FITA p z ab

 p az b

q az b

A partir daqui nao existem transicoes, visto que o topo da pilha nao coincidecom o primeiro sımbolo da fita de leitura. Em alternativa, a partir da segundalinha podia prosseguir-se para

 p baz λ

q baz λ

mas de novo nao haveria transicao. Aqui a palavra foi toda lida, mas comonao se consegue esvaziar a pilha, a palavra nao e reconhecida.

No proximo exemplo introduzimos o conceito de AP determinista, quenao e exactamente o que se espera por analogia com os automatos finitos.

135

Page 137: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 137/172

Exemplo 6.7 O comportamento nao determinista do AP do Exemplo 6.6

era devido a necessidade de adivinhar o meio da palavra a reconhecer. As-sim, e de esperar que se modificarmos a linguagem inserindo a meio de cadapalavra um sımbolo separador especial, o automato passe a ter um compor-tamento determinista. A razao e que, ao detectar esse sımbolo, o automatofica a “saber” que e a altura de passar da fase de empilhar a de desempilhar.

Assim, suponhamos que T  = {a,b,c} onde c e o tal sımbolo especial eredefinamos

L = {xcxI  : x ∈ {a, b}∗}.

O AP correspondente e definido por Q = { p, q }, q I  = p, Z  = {a,b,z },z I  = z  e F  = ∅ tal como no automato do Exemplo 6.6. Por comparacao com

esse automato, nao e difıcil reconhecer que δ  pode ser definida pela tabelaseguinte:

δ a b c λ

 p, z p, az p, bz q, z 

 p, a p, aa p, ba q, a

 p, b p, ab p, bb q, b

q, z q, λ

q, a q, λ

q, b q, λ

Note-se que se considera que este AP e determinista, mesmo tendo transi-coes etiquetadas por λ, ao contrario do que se passa com os automatos finitos.Isto e razoavel, porque em nenhumas circunstancias e necessario optar en-tre duas ou mais transicoes possıveis. Isto pode ser constatado da seguintemaneira:

• Cada casa da tabela tem no maximo um par, logo nao ha escolhas afazer dentro de cada casa .

• Em cada linha, quando a coluna de λ esta preenchida, as de T  estaovazias, e quando pelo menos uma coluna de T  esta preenchida, e a de

λ que esta vazia. Assim, nao ha escolhas a fazer entre uma ou outra casa .

O determinismo do AP pode ser observado com o reconhecimento da palavra

136

Page 138: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 138/172

abcba:

ESTADO PILHA FITA p z abcba

 p az bcba

 p baz cba

q baz ba

q az a

q z λ

q λ λ

Este comportamento deve ser comparado com o do Exemplo 6.6 para a pa-lavra abba.

Vamos agora ver um exemplo de um AP que reconhece uma linguagempelo criterio dos estados de aceitacao.

Exemplo 6.8 Consideremos a linguagem

L = {an1bn1an2bn2 · · · ankbnk : k ≥ 1, n1 ≥ 1, n2 ≥ 1, . . . , nk ≥ 1},

sobre o alfabeto T  = {a, b}. Uma palavra de L consiste numa seccao da formaan1bn1, com igual numero de a e b, que se repete algumas vezes, possivelmentecom outros numeros de a e b.

O automato que vamos definir tem estados Q = {q I , q , q  F }, onde q I  eevidentemente o estado inicial e q F  e o unico estado de aceitacao, isto e,F  = {q F }. O alfabeto da pilha e Z  = {a, z I }, sendo z I  o sımbolo inicial.Vejamos primeiro informalmente como se define δ , em termos do comporta-mento desejado para o automato.

O reconhecimento de

an1bn1an2bn2 · · · ankbnk

processa-se do seguinte modo:

• O estado q I  empilha os n1 sımbolos a em cima de z I . Ao encontrar o

primeiro b, desempilha um a e passa para o estado q .• O estado q  le os restantes n1 − 1 sımbolos b e por cada um desempilha

um a. Quando no topo da pilha estiver z I , o estado passa a q F  deixandoa pilha inalterada.

• Se k = 1, a palavra foi toda lida e e reconhecida por q F  ser de aceitacao.Se k > 1, o automato le o proximo a, empilha-o sobre z I , e regressa aoestado q I , onde o ciclo que acabou de ser descrito se repete.

137

Page 139: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 139/172

Desta descricao informal apercebemo-nos facilmente que o AP e deter-

minista. Isso tambem pode ser observado na tabela mais abaixo como seindicou a proposito do Exemplo 6.7.

δ a b λ

q I , z I  q I , az I q I , a q I , aa q, λ

q, z I  q F , z I q, a q, λ

q F , z I  q I , az I 

Note-se que a linha de q F , a foi omitida, por ter todas as casas vazias.

Uma diferenca importante entre os criterios de aceitacao por pilha vaziae por estados de aceitacao pode observar-se desde ja: quando a pilha ficavazia, o automato para; porem, quando atinge um estado de aceitacao, podeprosseguir com a computacao, passando mesmo por estados que nao sao deaceitacao antes de regressar a um estado de aceitacao.

Definicao 6.9 [AP determinista] Para um conjunto finito X , seja |X | onumero dos seus elementos. Um AP A diz-se determinista  se, para todo oq  ∈ Q e z  ∈ Z :

• ou (∀a ∈ T ) |δ (q , z , a)| ≤ 1 e δ (q , z , λ) = ∅;

• ou (∀a ∈ T ) δ (q , z , a) = ∅ e |δ (q , z , λ)| ≤ 1.

A seguinte propriedade e a que se espera.

Proposicao 6.10 Seja c ∈ Q×Z ∗ uma configurac˜ ao de um AP determinista 

e  a ∈ T . Se existirem transic˜ oes  ca1

c1 e  ca2

c2 com  a1, a2 ∈ {a, λ} e c1, c2 ∈ Q × Z ∗ ent˜ ao a1 = a2 e  c1 = c2.

Dem. Pela Definicao 6.3, se c

ai

ci (i = 1, 2) entao c tem a forma (q,zγ )e existe (q i, γ i) ∈ δ (q , z , ai) tal que ci = (q i, γ iγ ). Nao se pode ter a1 = a2porque entao um dos dois seria igual a a e o outro igual a λ, vindo |δ (q , z , a)| >

0 e |δ (q , z , λ)| > 0, o que nao e permitido pela definicao de AP determinista.Tem-se entao a1 = a2. Se c1 = c2, isto e, (q 1, γ 1γ ) = (q 2, γ 2γ ), teria de ser(q 1, γ 1) = (q 2, γ 2). Como a1 = a2, isto implicaria |δ (q , z , a1)| ≥ 2, o quetambem contraria a definicao de AP determinista. Conclui-se que tem de serc1 = c2.

138

Page 140: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 140/172

Convencao 6.11 No que se segue e comodo considerar que a funcao δ  e de-

finida por um conjunto de quıntuplos (q,z,a,p,γ ) tais que ( p, γ ) ∈ δ (q , z , a).Por comodidade de leitura, escreveremos tais quıntuplos na forma (q, z )

a→

( p, γ ), e chamar-lhes-emos “regras de transicao”. As regras de transicao po-dem ser interpretadas em termos da tabela que caracteriza δ , como indicandoque a casa indexada por (q, z ) na linha e a na coluna contem o elemento ( p, γ ),possivelmente entre outros elementos.

Vamos agora ver que os criterios de reconhecimento por pilha vazia epor estados de aceitacao sao equivalentes, no sentido em que reconhecem amesma classe de linguagens.

Teorema 6.12 Seja  A um AP e N (A) a linguagem por ele reconhecida pelocriterio da pilha vazia. Existe um AP  A que reconhece a mesma linguagem pelo criterio dos estados de aceitac˜ ao, isto e, tal que  L(A) = N (A). Alem disso, se  A for determinista, A e determinista.

Dem. O automato A e construıdo como uma extensao de A. Vai ter umnovo estado inicial q I  e um novo sımbolo inicial na pilha z I , e a sua primeira

transicao e (q I , z I )λ

(q I , z I z I ), determinada por uma regra de transicao

(q I , z I )λ

→ (q I , z I z I ). A partir daqui, A comporta-se exactamente como A,excepto que cada configuracao por que passa tem o sımbolo adicional z I  na

base da pilha. Mais precisamente, as configuracoes de A tem a forma (q,γz I )para toda a configuracao (q, γ ) de A. Quando A esta numa configuracao deaceitacao (q, λ) em que a pilha esta vazia, A esta na configuracao (q, z I ). Oque e preciso fazer entao e promover a transicao desta configuracao para umaoutra com um estado de aceitacao. Para tanto basta criar apenas um estado

de aceitacao q F  e acrescentar a A as regras de transicao (q, z I )λ

→ (q F , z I )

para cada q  ∈ Q. Tem-se a transicao (q, z I )λ

(q F , z I ), como se pretende.Vejamos com mais precisao a definicao de A. Tem-se

A = (T, Q, Z , q I , z I , δ , F ),

em que:

• Q = Q ∪ {q I , q F } com q I , q F  ∈ Q;

• Z  = Z  ∪ {z I } com z I  ∈ Z ;

• F  = {q F };

• δ  e constituıda pelas regras de δ , as quais se acrescentaram:

– (q I , z I )λ

→ (q I , z I z I ); e

139

Page 141: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 141/172

– (q, z I )λ

→ (q F , z I ) para todo o q  ∈ Q.

Atendendo a discussao anterior, ve-se facilmente que (q I , z I )x (q, λ) se e so

se (q I , z I )x

(q F , z I ), o que mostra que L(A) = N (A). Alem disso, as regrasde transicao que foram acrescentadas a δ  nao introduzem nao determinismo,pelo que A e determinista se A o for.

Exemplo 6.13 Consideremos o automato A do Exemplo 6.7. Da construcaodo automato A apresentamos apenas a definicao da funcao δ :

δ  a b c λ

I , z 

I  q I , z I z 

I  p, z p, az p, bz q, z 

 p, a p, aa p, ba q, a

 p, b p, ab p, bb q, b

q, z q, λ

q, a q, λ

q, b q, λ

 p, z I  q F , z I q, z I  q F , z I 

Note-se que esta tabela se obteve acrescentando a primeira e as duasultimas linhas a tabela de δ , seguindo a prescricao da demonstracao do teo-rema anterior.

O resultado seguinte e o inverso do anterior. Note-se porem, que nao sefaz a correspondente afirmacao sobre o caso determinista.

Teorema 6.14 Para todo o AP  A, e possıvel construir um AP  A tal que N (A) = L(A).

Dem. Tambem neste caso A e uma extensao de A, executando uma pri-

meira transicao (q I , z I )λ

(q I , z I z I ) e passando a “simular” A. Quando A

atinge uma configuracao (q, γ ) para um estado de aceitacao q  ∈ F , A atingea configuracao (q,γz I ), podendo escolher nao deterministicamente continuara simular A ou esvaziar a pilha. O esvaziamento da pilha consegue-se tran-

sitando para um estado q V   por meio da regra de transicao (q, z )λ

→ (q V  , z ), o

qual se encarrega de desempilhar todos os sımbolos usando regras (q V  , z )λ

→(q V  , λ). A definicao completa de A e a seguinte:

A = (T, Q, Z , q I , z I , δ , F ),

140

Page 142: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 142/172

em que:

• Q = Q ∪ {q I , q V  } com q I , q V   ∈ Q;

• Z  = Z  ∪ {z I } com z I  ∈ Z ;

• F  = ∅;

• δ  e constituıda pelas regras de δ  e pelas regras:

– (q I , z I )λ

→ (q I , z I z I );

– (q, z )λ

→ (q V  , z ) para todo o q  ∈ F  e z  ∈ Z ; e

– (q V  , z )λ

→ (q V  , λ) para todo o z  ∈ Z .

Para x ∈ T ∗ e q  ∈ F , tem-se (q I , z I )x

(q, γ ) para um certo γ  se e so se

(q I , z I )x (q V  , λ), logo N (A) = L(A).

Exemplo 6.15 Dado o automato A do Exemplo 6.8, a tabela da funcao δ 

do automato A e a seguinte:

δ  a b λ

q I , z I  q I , z I z I q I , z I  q I , az I q I , a q I , aa q, λ

q, z I  q F , z I q, a q, λ

q F , z I  q I , az I  q V  , z I q F , z I  q V  , z I q F , a q V  , a

q V  , z q V  , λ

(Na ultima linha, z  e qualquer dos sımbolos z I , z I , a.) Note-se que,embora A seja determinista, A nao o e em virtude de se ter acrescentado a

regra (q F , z I )λ

→ (q V  , z I ).

O facto de, no teorema anterior, se chegar a um automato que pode sernao determinista, mesmo partindo de um automato determinista, e inde-sejavel, mas pode ser corrigido com um artifıcio simples. Trata-se de acres-centar um sımbolo terminador, que representaremos por $, a cada palavra, epermitir que o automato A reconheca a linguagem N (A) = L(A){$}.

Teorema 6.16 Seja A um AP determinista e $ um sımbolo n  ao pertencente a  T . Existe um AP determinista  A tal que  N (A) = L(A){$}.

141

Page 143: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 143/172

Dem. A construcao de A e semelhante a do teorema anterior. A unica

diferenca e que a decisao de esvaziar a pilha e determinista, e ocorre quandose encontra $ na fita de leitura. Mais precisamente, tem-se:

A = (T  ∪ {$}, Q, Z , q I , z I , δ , F ),

em que Q, Z  e F  se definem como anteriormente, e δ  e constituıda pelasregras de δ  e pelas regras:

• (q I , z I )λ

→ (q I , z I z I );

• (q, z )$

→ (q V  , z ) para todo o q  ∈ F  e z  ∈ Z ; e

• (q V  , z )λ

→ (q V  , λ) para todo o z  ∈ Z .

E facil ver que N (A) = L(A){$} e A e determinista.

Exemplo 6.17 Retomemos o automato A do Exemplo 6.8. A tabela dafuncao δ  para o automato A com o sımbolo terminador $ e a seguinte:

δ  a b $ λ

q I , z I  q I , z I z I q I , z I  q I , az I q I , a q I , aa q, λ

q, z I  q F , z I 

q, a q, λq F , z I  q I , az I  q V  , z I q F , z I  q V  , z I q F , a q V  , a

q V  , z q V  , λ

Esta tabela deve ser comparada com a do exemplo anterior.

Vamos agora ver uma generalizacao de automato de pilha em que sepermite que as transicoes sejam determinadas, nao apenas pelo sımbolo queesta no topo da pilha, mas possivelmente tambem por alguns sımbolos quese lhe seguem.

Definicao 6.18 [AP generalizado] Um aut´ omato de pilha generalizado define-se tal como um automato de pilha, excepto que o domınio de δ  e Q ×ZZ ∗ × (T  ∪ {λ}). Noutros termos, as regras de transicao tem a forma(q,zγ )

a→ (q , γ ) com z  ∈ Z  e γ  ∈ Z ∗. Diremos que o AP generalizado

e determinista no primeiro sımbolo se o AP que se obtem substituindo cadaregra (q,zγ )

a→ (q , γ ) por (q, z )

a→ (q , γ ) for determinista.

142

Page 144: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 144/172

Assim, em cada transicao de um AP generalizado, desempilha-se a palavra

zγ  e empilha-se γ 

. O AP generalizado e determinista no primeiro sımbolo sea escolha da transicao a efectuar ficar determinada pelo sımbolo z  do topo dapilha. O proximo resultado mostra que os AP generalizados nao aumentama classe das linguagens reconhecidas pelos AP, pelo que se resumem a ser deutilizacao mais comoda em certas situacoes. Veremos uma tal utilizacao naconstrucao de analisadores sintacticos ascendentes.

Teorema 6.19 Toda a linguagem reconhecida por um AP generalizado e reconhecida por um AP (normal). Alem disso, se o AP generalizado for determinista no primeiro sımbolo, o correspondente AP e determinista.

Dem. O AP generalizado e transformado num AP substituindo cada regra

(q, z 1 · · · z k)a

→ (q , γ ) (k > 1)

pelas regras(q, z 1)

a→ (r2, λ)

(r2, z 2)λ

→ (r3, λ)...

(rk, z k)λ

→ (q , γ )

onde r2, . . . , rk sao novos estados, distintos dos estados previamente existen-tes no automato e dos estados criados por analoga transformacao de outrasregras. A primeira das regras introduzidas le a (se a ∈ T ) e desempilha z 1; asegunda desempilha z 2, e assim sucessivamente, ate que a ultima desempilhaz k, muda o estado para q  e empilha γ . Procedendo desta forma, ve-se queos dois automatos reconhecem a mesma linguagem. Os estados r2, . . . , rknao introduzem nao determinismo, como tambem nao o introduz a regra(q, z 1)

a→ (r2, λ) se o AP generalizado for determinista no primeiro sımbolo.

Fica concluıda a demonstracao.

Vamos agora relacionar os automatos de pilha com as gramaticas inde-

pendentes do contexto.

Teorema 6.20 Para toda a gram´ atica independente do contexto G, existe um aut´ omato de pilha  A tal que  N (A) = L(G).

Dem. Dada a gramatica G = (T , N , S , P  ), define-se A = (T , Q , Z , q  I , z I , δ , F  )por

• Q = {q }.

143

Page 145: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 145/172

• Z  = V .

• q I  = q .• z I  = S .

• F  = ∅.

• δ  e definida pelas regras:

• Reconhecimento: (q, a)a

→ (q, λ) para todo o a ∈ T .

• Expans˜ ao: (q, A)λ

→ (q, α) para toda a producao A → α ∈ P .

Se mostrarmos que

(q, α)x

(q, β ) ⇐⇒ α ⇒∗

Exβ,

concluımos que

N (A) = {x ∈ T ∗ : (q, S )x

(q, λ)} = {x ∈ T ∗ : S  ⇒∗

Ex} = L(G),

como se pretende. Para demonstrar a equivalencia acima, comecemos por

supor que (q, α)x

(q, β ). Se esta transicao tiver um so passo, ela resulta daaplicacao de uma regra de reconhecimento ou de uma regra de expansao. No

primeiro caso, a transicao tem a forma (q,aα)a

(q, α), dando de imediato

aα ⇒∗

Eaα. No segundo caso tem-se uma transicao (q,Aα)

λ

(q,σα) para

uma producao A → σ, e de novo Aα ⇒E σα. Se a transicao tiver mais de umpasso, a conclusao α ⇒∗

Exβ  segue por transitividade.

Suponhamos agora que se tem uma derivacao esquerda directa xAα ⇒E

xσα para uma producao A → σ. Aplicando |x| regras de reconhecimento

e uma regra de expansao, obtem-se (q,xAα)x

(q,Aα)λ

(q,σα). Generali-zando a derivacoes esquerdas arbitrarias α ⇒∗

Exβ , obtem-se, por transitivi-

dade, (q, α)x

(q, β ).

Exemplo 6.21 Consideremos a gramatica de producoes S  → aSb | c. O

automato construıdo na demonstracao do teorema anterior tem a funcao detransicao δ  definida na seguinte tabela:

δ a b c λ

q, S q, aSb q, c

q, a q, λ

q, b q, λ

q, c q, λ

144

Page 146: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 146/172

Note-se que a casa da linha q, S  e coluna λ tem dois elementos, logo o

automato e nao determinista. A derivacao S  ⇒ aSb ⇒ acb corresponde oseguinte comportamento no automato:

ESTADO PILHA FITAq S acb

q aSb acb

q Sb cb

q cb cb

q b b

q λ λ

O nao determinismo do automato corresponde exactamente a existencia devarias producoes para um mesmo sımbolo nao terminal. A construcao doteorema anterior tem o interesse teorico de mostrar que a analise sintacticae possıvel em todos os casos. Nos capıtulos seguintes vamos estudar algunscasos importantes em que a analise sintactica pode ser feita por AP deter-ministas.

O resultado recıproco do anterior tambem e valido.

Teorema 6.22 Para todo o aut´ omato de pilha  A, existe uma gram´ atica in-dependente do contexto G tal que  L(G) = N (A).

Dem. Para todos os q, p ∈ Q e γ  ∈ Z ∗, consideremos a linguagem

N q,γ,p = {x ∈ T ∗ : (q, γ )x

( p, λ)} (6.1)

formada por todas as palavras que levam o automato da configuracao (q, γ )a configuracao ( p, λ). Dado que a linguagem N (A) e o conjunto das palavrasque levam da configuracao inicial (q I , z I ) a uma configuracao ( p, λ) paraalgum p ∈ Q, tem-se

N (A) =

 p∈QN qI ,zI ,p. (6.2)

A gramatica G = (T , N , S , P  ) que gera N (A) define-se do seguinte modo.O alfabeto terminal e o alfabeto de entrada do automato. Os sımbolos naoterminais sao o sımbolo inicial S  e um sımbolo Aq,z,p para cada (q , z , p) ∈Q × Z  × Q, que se pretende que gere a linguagem N q,z,p. Em virtude daequacao 6.2, escolhem-se para S  as producoes

S  → AqI ,zI ,p (6.3)

145

Page 147: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 147/172

para todo o p ∈ Q. Pela equacao 6.2, se cada L(Aq,z,p) = N q,z,p entao

L(S ) = N (A), como se pretende. Falta-nos definir as producoes dos sımbolosAq,z,p.

Comecemos por mostrar que se tem a igualdade

N q,z,p =

(q,z)a→(r,γ )∈δ

{a}N r,γ,p. (6.4)

(A uniao e feita para todos os elementos na linha (q, z ) da tabela de δ .) Sex ∈ N q,z,p entao, pela equacao 6.1 que define estes conjuntos, deve ter-se

(q, z )x

( p, λ). No primeiro passo da derivacao utilizou-se uma certa regra

(q, z )a

→ (r, γ ), pelo que a derivacao se decompoe em (q, z )

a

(r, γ )

y

( p, λ)com x=ay. De novo pela equacao 6.1, tem-se y ∈ N r,γ,p, logo x = ay ∈{a}N r,γ,p. Isto mostra que o membro esquerdo da equacao 6.4 esta contido noseu membro direito. O raciocınio pode ser facilmente invertido, concluindo-seque o membro direito tambem esta incluıdo no esquerdo, donde a igualdade.

Os conjuntos N r,γ,p que aparecem na equacao 6.4 nao correspondem ne-cessariamente a um sımbolo nao terminal, visto que se pode ter |γ | = 1.Assim, antes de podermos escrever as producoes para os sımbolos Aq,z,p combase na equacao 6.4, temos de ver com descrever os conjuntos N r,γ,p.

Se γ  = z  ∈ Z , para cada regra (q, z )a

→ (r, z ) a gramatica tem a producao

Aq,z,p → aAr,z,p (6.5)

visto que {a}N r,z,p ⊆ N q,z,p pela equacao 6.4.Se γ  = λ, a equacao 6.1 mostra que N r,λ,p = ∅ se r = p e N r,λ,p = {λ} se

r = p. Isto significa que na equacao 6.4 podemos ignorar as regras (q, z )a

→(r, λ) com r = p. Para cada uma das regras (q, z )

a→ ( p, λ), a gramatica tem

a producaoAq,z,p → a (6.6)

visto que, sendo N  p,λ,p = {λ}, se tem {a}N  p,λ,p = {a} ⊆ N q,z,p.Se γ  = zρ, tem-se a igualdade

N q,zρ,p =r∈Q

N q,z,rN r,ρ,p. (6.7)

Com efeito, se x ∈ N q,zρ,p entao, pela equacao 6.1, (q,zρ)x

( pλ). Como oconteudo inicial zρ da pilha e completamente desempilhado, ha uma confi-guracao intermedia (r, ρ) na anterior derivacao em que pela primeira vez oconteudo da pilha e ρ. Existem entao palavras w e y tais que x = wy e

146

Page 148: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 148/172

(q,zρ)w

(r, ρ)y

( p, λ). As transicoes de (q,zρ)w

(r, ρ) nao dependem de ρ,

visto que em nenhuma situacao intermedia o conteudo da pilha e ρ. Deve

entao ter-se tambem (q, z )w

(r, λ), o que mostra que w ∈ N q,z,r e y ∈ N r,ρ,p.Deste modo, x = wy ∈ N q,z,rN r,ρ,p, logo o membro esquerdo da equacao 6.7esta contido no seu membro direito. Por um raciocınio analogo se mostraque o membro direito esta contido no esquerdo, o que justifica que se tenhaa igualdade.

Iterando a equacao 6.7, ve-se que, se n > 1,

N q,z1···zn,p =

 p1,...,pn−1∈Q

N q,z1,p1N  p1,z2,p2 · · · N  pn−1,zn,p. (6.8)

Assim, para cada regra (q, z )a

→ (r, z 1 · · · z n) com n > 1, a gramatica tem asproducoes

Aq,z,p → aAq,z1,p1A p1,z2,p2 · · · A pn−1,zn,p (6.9)

para todos os p1, . . . , pn−1 ∈ Q, pelas equacoes 6.4 e 6.8. As producoes 6.5, 6.6e 6.9 sao todas as producoes do sımbolo Aq,z,p. Juntando as producoes destessımbolos as producoes 6.3 para S , obtem-se o conjunto P  das producoes dagramatica. Fica terminada a demonstracao.

147

Page 149: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 149/172

Capıtulo 7

Gramaticas LL(1)

[VERSAO PRELIMINAR.]Neste capıtulo apresenta-se uma classe de gramaticas independentes do

contexto — as gramaticas LL(1) — para as quais o problema da analisesintactica descendente e particularmente simples. O algoritmo e determi-nista, como e desejavel, no sentido em que em cada passo da analise existe(e e conhecida) uma unica accao a executar. Alem disso, a escolha dessaaccao e determinada pelo primeiro sımbolo da porcao da fita de leitura queainda falta analisar (um so sımbolo de avanco ou “lookahead”). O algoritmotermina sempre, quer aceitando a palavra inicial quer assinalando um erro.

Este capıtulo trata sucessivamente da definicao das gramaticas LL(1), daapresentacao de algoritmos que verificam se uma gramatica dada e LL(1), efinalmente da caracterizacao do automato de pilha associado a uma gramaticaLL(1).

7.1 Definicao das gramaticas LL(1)

Em todo este capıtulo, G = (T , N , S , P  ) e uma gramatica independente docontexto que se supoe estar na forma reduzida. Recordemos que isso significaque:

• todo o sımbolo nao terminal A e produtivo, isto e, gera uma linguagemL(A) = ∅;

• todo o sımbolo X  ∈ N  ∪ T , terminal ou nao, e acessıvel a partir dosımbolo inicial S , isto e, existem palavras α, β  ∈ (N  ∪ T )∗ tais queS  ⇒∗ αXβ .

Como de costume, pomos V  = N  ∪ T .

148

Page 150: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 150/172

Definicao do conjunto dos primeiros

Dada uma gramatica em que as producoes do sımbolo inicial sejam, porexemplo,

S  → aα | bβ 

com a, b ∈ T  e α, β  ∈ V ∗, toda a palavra gerada por S  come¸ca quer por a

quer por b. Dizemos entao que o conjunto dos “primeiros” de S  e {a, b} eescrevemos

Prim(S ) = {a, b}.

Mais geralmente, podemos definir o conjunto Prim(γ ) para qualquer palavraγ  ∈ V ∗. Por exemplo, para as duas expansoes de S  temos

Prim(aα) = {a}, Prim(bβ ) = {b},

visto que toda a palavra gerada a partir de aα comeca necessariamente pora e toda a palavra gerada a partir de bβ  come¸ca por b. A importancia de seconhecerem estes conjuntos na analise sintactica pode tambem ser ilustradacom o fragmento de gramatica anterior. Se se pretendesse analisar umapalavra da forma aγ  a partir de S , teria de se utilizar a primeira producaode S , visto que Prim(aγ ) = Prim(aα) = {a}, e prosseguia-se analisando γ  apartir de α. Se a palavra a analisar tivesse a forma bδ  entao utilizava-se asegunda producao de S . Se nao tivesse nenhuma destas duas formas, isto e,

se o primeiro sımbolo da palavra a analisar nao fosse a nem b, teria de serassinalado um erro na palavra em analise.

Suponhamos agora que as producoes de S  tinham a forma

S  → α | β 

em que Prim(α) = {a, b} e Prim(β ) = {b, c}. Se se pretendesse analisar umapalavra da forma bγ , o conhecimento apenas do primeiro sımbolo de bγ  naopermitiria decidir entre as duas producoes de S , visto que b ∈ Prim(α) eb ∈ Prim(β ). Deste modo, bγ  podia em princıpio ser gerada tanto a partirde α como a partir de β . Por esta razao, quando se tem producoes da forma

A → α1 | · · · | αn

exige-se que se i = j entao Prim(αi) ∩ Prim(α j) = ∅. Esta condicao, que eobviamente necessaria, nao e, contudo, suficiente, e sera generalizada maisadiante. Mas por agora contentemo-nos em definir rigorosamente o conjuntodos primeiros de uma palavra.

149

Page 151: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 151/172

Definicao 7.1 [Primeiros] O conjunto dos primeiros  de α ∈ V ∗, que se

denota Prim(α), define-se por

Prim(α) = {a ∈ T  : (∃β  ∈ V ∗) α ⇒∗ aβ }.

Assim, Prim(α) e o conjunto de todos os sımbolos terminais que sao osprimeiros sımbolos das palavras geradas por α. A determinacao de Prim(α),embora nao seja conceptualmente complicada, nao e tao simples como o po-dera ter dado a entender o fragmento de gramatica anterior. Um algoritmosera apresentado no paragrafo seguinte. Aqui, vamos extrair algumas con-sequencias da definicao, para a esclarecer melhor.

Propriedades 7.2 Sejam a ∈ T , A ∈ N  e α, β  ∈ V ∗. Entao:

i) Prim(a) = {a}.Imediato.

ii) Se  A → α1 | · · · | αn forem todas as produc˜ oes de  A ent˜ ao Prim(A) =Prim(α1) ∪ · · · ∪ Prim(αn).Com efeito, se a ∈ Prim(αi) entao αi ⇒∗ aγ  para algum γ  ∈ V ∗, dondeA ⇒ αi ⇒∗ aγ  e a ∈ Prim(A). Inversamente, se a ∈ Prim(A) existeuma derivacao da forma A ⇒∗ aγ . Se A → αi for a producao usada noprimeiro passo tem-se A ⇒ αi ⇒∗ aγ , o que mostra que a ∈ Prim(αi).

iii) Prim(λ) = ∅.Imediato.

iv)

Prim(αβ ) =

Prim(α) se α ⇒∗ λ,

Prim(α) ∪ Prim(β ) se α ⇒∗ λ.

Com efeito, se α ⇒∗ λ e se a ∈ Prim(β ), de forma que β  ⇒∗ aγ  paraalgum γ  ∈ V ∗, vem αβ  ⇒∗ β  ⇒∗ aγ . Nesse caso, tambem se tema ∈ Prim(αβ ).

Estas propriedades mostram que para calcular Prim(α) para α ∈ V ∗

arbitrario basta conhecer Prim(A) para todo o A ∈ N . No paragrafo seguinteapresenta-se um algoritmo que determina os primeiros de qualquer sımbolo

nao terminal. Consideremos por exemplo a gramatica de producoes

S  → AB

A → a | λ

B → b

Tem-se Prim(A) = Prim(a) ∪ Prim(λ) = {a}, Prim(B) = {b} e, como A ⇒∗

λ, Prim(S ) = Prim(AB) = Prim(A)∪Prim(B) = {a, b}. Isto alias e evidentese observarmos que L(S ) = {ab,b}.

150

Page 152: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 152/172

Definicao do conjunto dos seguintes

Consideremos a gramatica com as seguintes producoes:

S  → AB

A → a | λ

B → a

O unico sımbolo nao terminal com mais de uma producao e A, e tem-sePrim(a) ∩ Prim(λ) = {a} ∩ ∅ = ∅. Tentemos, porem analisar a palavra aa:

PILHA FITA

S aa

AB aa

?

Se o analisador tiver acesso apenas ao primeiro sımbolo da palavra na fita deleitura, do seu ponto de vista ela tanto pode ser aa como a. No primeiro caso,A → a e a producao que deve ser escolhida para expandir A em AB, enquantoque a producao apropriada ao segundo caso e A → λ. Nao e pois possıveldecidir entre as duas accoes a tomar, e o tipo de gramaticas que permite quetais situacoes ocorram tem de ser eliminado para que o analisador funcionecomo se pretende.

Para vermos o que ha de errado com a gramatica anterior, suponhamosque na pilha AB “congelavamos” temporariamente a expansao de A. A unicaexpansao possıvel para B levaria a nova pilha Aa. Ve-se assim que o sımboloa, que e um primeiro de A, tambem e um “seguinte” de A, isto e, pode ocorrerimediatamente a seguir a A numa palavra que deriva do sımbolo inicial S .Assim, quando o primeiro sımbolo da fita e a, nao se sabe em princıpio seele esta ali no papel de primeiro de A ou de seguinte de A, visto que A podegerar λ.

Definicao 7.3 [Seguintes] O conjunto dos seguintes  de A ∈ N  define-se por

Seg(A

) = {a

∈T 

: (∃α, β 

∈V ∗

)S 

∗ αAaβ }

.

Assim, como ficou dito atras, os seguintes de A sao todos os sımbolosterminais que podem ocorrer imediatamente a seguir a A em palavras quederivam do sımbolo inicial. Em face do exemplo anterior, nao e difıcil concluirque, quando se tem duas producoes distintas A → α e A → β para um mesmosımbolo nao terminal A em que α ⇒∗ λ, deve ter-se

Seg(A) ∩ Prim(β ) = ∅.

151

Page 153: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 153/172

Para ver que assim e, suponhamos, pelo contrario, que a ∈ Seg(A)∩Prim(β ).

Consideremos uma situacao em que a e o primeiro sımbolo da fita de leiturae Aγ  e o conteudo da pilha. Para a ser reconhecido, tem de ser produzido notopo da pilha, o que em princıpio pode ser feito de duas maneiras. Por umlado, a pode ser produzido por A, como em Aγ  ⇒ βγ  ⇒∗ aηγ , em virtudede ser a ∈ Prim(β ). Por outro lado, a pode ser produzido por γ , devido a sera ∈ Seg(A), vindo Aγ  ⇒ αγ  ⇒∗ γ  ⇒∗ aρ. Nao se sabe se se deve escolher aexpansao α se a β , que e precisamente o nao determinismo que se pretendeevitar.

As duas condicoes que acabamos de ver, a que se refere aos primeirose a que envolve os seguintes, podem ser reunidas numa so condicao, queapresentaremos adiante.

Definicao de gramatica LL(1)

Para integrar as condicoes dos primeiros e dos seguintes definem-se os sımbolosdirectores de uma producao.

Definicao 7.4 [Sımbolos directores] O conjunto dos sımbolos directores  deuma producao A → α define-se do seguinte modo:

Dir(A, α) = Prim(α) se α ⇒∗ λ,

Prim(α) ∪ Seg(A) se α ⇒∗ λ.

Podemos agora definir gramatica LL(1).

Definicao 7.5 [Gramatica LL(1)] Uma gramatica G diz-se LL(1) se satisfi-zer as seguintes condicoes:

• A gramatica esta na forma reduzida.

• Para todo o par de producoes distintas A → α e A → β  para o mesmosımbolo nao terminal,

– Dir(A, α) ∩ Dir(A, β ) = ∅;

– nao se pode ter α ⇒∗ λ e β  ⇒∗ λ.

A primeira destas condicoes e a reuniao numa so das condicoes dos primei-ros e dos seguintes. A segunda condicao merece alguns comentarios, para oque necessitamos de uma definicao preliminar.

Definicao 7.6 [Recursividade esquerda] Uma gramatica diz-se recursiva  seexistir um sımbolo nao terminal A tal que A ⇒+ αAβ  para alguns α, β  ∈ V ∗,e recursiva a esquerda  se A →+ Aβ  para algum β  ∈ V ∗.

152

Page 154: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 154/172

Uma gramatica recursiva nao e necessariamente indesejavel. Bem pelo

contrario, pode demonstrar-se que uma gramatica so gera uma linguageminfinita (como em geral se pretende) se for recursiva. Ja uma gramaticarecursiva a esquerda e indesejavel do ponto de vista da analise sintacticadescendente, porque pode originar computacoes infinitas. Suponhamos quenuma dada fase da analise de uma certa palavra se chegava a situacao

PILHA FITA

Aα x

e que a gramatica dada era recursiva a esquerda em A. Se se empregassemsucessivamente expansoes que levassem de A a Aβ  chegava-se a situacao

PILHA FITA

Aβα x

e o processo repetia-se indefinidamente, nao havendo pois possibilidade de oalgoritmo terminar.

Ora a primeira das condicoes definidoras das gramaticas LL(1) nao ga-rante so por si que a gramatica nao seja recursiva a esquerda. Consideremos,por exemplo, a gramatica com as seguintes producoes:

S  → A | B

A → B | λB → A | λ

Tem-se L(S ) = L(A) = L(B) = {λ}, por conseguinte os conjuntos directoressao todos vazios, e a primeira condicao verifica-se trivialmente. A gramaticae, porem, recursiva a esquerda, visto que A ⇒ B ⇒ A. Logo, a primeiracondicao so por si nao elimina a possibilidade de existencia de recursividadea esquerda. Note-se, contudo, que a gramatica em exemplo nao e LL(1),visto nao satisfazer a segunda condicao. Pode alias demonstrar-se o seguinteresultado.

Proposicao 7.7 Uma gram´ atica LL(1) n˜ ao e recursiva a esquerda.

Dem. Seja G uma gramatica LL(1) (na forma reduzida, recorde-se!) ecomecemos por admitir que G e recursiva a esquerda, para em seguida chegara uma contradicao. Seja A recursivo a esquerda, e consideremos a arvore deuma derivacao A ⇒+ Aβ . Todos os nos da raiz A a folha A sao etiquetadospor sımbolos recursivos a esquerda. Com efeito, seja B a etiqueta de umno nesse caminho, e tomemos a sub-arvore enraizada nesse no. Se na folha

153

Page 155: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 155/172

A da sub-arvore dependurarmos uma copia da arvore inicial, obtemos um

caminho da raiz B a um no B, o que mostra que B e recursivo; como osirmaos esquerdos de B geram a palavra vazia, B e recursivo a esquerda. Setodos esses sımbolos recursivos a esquerda tivessem apenas uma producao nagramatica, essa producao teria outro sımbolo recursivo a esquerda no corpo,logo os sımbolos nao seriam produtivos, contrariando a suposicao de que G

esta na forma reduzida. Assim, ha pelo menos um sımbolo nao terminalrecursivo a esquerda com mais de uma producao, e podemos supor, semperda de generalidade, que esse sımbolo e A.

Uma vez que, por hipotese, A ⇒+ Aβ , existe uma producao A → α talque A ⇒ α ⇒∗ Aβ . Como existe outra producao A → σ para A, podemosescrever

A ⇒ α ⇒∗ Aβ  ⇒ σβ.

Assim, ve-se que Prim(σ) ⊆ Prim(α). Se Prim(σ) = ∅, segue-se que Dir(A, α)∩Dir(A, σ) = ∅, contrariamente a hipotese de G ser LL(1). Se Prim(σ) = ∅,como G e reduzida tem-se L(σ) = {λ}, donde em particular σ ⇒∗ λ. Naose pode ter Prim(β ) = ∅, se nao β  ⇒∗ λ pela mesma razao anterior e por-tanto α ⇒∗ σβ  ⇒∗ λ, contrariando a segunda condicao da definicao degramatica LL(1). Logo, Prim(β ) = ∅. A derivacao anterior mostra quePrim(β ) ⊆ Seg(A) ⊆ Dir(A, σ) e Prim(β ) ⊆ Prim(α) ⊆ Dir(A, α), por con-seguinte Dir(A, α) ∩ Dir(A, σ) = ∅. Uma vez mais se contradiz a hipotese deque a gramatica dada e LL(1), e fica terminada a demonstracao.

Voltando a segunda condicao da definicao de gramatica LL(1), se elae indispensavel, como se viu, frequentemente ela e uma consequencia daprimeira condicao. Na pratica, ha uma maneira de garantir que isso se passasempre assim, adicionando a gramatica um sımbolo “terminador” $.

Proposicao 7.8 Seja  G = (T , N , S , P  ) e defina-se  G = (T , N , S , P )pondo T  = T  ∪ {$}, N  = N  ∪ {S } e  P  = P  ∪ {S  → S $}, onde  $  e S  s˜ ao sımbolos distintos n˜ ao existentes em  V . Tem-se  L(G) = L(G){$}e, se  G satisfizer a primeira condic˜ ao da definic˜ ao de gram´ aticas LL(1),tambem satisfaz a segunda.

Dem. E evidente que L(G) = L(G){$}, visto que, como e facil reconhecer,S  ⇒∗ α se e so se S  ⇒∗ α$. Uma consequencia deste facto e que se S  ⇒∗

σAθ entao θ e terminada por $, logo Seg(G, A) (os seguintes de A em G) enao vazio. Assim, se A → α e A → β  forem producoes tais que α ⇒∗ λ eβ  ⇒∗ λ, os seus conjuntos directores em G contem ambos Seg(G, A) = ∅.Como G satisfaz a primeira condicao das gramaticas LL(1), tem de ser α = β ,logo a segunda ccondicao tambem fica satisfeita.

154

Page 156: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 156/172

Com as notacoes da proposicao anterior, G e LL(1) se e so se G for LL(1).

Esta e a razao pela qual e tao util acrescentar a cada palavra gerada por Gum terminador especial $.

7.2 Verificacao das condicoes LL(1)

Nesta seccao vamos apresentar algoritmos para a determinacao dos primeirose seguintes de sımbolos nao terminais. Mostramos tambem como se podeeliminar a recursividade a esquerda de uma gramatica num caso simples.

Determinacao dos primeiros

O algoritmo consiste em definir um grafo apropriado e obter os primeirosdirectamente a partir do grafo.

Definicao 7.9 [Grafo dos primeiros] O grafo dos primeiros  define-se do se-guinte modo:

• Os vertices sao os sımbolos de V .

• Para cada producao A → X 1X 2 · · · X n com n > 0, ha uma arco deA para X 1; se X 1 ⇒∗ λ, ha tambem um arco de A para X 2, e assimsucessivamente.

Note-se que so partem arcos de sımbolos nao terminais, e nunca desımbolos terminais. Havendo um arco de A para X , a propriedade cru-cial e que A ⇒∗ Xβ  para algum β , como e facil de verificar directamentea partir da definicao de arco. Esta propriedade mantem-se valida ao longode um caminho. Assim, se existir um arco de X  para Y , tem-se X  ⇒∗ Y γ 

para algum γ , logo A ⇒∗ Y γβ . O raciocınio pode ser repetido para cami-nhos de comprimento qualquer. Em particular, se existir um caminho de A

para um sımbolo terminal a entao A ⇒∗ aα para algum α, por conseguintea ∈ Prim(A).

Inversamente, se a ∈ Prim(A), isto e, se A ⇒∗ aα para algum α, na arvore

de derivacao correspondente existe um caminho da raiz A para a folha a, etodas as folhas a esquerda dessa tem etiqueta λ. Dois nos consecutivos X 

e Y  nesse caminho na arvore estao relacionados por uma producao X  →X 1 · · · X k, em que Y  e um certo X  j. Mas entao os sımbolos X i com i < j

geram a palavra vazia, logo no grafo dos primeiros existe um arco de X  paraY . Conclui-se que existe um caminho de A para a nesse grafo. Ficou assimmostrado:

155

Page 157: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 157/172

Proposicao 7.10 Para todos os sımbolos n˜ ao terminal A e terminal a, tem-

se  a ∈ Prim(A) se e s´ o se existe um caminho de  A para  a no grafo dos primeiros.

Esta propriedade mostra que Prim(A) se calcula determinando todos osdescendentes terminais de A no grafo dos primeiros. Consideremos, porexemplo, a gramatica de producoes

S  → E $E  → T U 

U  → +T U  | λ

T  → F G

G → ∗F G | λF  → (E ) | a

Os sımbolos que geram a palavra vazia sao U  e G. Os nos do grafo dosprimeiros sao S,E,U,T,G,F, $, +, ∗, (, ), a. Os arcos podem ser descritos in-dicando os sucessores de cada no (necessariamente um sımbolo nao terminal).Na tabela seguinte mostram-se os sucessores e os primeiros dos sımbolos naoterminais.

Nos Sucessores PrimeirosS E  (, a

E T  (, aU  + +T F  (, a

G ∗ ∗F  (, a (, a

Determinacao dos seguintes

O algoritmo para determinar os seguintes e uma consequencia das duas

propriedades enunciadas a seguir. Relembre-se que estamos a supor quea gramatica em consideracao esta na forma reduzida.

Propriedades 7.11 Seja  A → αBβ  uma produc˜ ao. Tem-se:

i) Prim(β ) ⊆ Seg(B).Com efeito, como A e acessıvel tem-se S  ⇒∗ σAθ ⇒ σαBβθ paraalguns σ e θ. Se a ∈ Prim(β ), tem-se β  ⇒∗ aγ  para algum γ . Masentao S  ⇒∗ σαBaγθ, donde a ∈ Seg(B).

156

Page 158: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 158/172

ii) Se  β  ⇒∗ λ ent˜ ao Seg(A) ⊆ Seg(B).

Se a ∈ Seg(A) tem-se S  ⇒∗

σAaθ ⇒ σαBβaθ ⇒∗

σαBaθ para algunsσ e θ, logo a ∈ Seg(B).

A determinacao dos seguintes tambem se baseia na construcao de umgrafo.

Definicao 7.12 [Grafo dos seguintes] O grafo dos seguintes  define-se por:

• Os vertices sao os sımbolos de V .

• Para cada producao A → αBβ  com um sımbolo nao terminal B no

corpo,– existe um arco de B para cada b ∈ Prim(β );

– se β  ⇒∗ λ, existe tambem um arco de B para A.

Tal como no caso dos primeiros, nao e difıcil concluir que se tem a seguintepropriedade.

Proposicao 7.13 Para todos os sımbolos n˜ ao terminal A e terminal a, tem-se  a ∈ Seg(A) se e s´ o se existe um caminho de  A para  a no grafo dos seguintes.

Deste modo, Seg(A) calcula-se determinando todos os descendentes ter-minais de A no grafo dos seguintes. Para a gramatica do exemplo anterior,mostram-se na tabela seguinte os sucessores no grafo dos seguintes e os se-guintes dos sımbolos nao terminais.

Nos Sucessores SeguintesS 

E  $, ) $, )U E, U   $, )T  +, E , U   $, +, )

G T, G $, +, )F  ∗, T , G $, ∗, +, )

157

Page 159: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 159/172

Eliminacao da recursividade a esquerda

Quando uma gramatica e recursiva a esquerda, ja se sabe que nao e LL(1).Vamos apresentar um procedimento que permite transformar uma gramaticarecursiva a esquerda numa que nao o e. Este procedimento nao garante, evi-dentemente, que a gramatica obtida seja LL(1), mas e aplicavel num grandenumero de situacoes. Vamos limitar-nos a “remover” a recursividade a es-querda que surge de forma “directa” em producoes do tipo A → Aα.

Proposicao 7.14 Seja  G uma gram´ atica cujas produc˜ oes para um sımbolon˜ ao terminal  A s˜ ao

A → Aα1 | · · · | Aαn | β 1 | · · · | β k.

Seja  G a gram´ atica que se obtem substituindo estas produc˜ oes por 

A → β 1B | · · · | β kB

B → λ | α1B | · · · | αnB

em que  B e um novo sımbolo n  ao terminal n˜ ao existente em  V . Nestas condic˜ oes, tem-se  L(G) = L(G).

Dem. Nao e difıcil ver como toda a arvore de derivacao em G de raizetiquetada por A pode ser transformada numa arvore em G com a mesmafronteira, bem como a transformacao inversa.

Aplicando o procedimento descrito nesta proposicao ate nao existiremproducoes do tipo indicado, elimina-se a recursividade a esquerda directa.Por exemplo, a gramatica de producoes

S  → E $E  → E + T  | T 

T  → T  ∗ F  | F 

F  → (E ) | a

fica transformada emS  → E $E  → T U 

U  → +T U  | λT  → F G

G → ∗F G | λ

F  → (E ) | a

para os dois novos sımbolos nao terminais U  e G. Para esta gramatica jaforam calculados os conjuntos de primeiros e seguintes de cada sımbolo naoterminal. Podemos entao calcular os conjuntos directores de cada producaoe verificar se a gramatica e ou nao LL(1).

158

Page 160: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 160/172

Definicao 7.15 [Tabela de analise sintactica] Os conjuntos directores po-

dem ser representados pela chamada tabela de an´ alise sint´ actica  que, parauma gramatica G = (T , N , S , P  ), e uma tabela de linhas indexadas por N ,colunas indexadas por T , e casas preenchidas por palavras de V ∗ ou vazias.A palavra α ocupa a casa da linha A e coluna a se e so se a ∈ Dir(A, α).

A gramatica e LL(1) se e so se uma mesma casa nao for ocupada por duasou mais palavras diferentes. As casas vazias constituem situacoes de erro, aserem detectadas na analise sintactica. A tabela para a gramatica anterior ea seguinte:

( a + ∗ ) $

S E $ E $E T U T U  

U  +T U λ λ

T F G F G

G λ ∗F G λ λ

F  (E ) a

Verifica-se que a gramatica dada e LL(1).

7.3 Reconhecimento de gramaticas LL(1)Seja G = (T , N , S , P  ) uma gramatica LL(1). O automato de pilha que reco-nhece L(G) tem a forma

A = (T , Q , Z , q  I , z I , δ , F  )

em que:

• Q = {q L} ∪ {q a : a ∈ T }.

• Z  = V .

• q I  = q L.• z I  = S .

• A funcao de transicao δ  e definida mais abaixo.

• F  = ∅.

A funcao de transicao de A e descrita pelas seguintes regras:Regras de leitura 

(q L, z )a

→ (q a, z )

159

Page 161: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 161/172

para todo o estado z  ∈ Z  e todo o a ∈ T .

Regras de reconhecimento

(q a, a)λ

→ (q L, λ)

para todo o a ∈ T .Regras de expans˜ ao

(q a, A)λ

→ (q a, α)

para todo o triplo (a,A,α) tal que a ∈ Dir(A, α).Este automato e evidentemente determinista. Pretende-se a linguagem

N (A) reconhecida pelo criterio da pilha vazia. Tem-se o seguinte resultado:

Teorema 7.16 Com as notac˜ oes anteriores, L(G) = N (A).

Dem. A COMPLETAR.

Como exemplo, consideremos a gramatica de producoes

S  → E $E  → T U 

U  → +T U  | λ

T  → F G

G → ∗F G | λ

F  → (E ) | aque ja sabemos ser LL(1). As regras de leitura e reconhecimento sao analogaspara todos os automatos. Mostram-se a seguir as regras de expansao para este

exemplo. Para simplificar a leitura, cada regra (q a, A)λ

→ (q a, α) e escrita naforma a, A → a, α, omitindo-se a etiqueta λ da seta bem como os parentesesnos pares a sua esquerda e a sua direita, e representando os estados q a apenaspor a.

(, S  → (, E $ (, T  → (, F G

a, S  → a, E $ a, T  → a, F G

(, E  → (, T U  +, G → +, λ

a, E  → a, T U   ∗, G → ∗, ∗F G+, U  → +, +T U  ), G → ), λ

), U  → ), λ $, G → $, λ

$, U  → $, λ (, F  → (, (E )a, F  → a, a

Como se observa, as regras obtem-se directamente a partir da tabela daanalise sintactica, a qual contem portanto toda a informacao util para aanalise sintactica.

160

Page 162: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 162/172

Capıtulo 8

Gramaticas da famılia LR

[VERSAO PRELIMINAR.]

8.1 Gramaticas LR(0)

Neste capıtulo, G = (T , N , S , P  ) denota uma gramatica independente docontexto na forma reduzida, isto e, sem sımbolos inuteis nem improdutivos.Supomos ainda que o sımbolo inicial S  nao ocorre no corpo de nenhumaproducao. (Uma gramatica que nao satisfaca esta condicao pode ser facil-mente transformada numa que a satisfaca criando um novo sımbolo inicial

e acrescentando a producao S 

→ S .) Como de costume, V  = N  ∪ T .

Definicao 8.1 [Forma ponteada] Uma forma ponteada  e um elemento doconjunto V ∗{.}T ∗, isto e, e uma palavra γ.x formada por palavras γ  ∈ V ∗

e x ∈ T ∗ separadas por um ponto, o qual se supoe que e um sımbolo naopertencente a V .

Intuitivamente, uma forma ponteada γ.x representa uma configuracao deum analisador sintactico em que o conteudo da pilha e γ  e o da fita de leiturax. Convenciona-se que o topo da pilha e o sımbolo mais a direira de γ . Seγ  = λ ou x = λ, em vez de .x ou γ. escreveremos frequentemente λ.x e γ.λ

para simplificar a leitura.

Definicao 8.2 [Derivacao ponteada] A derivac˜ ao ponteada  e uma relacao

γ.x ¡ η.y

entre formas ponteadas, que se define pelas duas seguintes regras:

• Transferencia: γa.x ¡ γ.ax se a ∈ T .

161

Page 163: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 163/172

• Expans˜ ao: γA.x ¡ γα.x se A ∈ N  e A → α ∈ P .

O fecho reflexo-transitivo ¡∗ define-se da maneira usual.

A derivacao ponteada pode ser vista como uma derivacao direita na qualse tem um controlo mais fino relativamente as operacoes efectuadas. Narealidade, se ignorarmos o ponto, vemos que e sempre o sımbolo nao terminalmais a direita que e expandido. O ponto funciona como uma especie de marcaque indica o local da palavra onde se vai efectuar a proxima operacao. Sea esquerda do ponto estiver um sımbolo terminal, nao ha nada a fazer etransfere-se o sımbolo para a sua direita; se estiver um sımbolo nao terminal,expande-se.

Escrevendoη.y £ γ.x

seγ.x ¡ η.y

, podemos interpretar a nova relacaocomo descrevendo os passos do funcionamento do analisador sintactico quesera construıdo mais adiante. Assim, γ.ax£ γa.x consiste em ler e empilharo primeiro sımbolo da fita de leitura, e γα.x£ γA.x em “reduzir” α a A notopo da pilha por meio da producao A → α.

O resultado seguinte e basico.

Proposicao 8.3 Para todos os  γ , η , ρ , α ∈ V ∗ e  x,y,z ∈ T ∗, tem-se:

i) Se  γ.x ¡∗ η.y ent˜ ao γx ⇒∗

Dηy.

ii) Se  α ⇒∗ x ent˜ ao α.λ¡∗ λ.x.

iii)L

(G

) = {x

∈T ∗

:S.λ¡∗ λ.x

}.iv) Se  γ.x ¡∗ η.y ent˜ ao ργ.xz ¡∗ ρη.yz .

v) Se  α ⇒∗ x ent˜ ao ρα.y ¡∗ ρ.xy.

Dem. i) Uma derivacao ponteada γ 1.x1 ¡ · · · ¡ γ n.xn transforma-se numaderivacao direita eliminando o ponto das palavras γ i.xi, removendo as pa-lavras que ficam repetidas devido as aplicacoes da regra de transferencia, efinalmente substituindo ¡ por ⇒

D. Conclui-se que γ 1x1 ⇒∗

Dγ nxn.

ii) Se α ⇒∗ x, consideremos uma derivacao direita de x a partir deα. Tal derivacao direita fica inteiramente determinada pela sequencia deproducoes utilizadas. A derivacao ponteada requerida constroi-se usando a

mesma sequencia de producoes para as expansoes, juntamente com as trans-ferencias necessarias.

iii) Esta afirmacao e uma consequencia de que, pelas alıneas anteriores,S.λ¡∗ λ.x se e so se S  ⇒∗ x.

iv) A afirmacao e imediata se a derivacao dada consistir de um so passo.Assim, para uma transferencia γa.x¡γ.ax tem-se tambem ργa.xz ¡ργ.axz , eo caso da expansao e analogo. O caso geral segue por inducao no comprimentoda derivacao.

162

Page 164: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 164/172

v) E uma consequencia de ii) e iv).

Definicao 8.4 [Prefixo viavel] Um prefixo vi´ avel  e uma palavra γ  sobre V 

tal que S.λ¡∗ γ.x para algum x ∈ T ∗. Se γ  = S , diremos que e um prefixoviavel pr´ oprio.

Escrevendo γ.x £∗ S.λ, pode interpretar-se um prefixo viavel em termosdo analisador sintactico a ser definido como um valor para a pilha que podeser reduzido a S  dada uma palavra apropriada na fita de leitura.

Note-se que se γ  = ρα for um prefixo viavel entao S.λ ¡∗ ρα.y paraalgum y ∈ T ∗. Como a gramatica esta na forma reduzida, α ⇒∗ x paraalgum x ∈ T ∗, donde, pela proposicao anterior, ρα.y¡∗ ρ.xy. Conclui-se queS.λ¡∗ ρ.xy, o que mostra que ρ e um prefixo viavel. Demonstramos assim:

Proposicao 8.5 Se  γ  for um prefixo vi´ avel e  γ  = ρα ent˜ ao ρ e um prefixovi´ avel.

Definicao 8.6 [Item] Um item  de uma gramatica G e uma producao comum ponto inserido no corpo, isto e, um item tem a forma A → α.β  comA → αβ  ∈ P . Um item completo e um item da forma A → α., em queo ponto ocorre o mais a direita possıvel. O item A → . e o unico itemassociado a λ-producao A → λ (resulta da definicao geral com α = λ = β ),

e e completo.

Definicao 8.7 [Item valido] Um item A → α.β  diz-se v´ alido para o prefixoviavel γ  se γ  tiver a forma ρα e se ρA for um prefixo viavel. O conjunto dositens validos para γ  sera representado por Iv(γ ).

Assim, tem-se uma derivacao ponteada da forma

S.λ¡∗ ρA.y ¡ ραβ.y ¡∗ ρα.xy

supondo que β  ⇒∗ x. Intuitivamente, lendo a derivacao ponteada da direita

para a esquerda no sentido de£

, ve-se que o itemA

→α.β 

representa umapossibilidade que a pilha ρα tem de evoluir para ραβ  e reduzir-se a ρA pelaproducao A → αβ . A palavra β  a direita do ponto no item indica o quefalta ainda a pilha para a reducao poder ter lugar. Em particular, se A → α.

for valido para ρα, entao e possıvel reduzir imediatamente a pilha a ρA. Se,por outro lado, A → α.aβ  for valido para ρα, isso significa que e possıveltransferir a da fita de leitura para a pilha, ficando-se com o item A → αa.β 

valido para ραa.

163

Page 165: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 165/172

Assim, Iv(γ ) representa o conjunto das operacoes que e possıvel efec-

tuar no analisador sintactico quando a sua pilha e γ . Para que o analisadorseja determinista, so deve ser possıvel executar uma operacao de cada vez.Quando for possıvel reduzir a pilha, isso deve ser feito de uma unica maneira,portanto Iv(γ ) nunca deve ter dois itens completos distintos. Por outro lado,nunca deve ser possıvel ao mesmo tempo efectuar uma reducao e uma trans-ferencia, pelo que a presenca de um item completo em Iv(γ ) deve impedira existencia de um item A → α.aβ  com um sımbolo terminal a direita doponto. Quando estas condicoes nao se verificam, diz-se que se tem respec-tivamente um conflito reducao/reducao e um conflito reducao/transferencia.As gramaticas LR(0) definem-se como sendo gramaticas onde estes conflitosestao ausentes.

Definicao 8.8 [Gramaticas LR(0)] Uma gramatica diz-se LR(0) se satisfizeras seguintes condicoes:

• A gramatica esta na forma reduzida e o seu sımbolo inicial nao ocorreno corpo de nenhuma producao.

• Para todo o prefixo viavel γ  tal que Iv(γ ) contem um item completoA → α.,

– Iv(γ ) nao contem nenhum outro item completo;

– se Iv(γ ) contiver um item B → σ.Xθ, entao X  ∈ N .

Esta definicao, bem como as observacoes anteriores de caracter intuitivo,mostram bem da importancia de se dispor de um metodo para calcular osconjuntos Iv(γ ).

8.2 Calculo dos conjuntos de itens validos

O calculo dos conjuntos de itens validos baseia-se na construcao de umautomato finito apropriado. Comecamos por definir uma operacao sobreconjuntos de itens.

Definicao 8.9 [Fecho] Seja I  um conjunto de itens. O fecho de I  e o con- junto Fe(I ) de itens definido indutivamente como segue:

• I  ⊆ Fe(I ).

• Se A → α.Bβ  ∈ Fe(I ) e B → σ ∈ P  entao B → .σ ∈ Fe(I ).

Proposicao 8.10 Se  I  ⊆ Iv(γ ) ent˜ ao Fe(I ) ⊆ Iv(γ ).

164

Page 166: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 166/172

Dem. Um item de Fe(I ), ou pertence a I , e nesse caso pertence a Iv(γ ), ou

entao e da forma B → .σ para uma producao B → σ e um item A → α.Bβ em Fe(I ). Para ver que B → .σ e valido para γ  basta verificar que γB e umprefixo viavel. Por hipotese indutiva, podemos assumir que o item A → α.Bβ 

e valido para γ . Existe entao ρ tal que γ  = ρα e ρA e um prefixo viavel.Tem-se S.λ ¡∗ ρA.x ¡ ραBβ.x para um certo x, o que mostra que ραBβ  eum prefixo viavel. Pela Proposicao 8.5, γB = ραB e um prefixo viavel, comose pretendia.

Podemos agora passar a anunciada construcao do automato dos itensvalidos.

Definicao 8.11 [Automato dos itens validos] O aut´ omato dos itens v´ alidos de G tem a seguinte definicao:

M  = (V ,Q,q I , δ , Q \ {∅}),

em que:

• O alfabeto de entrada e V  = N  ∪ T .

• Q e q I  sao definidos como segue, onde cada q  ∈ Q e um conjunto deitens de G:

– q I  = Fe({S  → .α : S  → α ∈ P }) ∈ Q.

– Se q  ∈ Q e X  ∈ V  entao δ (q, X ) ∈ Q.

• A funcao δ  define-se por

δ (q, X ) = Fe({A → αX.β  : A → α.Xβ  ∈ q }),

onde q  ∈ Q e X  ∈ V .

• Todos os estados sao de aceitacao, exceptuando o conjunto vazio deitens.

Para γ  ∈ V ∗, abreviamos δ ∗(q I , γ ) para ∆(γ ). Trata-se do estado final dopercurso determinado por γ  a partir do estado inicial.

Teorema 8.12 Se γ  for um prefixo vi´ avel, ent˜ ao Iv(γ ) = ∆(γ ). Alem disso,a linguagem reconhecida por  M  e o conjunto dos prefixos vi´ aveis pr´ oprios de G.

Dem. Comecamos por mostrar a inclusao Iv(γ ) ⊆ ∆(γ ) da primeiraafirmacao. Se A → α.β  e um item valido para o prefixo viavel γ  entao,para um certo ρ ∈ V ∗, tem-se que γ  = ρα e ρA e um prefixo viavel, donde

S.λ¡∗ ρA.x¡ ραβ.x .

165

Page 167: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 167/172

A demonstracao prossegue por inducao no comprimento n desta derivacao

ponteada.Se n = 1 vem

S.λ¡0 S.λ¡ αβ.λ

para uma producao S  → αβ , donde ρ = λ, γ  = α e A = S . Tem-seS  → .αβ  ∈ q I  = ∆(λ), por definicao de q I , donde S  → α.β  ∈ ∆(α), pordefinicao de δ .

Para n > 1, consideremos na derivacao ponteada anterior a producaoB → ρ2Aη que introduziu o sımbolo nao-terminal A. A derivacao tem entaoa forma

S.λ¡∗ ρ1B.x2 ¡ ρ1ρ2Aη.x2 ¡∗ ρ1ρ2A.x1x2 ¡ ρ1ρ2αβ.x1x2

em que η ⇒∗ x1, ρ = ρ1ρ2 e x = x1x2. O item B → ρ2.Aη e valido paraρ1ρ2 = ρ, porque ρ1B e um prefixo viavel. Como a derivacao S.λ¡∗ρ1ρ2Aη.x2

tem comprimento inferior a n, podemos assumir por hipotese indutiva queB → ρ2.Aη ∈ ∆(ρ). Como o conjunto de itens ∆(ρ) e fechado, A → .αβ  ∈∆(ρ), donde A → α.β  ∈ ∆(ρα) = ∆(γ ).

Demonstraremos agora a inclusao inversa ∆(γ ) ⊆ Iv(γ ), desta vez porinducao no comprimento de γ . Consideremos em primeiro lugar o caso emque γ  = λ. Todo o item da forma S  → .α e valido para λ, porque S  eum prefixo viavel. Sendo I  o conjunto desses itens, tem-se I  ⊆ Iv(λ), logo∆(λ) = q I  = Fe(I ) ⊆ Iv(λ), pela Proposicao 8.10.

Suponhamos agora que γ  tem a forma ηX  para X  ∈ V . O conjunto∆(ηX ) = δ (∆(η), X ) e o fecho do conjunto I  = {A → αX.β  : A → α.Xβ  ∈∆(η)}. Assim, basta provar que I  ⊆ Iv(ηX ), porque, pela Proposicao 8.10,teremos ∆(ηX ) = Fe(I ) ⊆ Iv(ηX ), como se pretende. Teremos entao demostrar que se A → α.Xβ  ∈ ∆(η) entao A → αX.β  e valido para ηX , istoe, que para algum ρ se tem ηX  = ραX  e ρA e um prefixo viavel. Mas issoresulta de que, por hipotese indutiva, A → α.Xβ  ∈ Iv(η), logo η tem a formaρα e ρA e um prefixo viavel.

Vamos agora provar a ultima afirmacao. Teremos de mostrar que γ  ∈ V ∗

e um prefixo viavel proprio se e so se ∆(γ ) = ∅.

Se γ  for um prefixo viavel proprio, existe uma derivacao ponteada S.λ¡∗

γ.x de comprimento maior do que zero, para algum x ∈ T ∗. Se A foi o ultimosımbolo nao terminal a ser expandido, a derivacao anterior tem a forma

S.λ¡∗ γ 1A.x2 ¡ γ 1γ 2x1.x2 ¡∗ γ 1γ 2.x1x2

para uma producao A → γ 2x1, onde γ  = γ 1γ 2 e x = x1x2. Segue-se que oitem A → γ 2.x1 e valido para γ , isto e, pertence a Iv(γ ). Como Iv(γ ) = ∆(γ ),conclui-se que ∆(γ ) = ∅.

166

Page 168: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 168/172

Inversamente, suponhamos que ∆(γ ) = ∅. Se γ  = λ, e um prefixo viavel

proprio, visto que S.λ ¡∗

λ.x para algum x ∈ T ∗

por a gramatica estar naforma reduzida. Se γ  = ηX , como ∆(ηX ) e nao vazio tem de existir um itemda forma A → σ.Xθ em ∆(η). Mas entao ∆(η) = ∅ e, por hipotese indutiva,η e um prefixo viavel proprio. Nesse caso Iv(η) = ∆(η), por conseguinte oitem A → σ.Xθ e valido para η. Isto quer dizer que η = ρσ e ρA e um prefixoviavel para algum ρ, logo existe uma derivacao ponteada

S.λ¡∗ ρA.y ¡ ρσXθ.y ¡∗ ρσX.xy

para alguns x, y ∈ T ∗ tal que θ ⇒∗ x. Isto mostra que ηX  = ρσX  e umprefixo viavel proprio, como se pretende.

Fica concluıda a demonstracao.

8.3 Reconhecimento de gramaticas LR(0)

Seja G = (T , N , S , P  ) uma gramatica LR(0) e M  = (V ,Q,q I , δ , Q \ {∅}) oseu automato de itens validos. Consideremos o automato de pilha

R = (T , K , Z , kI , z I , →, F )

definido por:

• K  = {k, kF }.• Z  = V  ∪ Q.

• kI  = k.

• z I  = q I .

• A relacao de transicao → e definida mais abaixo.

• F  = {kF }.

Existem tres tipos de transicoes, que designaremos de “aceitacao”, “reducao”e “transferencia”. Ao escrever o conteudo da pilha como uma palavra sobreZ , o topo encontra-se a direita. Note-se que, em virtude da forma das regras

de reducao, R e um automato de pilha generalizado.Regras de aceitac˜ ao

(k, q )λ

→ (kF , q )

para todo o estado q  ∈ Q contendo um item completo S  → α. para o sımboloinicial de G.Regras de reduc˜ ao

(k, q 0X 1q 1 · · · X nq n)λ

→ (k, q 0Aq )

167

Page 169: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 169/172

Page 170: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 170/172

Definicao 8.16 [Gramaticas LR(1)] Uma gramatica G diz-se LR(1) se sa-

tisfizer as seguintes condicoes:• A gramatica esta na forma reduzida e o seu sımbolo inicial nao ocorre

no corpo de nenhuma producao.

• Sempre que algum Iv1(γ ) contenha um item completo A → α.,L,

– se Iv1(γ ) contiver outro item completo B → β.,K , tem-se L∩K  =∅;

– se Iv1(γ ) contiver um item B → σ.Xθ,K , entao X  ∈ L.

O calculo dos conjuntos Iv1(γ ) e feito de forma analoga ao dos respectivosconjuntos de itens no caso LR(0). Comecamos por caracterizar a nocaoadequada a este caso de fecho de um conjunto de itens.

Definicao 8.17 [Fecho LR(1)] Seja I  um conjunto de itens LR(1). O fechode I  e o conjunto Fe1(I ) de itens definido indutivamente como segue:

• I  ⊆ Fe1(I ).

• Se A → α.Bβ,L ∈ Fe1(I ), B → σ ∈ P  e K  = Prim(βL) entaoB → .σ, K  ∈ Fe1(I ).

Nesta definicao, Prim(βL) e o conjunto dos primeiros das palavras βa coma ∈ L. Os itens validos para prefixos viaveis sao definidos por um automato

finito, cuja definicao e muito semelhante a do caso LR(0).

Definicao 8.18 [Automato dos itens validos LR(1)] O aut´ omato dos itens v´ alidos LR(1) de G tem a seguinte definicao:

M  = (V ,Q,q I , δ , Q \ {∅}),

em que:

• O alfabeto de entrada e V  = N  ∪ T .

• Q e q I  sao definidos como segue, onde cada q  ∈ Q e um conjunto de

itens LR(1) deG

:– q I  = Fe1({S  → .α, {$} : S  → α ∈ P }) ∈ Q.

– Se q  ∈ Q e X  ∈ V  entao δ (q, X ) ∈ Q.

• A funcao δ  define-se por

δ (q, X ) = Fe1({A → αX.β, L : A → α.Xβ,L ∈ q }),

onde q  ∈ Q e X  ∈ V .

169

Page 171: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 171/172

• Todos os estados sao de aceitacao, exceptuando o conjunto vazio de

itens.Abreviamos tambem δ ∗(q I , γ ) = ∆(γ ).

Teorema 8.19 Se  γ  for um prefixo vi´ avel, ent  ao Iv1(γ ) = ∆(γ ). Alem disso, a linguagem reconhecida por M  e o conjunto dos prefixos vi´ aveis pr´ oprios de  G.

Dem. A COMPLETAR.

A definicao do automato de pilha reconhecedor e tambem semelhante aocaso anterior, supondo dado o automato M  dos itens validos para prefixos

viaveis. Em vez de um unico estado k alem do estado de aceitacao kF , oautomato de pilha tem agora um estado kL de “leitura” que se limita a lero proximo sımbolo a na fita de leitura e o memoriza transformando-se noestado ka. A operacao de transferencia no estado ka consiste em empilhar a

e mudar o estado para kL.Dado que e necessario conhecer sempre o proximo sımbolo na fita de

leitura, suporemos que ela esta terminada pelo sımbolo “terminador” $, quese supoe que nao pertence a V , como indicado mais acima.

O automato de pilha reconhecedor tem a forma

R = (T  ∪ {$}, K , Z , kI , z I , →, F )

em que:

• K  = {kL, kF } ∪ {ka : a ∈ T  ∪ {$}}.

• Z  = V  ∪ Q.

• kI  = kL.

• z I  = q I .

• A relacao de transicao → e definida mais abaixo.

• F  = {kF }.

As regras de transicao de R sao as seguintes:

Regras de leitura (kL, q )

a→ (ka, q )

para todo o estado q  ∈ Q e todo o a ∈ T  ∪ {$}.Regras de aceitac˜ ao

(k$, q )λ

→ (kF , q )

para todo o estado q  ∈ Q contendo um item completo S  → α., {$} para osımbolo inicial de G.

170

Page 172: Teoria da Computação Luís Monteiro

7/30/2019 Teoria da Computação Luís Monteiro

http://slidepdf.com/reader/full/teoria-da-computacao-luis-monteiro 172/172

Regras de reduc˜ ao

(ka, q 0X 1q 1 · · · X nq n) λ→ (ka, q 0Aq )

para todo o a ∈ T  e todo o percurso q 0X 1q 1 · · · X nq n em M  tal que q ncontenha um item completo A → X 1 · · · X n., L com a ∈ L, e onde δ (q 0, A) =q .Regras de transferencia 

(ka, q )λ

→ (kL,qaq )

para todo o a ∈ T  e todo o estado q  contendo um item com a a direita doponto, e onde δ (q, a) = q .

Tem-se o seguinte resultado esperado:

Teorema 8.20 Com as notac˜ oes anteriores, L(G) = L(R).

Dem. A COMPLETAR.

8 5 Relacoes com as gramaticas LL(1)