Você está na página 1de 36

UNIVERSIDADE ESTADUAL DE LONDRINA TEORIA DA COMPUTACAO Profa.

Linnyer Beatrys Ruiz

Linguagens Regulares e Linguagens Livre de Contexto

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

Cap tulo 1 Introduo ca


Este trabalho visa uma recaptulao de tpicos apresentados na disciplina de Linguagens ca o Formais. Sero abordadas a Linguagem Regular e Linguagem Livre de Contexto. Aprea sentando suas caracter sticas denies. Tambm sero apresentados os Autmatos, sua co e a o denio, caracter ca sticas, seus tipos e um tpico de minimizao de Automtos. o ca a

Cap tulo 2 Grmaticas Regulares a


A denio formal de uma Grmatica Regular, segundo [Menezes 1999] dada como: ca a e Deniao 2.1 Uma Gramtica Regular qualquer gramtica linear. c a e a Para entender tal conceito, necessitamos entender primeiramente o conceito de Gramticas a Lineares.

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

Gramtica Regular e Linguagem Regular a

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

Cap tulo 3 Expresses Regulares o


As linguagens regulares podem denir exatamente as mesmas linguagens que as diversas formas de autmatos descrevem: as linguagens regulares. Mas, as expresses regulares o o oferecem algo que os autmatos no oferecem: um modo declarativo de expressar os strings o a que queremos aceitar. Dessa maneira, as expresses regulares servem como a linguagem o de entrada para muitos sistemas que processa strings. Os exemplos incluem: Comando de pesquisa como o comando grep do UNIX ou comandos equivalentes para localizar strings que so vistos em navegadores da WEB ou sistemas de a formao de textos. ca Geradores de analisadores lxicos. e

3.0.1

Os Operadores de Expresses Regulares o

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

Autmatos Finitos e Expresses Regulares o o

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.

Cap tulo 4 Propriedade das Linguagens Regulares


Um fato importante sobre as linguagens regulares a chamada propriedade de fechae mento. Essa propriedade nos permite construir reconhecedores para linguagens que so a constru das a partir de outras linguagens por certas operaes. Como um exemplo, a co interseo de duas linguagens regulares tambm regular. Desse modo, dados autmatos ca e e o que reconhecem duas linguagens regulares diferentes, podemos construir mecanicamente um autmato que reconhece exatamente a interseo dessas duas linguagens. Tendo em o ca vista que o autmato para a interseo pode ter muitos maus estados que qualquer um o ca dos dois autmatos dado, essa propriedade de fechamentopode ser uma ferramenta util o para conseguir construir autmatos complexos. o Alguns outros fatos importantes sobre linguagens regulares so as chamadas propria edades de deciso. Nosso estudo dessas propriedades nos d algoritmos para responder a a perguntas importantes sobre autmatos. Um exemplo central um algoritmo para decidir o e se dois autmatos denem a mesma linguagem. o

4.1

Lema do Bombeamento para Linguagens Regulares

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

Fechamento de Linguagens Regulares sob operaoes c booleanas

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

Cap tulo 5 Autmato o


Um autmato denido como sendo um modelo matemtico de uma mquina de estados o e a a nitos. Um autmato funciona como um reconhecedor de uma determinada linguagem e serve o para modelar uma mquina. usado, por exemplo, em editores de texto para reconhecer a e padres, em compiladores para reconhecer uma dada linguagem de programao. Um o ca conceito fundamental nos autmatos o conceito de estado e existe sempre um nmero o e u nito de estados.

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

Autmatos Finitos Determin o sticos (AFD)

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

AFD Processando Strings

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.

Figura 5.1: Diagrama de Transies co

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

Autmatos nitos no-determin o a sticos (AFND)

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.

Figura 5.2: Reconhecedor de strings que terminam em 01

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.

Figura 5.3: Processamento das Entradas do AFND

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

Cap tulo 6 Minimizao de Autmato Finito ca o


O objetivo da minimizao de um Autmato Finito, encontrar um outro autmato ca o e o que reconhea a mesma linguagem, porm utilizando um menor nmero de estados poss c e u veis. O algoritmo de minimizao unica os estados equivalentes. Dois estados so equica a valentes se, para qualquer palavra w pertencente a *, (q,w) e (p,w), resulta simultnemente em estados nais ou estados no-nais. a a Deniao 6.1 Autmato Mnimo: Um autmato m c o o nimo de uma Linguagem Regular L um Autmato Finito Determin e o stico M = (, Q, , q0 ,F) tal que ACEITA(M) = L e que, para qualquer outro Autmato Finito Determin o stico M = (, Q, , q0 ,F), tal que ACEITA(M) = L, tem-se que #Q #Q. [Menezes 1999]

6.1

Pr Requisitos para Minimizao e ca

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.

Figura 6.1: Autmato no minimizado o a

Figura 6.2: Autmato j minimizado o a

18

Cap tulo 7 Linguagens Livres de Contexto


A Classe das Linguagens Livre de Contexto(LLC) ou Tipo 2, contm a Classe das Line guagens Regulares, ou seja compreende um universo mais amplo de linguagens, com isso: Trata-se melhor questes como parnteses balanceados, construes bloco-estruturados. o e co Os algoritmos reconhecedores e geradores que implementam as Linguagens Livre de Contexto so mais simples e possuem boa ecincia. a e As aplicaes e os resultados da LLC, so analisadores sintticos, tradutores de co a a linguagem e processadores de texto em geral. A forma de estudo dessa classe desenvolvido por um gerador (gramtica) e um e a operacional ou reconhecedor(autmato), como: o Gramtica Livre de Contexto, neste caso as regras de produo so mais livres que a ca a na Gramtica Regular. a Autmato com Pilha, estrutura muito parecida a do Autmato Finito, adicionando o o uma memria auxiliar do tipo pilha. o

