Escolar Documentos
Profissional Documentos
Cultura Documentos
Andr Ricardo Gonalves e c Daniel Cesar Romano Luvizotto Heber A. A. Nascimento Luiz Gustavo Andrade dos Santos
Sumrio a
1 Introduo ca 2 Grmaticas Regulares a 2.1 Gramticas Lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.2 Gramtica Regular e Linguagem Regular . . . . . . . . . . . . . . . . . . . a 3 Expresses Regulares o 3.0.1 Os Operadores de Expresses Regulares . . . . . . . . . . . . . . . o 3.1 Autmatos Finitos e Expresses Regulares . . . . . . . . . . . . . . . . . . o o 4 Propriedade das Linguagens Regulares 4.1 Lema do Bombeamento para Linguagens Regulares . . . . . . . . . . . . . 4.2 Fechamento de Linguagens Regulares sob operaes booleanas . . . . . . . co 5 Autmato o 5.1 Autmatos Finitos . . . . . . . . . . . . . . . . o 5.2 Autmatos Finitos Determin o sticos (AFD) . . . 5.2.1 AFD Processando Strings . . . . . . . . 5.3 Diagramas de Transio . . . . . . . . . . . . . ca 5.4 Tabelas de transies . . . . . . . . . . . . . . . co 5.5 Autmatos nitos no-determin o a sticos (AFND) . 3 4 4 5 6 6 6 8 8 9 10 10 11 12 13 14 14
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
6 Minimizao de Autmato Finito ca o 17 6.1 Pr Requisitos para Minimizao . . . . . . . . . . . . . . . . . . . . . . . 17 e ca 6.2 Algoritmo de Minimizao . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ca 7 Linguagens Livres de Contexto 19 7.1 Gramtica Livre de Contexto . . . . . . . . . . . . . . . . . . . . . . . . . 19 a 8 Arvore de Derivao ca 8.1 Linguagem Inerentemente Amb gua 21 . . . . . . . . . . . . . . . . . . . . . 23
9 Simplicao de Gramticas Livres do Contexto ca a 24 9.1 Excluso de s a mbolos inteis . . . . . . . . . . . . . . . . . . . . . . . . . . 24 u 9.2 Excluso de produes vazias . . . . . . . . . . . . . . . . . . . . . . . . . 25 a co 9.3 Excluso de Produes na forma A B . . . . . . . . . . . . . . . . . . . 26 a co 10 Formas Normais 1 27
10.1 Forma Normal de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . 27 10.2 Forma Normal de Greibach . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 10.3 Recurso ` esquerda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 a a 11 Autmatos com Pilha o 31 11.1 Relao entre GLC e AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ca 11.1.1 Para um APND a classe das LLC. . . . . . . . . . . . . . . . . . . . 33 12 Concluso a 34
2.1
Gramticas Lineares a
Uma Gramtica Linear denida como: a e Deniao 2.2 Seja G = (V, T, P, S) uma Gramtica e sejam A e B elementos de V e c a w uma palavra de T*[Menezes 1999]. onde: V conjunto nito de s mbolos no terminais; a T conjunto nito de s mbolos terminais; P conjunto nito de regras de produo; ca S a varivel inicial. a Ento G uma: a e Gramtica Linear a direita(GLD), se as regras de produo so da seguinte forma: a ca a A wB ou A w Gramtica Linear a esquerda(GLE), todas as regras de produo so da forma: a ca a A Bw ou A w Gramtica Linear Unitria a Direita(Esquerda). Se todas as regras de produo so a a ca a como na linear ` direita(esquerda) e |w| 1. a
2.2
Se uma linguagem L, gerada por uma Gramtica Regular, ento L um Linguagem e a a e Regular. Tambm se pode armar que se L for um Linguagem Regular, ento existe e a uma Gramtica Regular que a gera. A provas das duas armaes acimas realizadas so a co a facilmente provadas com utilizao de reconhecedores. ca
3.0.1
Os operadores de expresses regulares so os seguintes: o a Unio A unio de duas linguagens L e M, denotada por LM, ou seja, um conjunto de a a e strings que esto em L ou M, ou em ambas. Por exemplo: se L = {001, 10, 111} e a M = {, 001}, ento L M = {, 10, 001, 111}. a Concatenao A concatenao de linguagens L e M o conjunto de strings que podem ser formados ca ca e tomando-se qualquer string em L e concatenando-se esse string com qualquer string em M. Por exemplo: se L = {001, 10, 111} e M = {, 001}, ento LM = {001, 10, a 111, 001001, 100001, 111001}. Fechamento Tambm conhecido como estrela ou fechamento de Kleene, denotado por L* e e e representa o conjunto dos strings que podem ser formados tomando-se qualquer nmero de strings de L e concatenando-se todos eles. Por exemplo: se L = {0, 1} u ento L* representa todos os strings de 0s e 1s. Se L = {0, 11}, ento L* consiste a a nos strings de 0s e 1s tais que os s mbolos 1 formam pares, por exemplo, 011, 11110, 1100, 0011110.
3.1
Embora a abordagem de expresses regulares para descrever linguagens seja fundameno talmente distinta da abordagem de autmatos nitos, essas duas notaes representam o co 6
exatamente o mesmo conjunto de linguagens, que denominamos linguagens regulares. Para mostrar que as expresses regulares denem a mesma classe, devemos mostrar que: o 1. Toda linguagem denida por um desses autmatos tambm denida por uma o e e expresso regular. Para essa prova, podemos supor que a linguagem aceita por a e algum DFA. 2. Toda linguagem denida por uma expresso regular denida por um desses autmatos. a e o Para essa parte da prova, mais fcil mostrar que existe um AFND com -transies e a co que aceita a mesma linguagem.
4.1
Esse lema usado para provar se uma dada linguagem regular ou no. e e a Seja L uma linguagem regular. Ento, existe uma constante n (que depende de L) tal a que, para todo string w em L tal que |w| n, podemos dividir w em trs strings, w = e xyz, tais que: 1. y = . 2. |xy| n. 3. para todo i 0, o string xyz tambm esta em L. e Isto , sempre podemos encontrar um string no vazio y no muito longe do inicio de e a a w que pode ser bombeado, ou seja, podemos repetir y qualquer nmero de vezes, ou u exclu (o caso de i = 0), mantendo o string resultante na linguagem L. -lo Propriedade de Fechamento das Linguagens Regulares 8
1. A unio de duas linguagens regulares regular a e 2. A interseo de duas linguagens regulares regular. ca e 3. O complemento de um linguagem regular regular. e 4. A diferena de duas linguagens regulares regular. c e 5. O reverso de uma linguagem regular regular. e 6. O fechamento (estrela) de uma linguagem regular regular. e 7. A concatenao de linguagens regular regular. ca e 8. Um homomorsmo (substituio de strings por s ca mbolos) de uma linguagem regular regular. e 9. O homomorsmo inverso de uma linguagem regular regular. e
4.2
Primeiras propriedades de fechamento so as trs operaes booleanas: unio, interseo, a e co a ca e complemento. 1. Sejam L e M linguagens sobre o alfabeto . Ento, LM a linguagem que contem a e todos os strings que esto em L, em M ou em ambos. a 2. Sejam L e M linguagens sobre o alfabeto . Ento, L M a linguagem que contem a e todos os strings que esto em L e M. a 3. Seja L uma linguagem sobre o alfabeto . Ento, o complemento de L, o conjunto a e de strings em * que no esto em L. a a
5.1
Autmatos Finitos o
O que vem a ser Autmatos Finitos? De forma concisa podemos dizer que so reconheo a cedores de linguagens regulares denidos atravs de tuplas de cinco elementos da forma: e M = ( E, V, f, q0 , F ), onde: E um conjunto nito no vazio de estados do autmato nito. e a o V denominado alfabeto de entrada do autmato e corresponde a um conjunto nito e o no vazio dos s a mbolos de entrada ou tomos indivis a veis que compem a cadeia de o entrada submetida ao autmato para aceitao. o ca f uma funo de transio de estados do autmato e seu papel o de indicar as e ca ca o e transdues poss co veis em cada congurao do autmato. Esta funo mapeia o ca o ca produto cartesiano em E, ou seja, fornece para cada par (estado, s mbolo de entrada) um novo estado para onde o autmato dever mover-se. o a q0 denominado estado inicial do autmato nito, e corresponde a um elemento do cone o junto E. o estado para o qual o reconhecedor deve ser levado antes de iniciar suas e atividades. F um subconjunto do conjunto E dos estados do autmato, e contm todos os estados e o e de aceitao ou estados nais do autmato nito. Estes estados so aqueles em que ca o a o autmato deve terminar o reconhecimento das cadeias de entrada que pertencem o a ` linguagem que o autmato dene. Nenhuma outra cadeia deve ser capaz de levar o o autmato a qualquer destes estados. o 10
Exemplo 5.1 M = ({A, B}, {0, 1}, f, A, {B}) f(A, f(A, f(B, f(B, 0) 1) 1) 0) A B B A
Para este autmato nito, reconhecem-se os seguintes elementos: o Estados do autmato: A e B; o S mbolos do alfabeto de entrada: 0 e 1; Estado nal: B; Estado inicial: A; Linguagem reconhece cadeias de d gitos binrios terminadas obrigatoriamente por um a d gito 1.
5.2
Autmato nito determin o stico uma mquina de estados nitos onde, para cada par de e a estados e s mbolo de entrada, existe um prximo estado determin o stico. Um AFD consiste em: 1. Um conjunto nito de estados, denotado por Q; 2. Um conjunto nito de s mbolos de entrada, denotado por ; 3. Uma funo de transio que toma como argumentos um estado um estado e um ca ca simbolo de entrada e retorna um estado. A funo de transio ser denotada por ca ca a ; 4. Um estado inicial, um dos estados em Q; 5. Um conjunto de estados nais ou de aceitao F. O conjunto F um subconjunto ca e de Q;
A = (Q, , , q0 , F) Onde A o nome do AFD, Q seu conjunto de estados, seu conjunto de simbolos e e e de entrada, sua funo de transio, q0 seu estado inicial e F seu conjunto de estados ca ca e e de aceitao. ca
11
5.2.1
O primeiro detalhe que necessrio entender sobre um AFD como um dado AFD e a e decide se deve ou no aceitaruma seqncia de s a ue mbolos de entrada. A Linguagemdo AFD o conjunto de todos os strings que o AFD aceita. e Vamos analisar um AFD que aceita todos e somente os strings de 0s e 1s que tem a seqncia 01 em algum lugar no string, assim, podemos escrever essa linguagem L como: ue { W | W da forma x01y para alguns strings x e y que consiste em 0s e 1s } e Os exemplos de strings na linguagem incluem 01, 11010 e 100011. Os exemplos de strings que no so aceitos na linguagem , 0, e 111000. a a O que sabemos sobre um autmato que pode aceitar essa linguagem L? Primeiro, seu o alfabeto de entrada = {0, 1}. Ele tem algum conjunto de estados, Q, dos quais e um estado, digamos q0 , o estado inicial. Esse autmato tem de memorizar os fatos e o importantes sobre a parte da entrada que viu at o momento. Para decidir se 01 um e e substring da entrada, A precisa lembrar: 1. Ela j viu 01? Nesse caso, ele aceita toda seqncia de entradas adicionais; isto , ele a e e s estar em estados de aceitao de agora em diante. o a ca 2. Ele nunca viu 01, mas sua estrada mais recente foi 0; assim, se agora ele vir o 1, ter visto 01 e poder aceitar tudo que vir daqui por diante? a a 3. Ele nunca viu 01, mas sua ultima entrada ou foi no-existente (ele apenas iniciou), a ou viu um 1s Nesse caso, A no pode aceitar at ver primeiro um 0 seguido de um a e 1. Cada uma dessas trs condies pode ser representada por um estado. A condio (3) e co ca representada pelo estado inicial, q0 . Certamente, quando apenas iniciarmos, precisamos e ver um 0 seguido de um 1. Contudo, se no estado q0 vemos em seguida um 1, ento no a a estamos mais prximos de ver 01, e assim devemos car no estado q0 . Isto : o e (q0 , 1) = q0 . No entanto, se estamos no estado q0 e em seguida vemos um 0, estamos na condio (2). ca Isto , nunca vimos 01, mas temos nosso 0. Desse modo, vamos usar q2 para representar e a condio (2). Nossa transio de q0 sobre a entrada 0 : ca ca e (q0 , 0) = q2 . Agora, vamos considerar as transies a partir do estado q2 . Se vemos um 0, no co a estamos em situao melhor do que antes, mas ela tambm no pior. No vimos 01, ca e a e a mas 0 foi o ultimo s mbolo, e assim ainda estamos esperando por um 1. o estado q2 descreve essa situao perfeitamente,e ento queremos: ca a (q2 , 0) = q2 . Se estamos no estado q2 e vemos uma entrada 1, sabemos agora que existe um 0 seguido por 1. Podemos entrar em um estado de aceitao, que chamaremos q1 , e que ca corresponde a condio (1) anterior. Ou seja: ca 12
(q2 , 1) = q1 . Finalmente, devemos projetar as transies sobre o estado q1 . Nesse estado, j vimos co a uma seqncia 01; ento, independente do que acontecer, ainda estaremos em uma situao e a ca na qual vimos 01. Isto : e (q1 , 0) = (q1 , 1) = q1 . Dessa forma, Q = {q0 , q1 , q2 }. Como dissemos, q0 o estado inicial, e o unico estado e de aceitao q1 ; isto F = {q1 }. A especicao completa do autmato A que aceita a ca e e ca o linguagem L de strings que tem como substring 01, : e A = ({q0 , q1 , q2 }, {0,1}, , q0 , {q1 })
5.3
Diagramas de Transio ca
E um grafo denido como a seguir: 1. Para cada estado Q existe um n correspondente. o 2. Para cada estado q em Q e para cada s mbolo de entrada a em , seja (q, a) = p. Ento, o diagrama de transies tem um arco do n q para o n p, rotulado por a. a co o o Se existem vrios s a mbolos de entrada que causam transies de q para p, ento o co a diagrama de transies pode ter um arco rotulado pela lista desses s co mbolos. 3. Existe uma seta no estado inicial q0 , identicada como Inicio. Essa seta no se a origina em nenhum n. o 4. Os ns correspondentes aos estados de aceitao (aqueles em F) so marcados por o ca a um circulo duplo. Estados que no esto em F tem um unico circulo. a a A gura logo abaixo mostra o diagrama de transies para o AFD que aceita todos os co strings que contem o substring 01.
Neste diagrama de transies podemos observar os trs ns que correspondem aos trs co e o e estados. H uma seta de Inicio entrando no estado inicial q0 , e o unico estado de aceitao, a ca q1 , representado por um circulo duplo. Fora de cada estado h um arco rotulado por 0 e a e um arco rotulado por 1. Cada um dos arcos corresponde a um valor de .
13
5.4
Tabelas de transioes c
A tabela de transies uma representao convencional e tabular de uma funo como co e ca ca que recebe dois argumentos e retorna um valor. As linhas da tabela correspondem aos estados, e `s colunas correspondem `s entradas. A entrada para a linha correspondente a a ao estado q e para a coluna correspondente ` entrada a o estado (q, a). a e . q0 *q1 q2 0 q2 q1 q2 1 q0 q1 q1
Nesta tabela podemos observar que o estado inicial marcado com uma seta, e os e estados de aceitao so marcados com um asterisco. ca a
5.5
Um Autmato nito no determin o a stico difere do AFD porque ele tem o poder de estar em vrios estados ao mesmo tempo. Essa habilidade expressa com freqncia como a a e e capacidade de adivinharalgo sobre sua entrada. O AFND tambm tem uma funo de transio, que comumente chamada de . e ca ca e A diferena entre um AFD e um AFND esta no tipo de . Para um AFND, uma c e funo que recebe um estado e um s ca mbolo de entrada como argumentos, mas retorna um conjunto de zero ou mais estados. Vamos analisar um AFND que aceita todos os strings de 0s e 1s que terminam em 01 e somente eles. O estado q0 o estado inicial, e podemos pensar no autmato como no e o estado q0 (e talvez entre outros estados) sempre que ele ainda no tiver adivinhadoque a o 01 nal comeou. sempre poss que o prximo s c e vel o mbolo no inicie o 01 nal, mesmo a que esse s mbolo seja 0. desse modo, o estado q0 pode fazer uma transio para ele mesmo ca em 0 e em 1.
Porem, se o prximo 0, esse AFND tambm adivinha que o 01 nal comeou. Um o e e c arco identicado como 0 leva portanto de q0 ao estado q1 . Note que existem dois arcos rotulados como 0 saindo de q0 . O AFND tem a opo de ir para q0 ou para q1 e, de fato, ca ele segue os dois caminhos. No estado q1 , o AFND verica se o prximo s o mbolo 1 e, e nesse caso, vai para o estado q2 e aceita a entrada. Observe que no existe nenhum arco saindo de q1 rotulado com 0, e no existe nea a nhum arco saindo de q2 . Nessas situaes, o encadeamento no AFND correspondente a co 14
estes estados simplesmente morrem, embora outros encadeamentos possam continuar a existir. Enquanto um AFD tem exatamente um arco saindo de cara estado para cada s mbolo de entrada, um AFND no tem a mesma restrio. a ca A gura logo abaixo sugere como um AFND processa entradas. Mostramos o que acontece quando o autmato mostrado logo acima recebe a seqncia de entrada 00101. o e ele s comea em seu estado inicial q0 . Quando o primeiro 0 lido, o AFND pode ir para o c e o estado q0 ou o estado q1 , e assim ele segue os dois caminhos.
Em seguida, o segundo 0 lido. O estado q0 pode novamente ir para q0 e q1 . Porm, e e o estado q1 no tem nenhuma transio em 0, e assim ele morre. Quando a terceira a ca entrada, um s mbolo 1, ocorre, temos de considerar transies de q0 e q1 . Descobrimos que co q0 em 1, enquanto q1 s vai para q2 . Desse modo, depois de ler 001, o AFND se encontra o nos estados q0 e q2 . Como q2 um estado de aceitao, o AFND aceita 001. e ca Contudo, a entrada no esta encerrada. A quarta entrada, um 0, faz o encadeamento a de q2 morrer, enquanto q0 vai para q0 e q1 . A ultima entrada, um 1, envia q0 para q0 e q1 para q2 . Tendo em vista que estamos novamente em um estado de aceitao,00101 ca e aceito. Deniao 5.1 Autmato Finito no-determinstico c o a Um AFND essencialmente representado como um DFA: e A = (Q, , , q0 , F) Onde: Q um conjunto nito de estados. e um conjunto nito de s e mbolos de entrada. q0 um elemento de Q, o estado inicial. e F um subconjunto de Q, o conjunto de estados nais (ou de aceitao). e ca a funo de transio, uma funo que recebe um estado em Q e um s ca ca e ca mbolo de entrada em como argumento e retorna um subconjunto de Q.
15
Note que a unica diferena entre um AFND e um AFD est no tipo de calor que c a retorna: um conjunto de estados no caso de um AFND e um unico estado no caso de um AFD. Exemplo do AFND representado logo abaixo: ( {q0 , q1 , q2 }, {0, 1}, , q0 , {q2 } ). Vamos analisar a tabela de transio do mesmo citado logo acima. ca . * q0 q1 *q2 0 1 {q2 , q1 } {q0 } {q2 }
Note que as tabelas de transies podem ser usadas para especicar a funo de co ca transio para um AFND, bem como para um AFD. A unica diferena que cada entrada ca c e na tabela para o AFND um conjunto, ainda que este seja unitrio. Note tambm que, e a e quando no existe nenhuma transio de um estado sobre um dado s a ca mbolo de entrada, a entrada adequada o conjunto vazio. e
16
6.1
Para que se possa executar o algoritmo de minimizao, o autmato deve satisfazer alguns ca o requisitos, os quais seguem abaixo: O autmato deve ser Determin o stico; O autmato no deve ter estados inacess o a veis, ou seja, estados que no se possa a atingir a partir do estado inicial; A funo programa deve ser total, ou seja, a partir de qualquer estado so previstas ca a transies para todos s co mbolos do alfabeto. Caso algum destes requisitos no seja satisfeito, necessrio gerar um autmato a e a o equivalente, que satisfaa tais codioes. c c
6.2
Algoritmo de Minimizao ca
O Algoritmo de Minimizao identica os estados equivalentes por excluso. Segundo ca a [Menezes 1999], a denio do algoritmo de minimizao, dado em etapas. ca ca e Suponha um autmato nito Determin o stico M = (, Q , , q0 , F) que atende os pr-requisitos estabelecidos, ento o algoritmo de minimizao de um Autmato dado e a ca o e pelas seguintes etapas:
17
1. Construir uma tabela relacionando os estados distintos, onde cada par de estados ocorre somente uma vez. 2. Marcar todos os pares de estados do tipo {estado final , estado n~o-final}, a pois todos estados nais no so equivalentes a no-nais. a a a 3. Marcao dos estados no equivalentes. Para cada par {qu ,qv }, no marcado e para ca a a cada s mbolo a , suponha que (qu ,a) = pu e (qv ,a) = pv e: se pu = pv , ento qu equivalente a qv para p s a e mbolo a e no deve ser marcado; a se pu = pv , e o par {pu e pv } no esta marcado, ento {qu e qv } incluida em a a e uma lista a partir de {pu ,pv }, para analisar posteriormente. se pu = pv e o par {pu e pv } estiver marcado, ento: a {qu ,qv } no equivalente e deve ser marcado; a e se {qu ,qv } encabea uma lista de pares, ento deve marcar todos os pares c a da lista. 4. Unicao de estados equivalentes. Os estados dos pares no marcados so equivaca a a lentes, podem unicar-se, da seguinte maneira: a equivalncia de estados e transitiva; e pares de estados no nais equivalentes podem ser unicados como em um a unico estado nal; pares de estados nais equivalentes podem ser unicados com um unico estado nal; se algum dos estados equivalentes inicial, ento o correspondente estado unie a cado inicial. e 5. Excluso de estados Inteis. Um estado q util se no-nal e a partir de q no a u e e a a poss atingir o estado nal. Estes estados devem simplesmente elimininados do e vel autmato. o Exemplo 6.1 Minimizao ca Abaixo um exemplo de um autmato a ser minimizado e posteriormente o autmato j o o a minimizado.
18
7.1
Para um gramtica ser uma Gramtica Livre de Contexto(GLC), ela deve ser do tipo: a a G = (V,T,P,S) Na qual as regras de produo de P sejam da forma A , onde A uma varivel de V ca e a e uma palavra de (V)*. Ou seja uma Gramtica Livre de Contexto, possui do lado e a esquerdo das produes apenas uma varivel. co a Para uma linguagem ser considerada uma Linguagem Livre de Contexto (LLC) ou do tipo 2 ela deve ser gerada por uma Gramtica Livre de Contexto(GLC). a O nome Livre de contexto, vem pelo fato de representar classe a mais geral classe de linguagens cuja produo da forma A . Uma derivao , a varivel A deriva ca e ca a 19
sem depender(livre) de qualquer anlise de qualquer s a mbolo que antecede ou sucede A(contexto) na palavra que est sendo derivada. a Exemplos de linguagens que possuem duplo encadeamento: 1. G1 = ({S}, {a,b}, P1 , S1 ), tal que: P1 = {S aSb | S } Que pode gerar a palavra aabb, atravs da seguinte seqncia derivao: e ue ca S aSb aaSbb aabb Este tipo linguagem gerada tambm chamado line e guagens de bloco-estruturadas do tipo BEGIN n EN Dn . 2. G2 = ({B}, {+, *, [, ], a}, P2 , E), tal que: P2 = { B B+B | B*B | [B] | a} Que pode gerar a expresso a*[a+a], atravs da seguinte seqncia de derivaes: a e ue co B B*B B*[B] B*[B+B] a*[B+B] a*[a+B] a*[a+a]. Este tipo de linguagem gerada tambm conhecida como Linguagens com parnteses e e e balanceada na forma (n )n .
20
2. Os vrtices interiores so obrigatoriamente variveis. Se A um vrtice interior e e a a e e X1 , X2 , ..., Xn so lhos de A, ento A X1 , X2 ...Xn uma produo da gramtica a a e ca a e os vrtices X1 , X2 , ..., Xn esto ordenados da esquerda para a direita; e a
3. Um vrtice folha um s e e mbolo terminal, ou s mbolo vazio. Neste caso o vazio o unico lho de seu pai (a ); e 4. Uma unica rvore de derivaes pode representar derivaes distintas de uma mesma a co co palavra. A rvore representada pode ser gerada pelas seguintes derivaes: a co 21
1. B B+B a+B a+B*B a+a*B a+a*a 2. B B+B B+B*B B+B*B B+a*a a+a*a 3. etc.... Uma Gramtica Livre de Contexto dita uma gramtica Amb a e a gua, se existe uma palavra que possua 2 ou mais rvores de derivao. Em muitas aplicaes como desenvola ca co vimento e otimizao de algoritmos de reconhecimento melhor que a gramtica no seja ca e a a amb gua, mas nem sempre poss remover a ambigidade, e fcil denir linguagens e vel u e a para as quais qualquer Gramtica Livre de Contexto amb a e gua. A palavra x+x*x pode ser gerada por rvores distintas, por isso amb a e gua:
Para esta palavra tambm existe mais de uma derivao ` esquerda(direita): e ca a Derivao mais a esquerda : E E+E x+E x+E*E x+x*x E E*E ca E+E*E x+E*E x+x*E x+x*x Derivao mais a direita : E E+E E+E*E E+E*x E+x*x x+x*x E ca E*E E*X E+E*x E+x*x x+x*x 22
Prova-se que, uma forma equivalente de denir ambigidade de uma gramtica a u a e existncia de uma palavra com duas ou mais derivaes mais ` esquerda (direita). e co a
8.1
Uma Linguagem Inerentemente Amb e gua se qualquer Gramtica Livre de Contexto que a a dene amb e gua. A linguagem: { w | w = an bn cd dn ou an bd cd dn , n 1 , d 1 } , inerentemente amb e gua.
23
9.1
A excluso de s a mbolos inteis de uma Gramtica Livre do Contexto G = (V, T, P, S) u a e descrita pelo seguinte algoritmo, respeitando a seqncia das etapas: ue Etapa 1: toda varivel gera palavra de terminais a Primeiramente, observa-se todas as produes em que as variveis geram terminais direco a tamente, ou seja, em que no h variveis do lado direito da produo. Posteriormente, a a a ca sero adicionadas as produes nas quais possuam terminais e no-terminais no lado dia co a reito, que so as que geram palavras indiretamente. a Dado G, obter-se- G1 = (V1 , T, P1 , S) da seguinte maneira: a V1 = repita V1 = V1 { A | A P e ( T V1 )* at que o nmero de elementos de V1 n~o aumente; e u a
24
P1 = { P - { } | A no V1 , A e P } a Etapa 2: todo s mbolo atingido partindo do s e mbolo inicial. Nessa etapa, sero consideradas as produes que partem do s a co mbolo inicial. Em seguida, as que so a referenciadas por ele, e assim, sucessivamente. Dado G1 , obter-se- G2 = (V2 , T2 , P2 , S) a da seguinte maneira: T2 = ; V2 = { S }; repita V2 = V2 { A | X A P1 , X V2 } T2 = T2 { a | X A P1 , X V2 } at que o nmero de elementos de V2 e T2 n~o aumente e u a P2 = { P1 - { 2 2 } | A no V2 , a no T2 , A 2 e V2 P1 , a 2 e 2 P1 } a a
9.2
A excluso de uma Gramtica Livre do Contexto G = (V, T, P, S) pode acarretar em a a alteraes de diversas produes e descrita pelo algoritmo: co co e Etapa 1: variveis que produzem cadeia vazia. a Ser formado o conjunto de no-terminais que geram palavra vazia direta ou indiretaa a mente. Inicia-se com as produes que derivam diretamente na cadeia vazia, partindo co para as indiretas atravs desta primeira iterao. e ca V = { A | A }; repita V=V cup { X | X X1 ... Xn P; X1 , ..., Xn V } at que o nmero de elementos de V n~o aumente e u a Etapa 2: excluso de produes vazias. a co Considera-se, inicialmente, todas as produes no vazias. Depois, a produo em que o co a ca lado direito tiver uma varivel geradora de palavra vazia ser modicada a m de no a a a conter essa varivel. Dado G, obter-se- G1 = (V, T, P1, S) da seguinte maneira: a a P1 = { A | = } repita para toda A P1 e X V tal que = 1 X2 e 1 2 = faa P1 = P1 { A } c at que o nmero de elementos de P1 n~o aumente e u a Etapa 3: se necessrio, incluso da produo que gera a palavra vazia. a a ca Caso a linguagem aceite a cadeia vazia, uma produo que gere este terminal ser adicica a onada `s produes da gramtica. a co a Dado G1 , obter-se- G2 = (V, T, P2 , S) se a palavra vazia pertencer ` linguagem. a a P2 = P1 { S }
25
9.3
O algoritmo a seguir mostra como excluir produes de uma Gramtica Livre do Contexto co a G = (V, T, P, S) da forma A B, em que apenas h uma troca de variveis. a a Etapa 1: construo do fecho para cada varivel ca a O fecho de uma varivel X um conjunto formado pelas variveis que podem substituir a e a X diretamente ou transitivamente. para toda A V faa FECHO(A) = { B | A = B e A + B }; c onde as deriva~es de A para chegar em B s~o da forma A B co a Etapa 2: excluso de produes da forma A B Produes desta forma sero a co co a substitu das por expresses da forma A , onde A atinge por meio de seu fecho. o Dado G, obter-se- G1 = (V, T, P1 , S): a P1 = { A | no V } a para toda A V e B FECHO(A) faa c se B P e no V, a ento P1 = P1 { A } a Se ao simplicar uma GLC, dois ou mais algoritmos forem necessrios, ento deve-se sea a guir essa ordem para se obter uma gramtica equivalente: a
26
10.1
Para que uma GLC possa ser considerada na Forma Normal Chomsky (FNC), suas produes devem se apresentar em uma das seguintes formas: co A BC ou A a O algoritmo que segue passa uma GLC qualquer dada por G = (V, T, P, S) para a FNC, porm, sua linguagem no deve admitir a palavra vazia. e a Etapa 1: Simplicao da gramtica. Basta seguir a ordem citada anteriormente dos ca a algoritmos de simplicao e se ter G1 = (V1 , T1 , P1 , S). ca a Etapa 2: Transformao do lado direito das produes com comprimento maior ou ca co igual a dois. Aplicando a substituio de um terminal por uma varivel intermediria ca a a garante que este lado ser composto apenas por variveis. Para tal, faz-se a produo a a ca dessa varivel intermediria resultando em um terminal. a a A gramtica decorrente dessa etapa ser G2 = (V2 , T1 , P2 , S), constru pela seguinte a a da rotina: V2 = V1 P2 = P1 paratodaA X1 X2 ... Xn P2 ; n 2 faa se r 1, ..., n ,Xr um s c e mbolo terminal, ento (suponha Xr = a) a V2 = V2 Ca Substitui a pela varivel Ca em A 1 X2 ...Xn P2 ; P2 = P2 Ca a a Etapa 3: Transformao do lado direito das produes com comprimento maior ou ca co igual a trs em produes com duas variveis. e co a Criando uma nova produo onde uma nova varivel derive em duas variveis interca a a medirias da etapa anterior (estando de acordo com a restrio de Chomsky), pode-se a ca 27
substituir as duas intermedirias nas produes da etapa anterior pela nova, reduzindo a co quantidade de variveis do lado direito. Assim, poss a e vel deixar todas as produes co obedecendo a FNC. V3 = V2 P 3 = P2 para toda A B1 B2 ... Bn P3 ; n 3 faa c P3 = P3 - { A B1 B2 ...Bn } V3 = V3 {D1 , ..., Dn2 } P3 = P3 { A B1 D1 , D1 B2 D2 , ..., Dn3 Bn2 Dn2 , Dn2 Bn1 Bn }
10.2
Uma GLC est na Forma Normal de Greibach (FNG) se suas produes so todas escritas a co a da seguinte forma: A onde, A: varivel; a a: terminal; : cadeia de variveis. a A seguir, o algoritmo vai deixar uma GLC qualquer que no gere palavra vazia, dada a por G = (V, T, P, S), na FNG. Etapa 1: Simplicao da gramtica. Faa a mesma simplicao que foi feita ca a c ca na FNC e se ter G1 = (V1 , T1 , P1 , S). a Etapa 2: Renomeando as variveis e deixando-as em uma ordem crescente a qualquer. Dado n o nmero de no-terminais, A1 , A2 , ..., An sero as variveis renou a a a meadas, dispostas ordem crescente. Como h vrias maneiras distintas de se ordenar, a a existiro diversas gramticas, porm, todas equivalentes. a a e Renomeando as varivieis de G1 , obtm-se G2 = (V2 , T1 , P2 , S), onde V2 = { A1 , A2 , a e ..., An } tendo o mesmo valor de V1 P2 que tem o mesmo valor de P1 Etapa 3: Transformando as produes para a forma Ar As , tal que r co s. As produes que no tiveram a primeira varivel do lado direito menor ou igual ` do co a a a lado esquerdo ao aplicar a renomeao, sero modicadas. Substituir a varivel As pelas ca a a a produes que derivam de As . Ou seja, dado Ar As e As 1 | ... | m , resultar co a em Ar 1 | ... | m . Caso, algum seja menor do que Ar , basta reaplicar a etapa. Devido ao nmero nito de variveis, essa sucesso no ser innita, podendo ocorrer u a a a a dois casos: o primeiro s mbolo do lado direito um terminal (Ar a) ou o prprio e o no-terminal, causando uma recurso (Ar Ar ). a a Dado G2 , obtm-se G3 = (V3 , T1 , P3 , S) pela etapa 3. e P3 = P2 28
para r variando de 1 at n e faa c para s variando de 1 at r-1 e faa para toda Ar As P3 c faa excluir Ar As de P3 c para toda As P3 faa P3 = P3 { Ar } c Etapa 4: Eliminando as recurses da forma Ar Ar . o Essas recurses, chamadas recurses ` esquerda, podem ter sido originadas pela etapa ano o a terior ou j vieram da gramtica inicial. Elas podem ser eliminadas ao adicionar variveis a a a auxiliares e criando recurso ` direita (Br r ). a a G3 se mantm pela etapa 4. e para r variando de 1 at n e faa c para toda Ar Ar P3 faa excluir Ar Ar de P3 c V3 = V3 { Br } P3 = P3 { Br } { Br r } para toda Ar P3 tal que no inicia por Ar e a alguma Ar Ar alpha foi exclu da faa P3 = P3 { Ar r } c Etapa 5: Toda produo ter um terminal como primeiro s ca a mbolo do lado direito. Agora, todas as produes esto na forma Ar As , com r s, exceto as co a produes de An que, obrigatoriamente, comeam por um terminal no lado direito. Mas, co c aplicando An a em An1 An , obtm-se An1 a, que tambm possui um e e terminal como primeiro s mbolo no lado direito da produo. Aplicaes sucessivas levaro ca co a todas as produes, desde An2 at A1 , para a forma A a. co e Dado G3 , obtm-se G4 = (V3 , T1 , P4 , S) pela etapa 5. e P4 = P3 para r variando de n-1 at 1 e toda Ar As P4 e faa excluir Ar As de P4 c para toda As de P4 faa P4 = P4 { Ar } c Fazendo com que as produes das variveis auxiliares (B) tambm comecem com um co a e terminal do lado direito da sentena. c para toda Br As r f acaexcluirBr As r deP4 ; paratodaAs a faa P4 = P4 Br a r ; c Etapa 6: Produes na forma A a, onde composto somente por variveis. co e a Basta executar o mesmo algoritmo da etapa 2 da FNC.
29
10.3
Recurso ` esquerda a a
Entende-se por recurso ` esquerda quando uma varivel deriva ela mesma, de forma a a a direta ou indireta, como o s mbolo mais ` esquerda de subpalavra gerada. Gracamente: a A + A Em muitos casos, a recurso ` esquerda se torna um empecilho como por exemplo, a a no desenvolvimento de algoritmos reconhecedores de linguagem. Para elimin-la, basta a transformar a GLC numa FNG ou realizar as etapas de 1 ` 4 do algoritmo desta forma a normal.
30
: funo programa ou funo de transio: ca ca ca : Q x ( { , ? } ) x ( V { , ? } ) 2QxV uma funo parcial; ca q0: estado inicial do autmato tal que q0 elemento de Q; o e F: conjunto de estados nais tal que F est contido em Q; a V: alfabeto auxiliar ou alfabeto da pilha. Consideraes sobre a funo programa: co ca a funo pode no ser denida para alguns argumentos do conjunto de partida (pode ca a no ser total). A omisso do s a a mbolo de leitura, indicada por ?, implica pilha vazia ou que toda palavra de entrada j foi lida; a o s mbolo na leitura implica em um movimento vazio da ta ou da pilha (o autmato no faz a leitura nem move a cabea). Quando o autmato executa o a c o um movimento vazio da ta caracteriza no-determinismo. Na gravao, implica a ca que nada foi escrito na pilha (tambm no move a cabea). e a c Um Autmato com Pilha processa uma palavra de entrada, aplicando a funo proo ca grama sucessivamente para cada s mbolo lido da palavra de entrada at acontecer uma e parada. Neste caso, o autmato reconheceu (aceitou) a palavra. poss que ele que o e vel processando innitamente (ciclo ou loop innito) quando nunca se encontre uma condio ca de parada. Quando ele no atinge um estado de parada, mas a palavra foi completamente a lida, o autmato rejeita a palavra. Assim, so propostos os seguintes conjuntos (seja M o a um Autmato com Pilha): o ACEITA(M) ou L(M): conjunto de todas as palavras pertencentes a * aceitas por M; REJEITA(M): conjunto de todas as palavras pertencentes a * rejeitadas por M; LOOP(M): conjunto de todas as palavras pertencentes a * para as quais M ca em ciclo innito. Como uma palavra ou aceita por M, ou rejeitada por M, ou ca num loop innito e e em M, tem-se que estes conjuntos so disjuntos entre si. a
11.1
Dado palavra vazia no pertence ` L, uma Linguagem Livre do Contexto (LLC). Ser a a a constru um AP M a partir de uma GLC na Forma Normal de Greibach. O AP gerado do simula a derivao mais ` esquerda da produo A a, onde palavra de variveis: ca a ca e a l o s e mbolo a da ta; l o s e mbolo A da pilha; empilha a palavra . A simulao realizada para cada produo e usado um unico estado de controle. ca e ca e M constru a partir de G = (V, T, P, S): e do considere G = (V, T, P, S), como G sob a Forma Normal de Greibach; e seja M = ( T, q0 , q1 , qf },, q0 , {qf }, V ), onde : (q0 ,, ) = { ( q1 , S)} (q1 , a, A) = {(q1 , ) | A a P } 32
( q1 , ?, ?) = {(qf , ) } Atravs do nmero de movimentos de M e o de derivaes de G comprova-se que e u co ACEITA(M) = GERA(G). Assim, poss enunciar a relao: e vel ca Se L uma LLC, ento existe AP M, tal que ACEITA(M) = L. e a Pela FNG usada, pode-se concluir que qualquer LLC pode ser reconhecida por um AP com somente um estado (os estados q0 e qf no interferem na pilha). Isto mostra a a pilha ser suciente como unica memria, no precisando usar os estados para armazenar o a informaes. Portanto, a estrutura dos estados no AP no tem relao com o poder co a ca computacional. Entretanto, a quantidade de pilhas diz respeito sobre o poder computacional: Um AP sem usar a pilha funciona como um Autmato Finito, onde o unico modo de o se guardar informaes se d pelos estados. Logo, um AP sem pilha aceita, com ou sem co a determinismo, a classe das linguagens regulares. J um APD, Autmato com Pilha Determin a o stico, reconhece a um subconjunto das LLC, a classe das Linguagens Livres do Contexto Determin sticas (LLCD), dentre elas, vrias linguagens de programao. Isso porque simples implementar um APD em um a ca e computador.
11.1.1
O Autmato com 2 Pilhas (A2P) equivale ` Mquina de Turing, dispositivo mais abrano a a gente que se tem. Pelo fato de que ele tem o mesmo poder computacional de um ANP, Autmato com n Pilhas. O uso do no-determinismo no aumenta o poder computacional o a a para um A2P. Qualquer algoritmo existente, capaz de resolver um problema, pode estar na forma de um A2P.
33
34
Referncias Bibliogrcas e a
[Hopcroft 2002]HOPCROFT, J. Introduo ` Teoria de Autmatos, Linguagens e Comca a o putao. [S.l.]: Editora Campus, 2002. ca [Menezes 1999]MENEZES, P. B. Linguagens Formais e Autmatos. [S.l.]: Editora Sagra o Luzzatto, 1999.
35