7.1

Gramtica Livre de Contexto a

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

Cap tulo 8 Arvore de Derivao ca


Esta forma de derivao freqentemente utilizada para representar a derivao de palaca e u ca vras em aplicaes como compiladores e processadores de texto. Neste tipo de derivao co ca parte-se do s mbolo inicial que a raiz, e termina-se nas folhas que so os terminais. A e a a rvore de Derivao segue o seguinte modelo: ca 1. A raiz o s e mbolo inicial da gramtica; a

Figura 8.1: Exemplo de Arvore de derivao ca

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

Figura 8.2: Arvore de derivao, Vrtice Anterior ca e

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

Figura 8.3: Arvore de Derivao, vrtice folha terminal ou vazio ca e e

Figura 8.4: Unica Arvore, derivaes distintas da mesma palavra co

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:

Figura 8.5: Palavra Amb 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

Linguagem Inerentemente Amb gua

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

Cap tulo 9 Simplicao de Gramticas Livres ca a do Contexto


E importante simplicar uma GLC para construir e otimizar algoritmos alm de ser usada e para provar teoremas. Isso se deve ao fato de que a simplicao no reduz o poder de ca a gerao das Gramticas Livres do Contexto. Assim, a linguagem gerada ser sempre a ca a a mesma. Para simplicar uma GLC necessrio: e a Exemplo 8.1 Excluir s 1. mbolos que no so referenciados em qualquer produo, a a ca chamados s mbolos inteis; u 2. Eliminar produes que fazem referncia a esses s co e mbolos, chamadas produes vaco zias; 3. Excluir produes que derivem diretamente na cadeia vazia. Se a linguagem aceitar co a palavra vazia, ser criado uma produo espec a ca ca para esse caso; 4. Excluir produes em que uma varivel derive em outra. Pois neste caso no h co a a a utilidade na gerao de palavras ao substituir uma varivel por outra. ca a

9.1

Excluso de s a mbolos in teis u

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

Excluso de produoes vazias a c

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

Excluso de Produoes na forma A B a c

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

1. excluso de produes vazias; a co 2. excluso de produes na forma A B; a co 3. excluso de s a mbolos inteis. u

26

Cap tulo 10 Formas Normais


So restries aplicadas nas produes das GLC que ajudam no desenvolvimento de ala co co goritmos, especialmente nos reconhecedores de linguagem. Tambm so utilizadas na dee a monstrao de teoremas. Estas formas no diminuem o poder de gerao das Gramticas ca a ca a Livres do Contexto.

10.1

Forma Normal de Chomsky

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

Forma Normal de Greibach

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

Cap tulo 11 Autmatos com Pilha o


Assim como os Autmatos Finitos esto associados `s Linguagens Regulares, os Autmatos o a a o com Pilha so os aceitadores ou reconhecedores das Linguagens Livres do Contexto. Isso a porque os Autmatos com Pilha possuem na facilidade do no-determinismo uma imo a portante caracter stica que faz aumentar o poder computacional a m de reconhecer tais linguagens. Um Autmato com Pilha ou Autmato com Pilha No-Determin o o a stico (APND) consiste basicamente de um Autmato Finito No-Determin o a stico, com uma memria adicioo nal em forma de pilha. Essa pilha independe da ta de entrada, no possui tamanho xo a nem limite mximo. Numa pilha, s a mbolos novos s podem ser acrescentados no seu topo. o Somente o ultimo s mbolo armazenado, o que se encontra no topo, pode ser consultado. Os demais s mbolos devem esperar que este seja retirado para que possam ser alcanados. c Um APND composto pelas seguintes estruturas: e Fita unidade de entrada, anloga ` do autmato nito;. a a o Pilha memria auxiliar usada para leitura e gravao; o ca Unidade de Controle detm o estado atual da mquina, possui uma cabea de ta, e a c pela qual se acessa um s mbolo da ta unidirecionalmente e que pode testar se a entrada foi toda lida. E tambm uma cabea de pilha, que se move bidirecionalmente, e c l para uma direo e escreve em outra, mas sempre no topo da pilha. Quando l, e ca e l um s e mbolo, sendo esse descartado e pode gravar mais de um por vez.Tambm e pode testar se a pilha est vazia; a Programa ou Funo de Transio executa a leitura da ta, leitura e gravao da ca ca ca pilha e atravs dela que se altera (ou no) o estado da mquina e a palavra na e e a a pilha. Possui o movimento vazio, podendo mudar de estado sem ler da ta. Um Autmato com Pilha (M) pode ser denido como uma pilha inicialmente vazia o que pra (aceita) quando se chega ` um estado nal. Formalmente, uma sxtupla: a a e e M = ( , Q, , q0 , F, V ) onde, : alfabeto de s mbolos de entrada; Q: conjunto de estados poss veis do autmato o qual nito; o e 31

: 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

Relao entre GLC e AP ca

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

Para um APND a classe das LLC.

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

Cap tulo 12 Concluso a


Como foi descrito na introduo este trabalho tinha como objetivo uma reviso de alguns ca a tpicos, referentes a disciplina de Linguagens Formais. Foram apresentadas duas Linguao gens, a Regular e a Livre de Contexto, tambm foi apresentadas as Formas Normais de e Chomsky e Greibach, alm da caracterizao, denio e aplicaes de Automtos. e ca ca co a

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

Você também pode gostar