You are on page 1of 43

1

Departamento de Informtica Curso de Cincia da Computao

Linguagens Formais
Prof Alessandra Dahmer

Santa Cruz do Sul, agosto de 2007.

Conceitos Bsicos

Uma linguagem um meio de comunicao, formada por um conjunto de palavras e de regras gramaticais que permitem combinar as palavras em sentenas sintaticamente corretas. Uma linguagem dita formal quando pode ser representada atravs de um sistema com sustentao matemtica. A Lingustica Formal compreende a representao da sintaxe (estrutura) e da semntica (significado) das sentenas de uma linguagem. Nesta disciplina ser abordada somente a estrutura sinttica das linguagens. 1.1 Alfabeto e Linguagens

Alfabeto, ou vocabulrio, um conjunto finito de smbolos. Exemplo: dgitos, letras, letras gregas, etc. Sentena, ou palavra, definida sobre um alfabeto qualquer sequncia finita de smbolos do alfabeto. Exemplo: alfabeto V = { 0,1} sentenas vlidas = 001 010011 O tamanho, ou comprimento, de uma sentena dado pelo nmero de smbolos que compem a sentena. Exemplo: alfabeto V = { a, b, c } sentena w = ab tamanho |w| = 2 Sentena vazia a sentena que no contm smbolos, possuindo tamanho 0. representada por . Seja V um alfabeto, representamos por: V* = conjunto de todas as sentenas compostas de smbolos de V incluindo a sentena vazia. + = V* - { } V Exemplos: V = { 0,1} V* = { , 0, 1, 00, 01, 10, 11, ....} V+ = { 0, 1, 00, 01, 10, 11, ....} Linguagem qualquer conjunto de sentenas sobre um alfabeto, ou seja uma linguagem L sobre um alfabeto V um subconjunto de V*. Conforme o nmero de sentenas que possuem, as linguagens se classificam em: finitas

vazias infinitas 1. 2. 3. 4. Como representar uma linguagem ? listando as palavras (s para linguagem finita) atravs de uma descrio algbrica Exemplo: L = { an bn cn | n 1} definindo um algoritmo que determina se uma sentena pertence ou no linguagem: Reconhecimento Exemplo: autmato finito definindo um mecanismo que gera sistematicamente as sentenas da linguagem em alguma ordem: Gerao Exemplo: gramtica Gramticas

1.2

Uma gramtica serve para definir qual o subconjunto de sentenas que faz parte de uma determinada linguagem. um dispositivo formal para especificar potencialmente infinita de uma forma finita. uma linguagem

Existem diversas formas de representar a sintaxe das linguagens: BNF, diagramas de sintaxe, notao formal de gramtica. Notao Formal de Gramtica Uma gramtica G definida por uma qudrupla G = ( N, T, P, S ) onde N - conjunto finito de no-terminais (ou variveis) T - conjunto finito de terminais P - conjunto finito de regras de produo S - smbolo inicial da gramtica Observaes: NT = V = NT SN P = { | V+ e V* } Exemplo: G = ( N, T, P, I ) N = { I, D } T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

P= {ID,D0,D1,D2,D3,D4,D5, D6,D7,D8,D9} Convenes Para facilitar a compreenso das expresses, so adotadas sempre que possvel as seguintes convenes: Letras maisculas do incio do alfabeto para smbolos no-terminais T = { a, b, c, ... t } Letras minsculas do incio do alfabeto para smbolos terminais Letras minsculas do fim do alfabeto para T* = { u, v, ... z } sequncias de terminais ( N T )* = { , , , ... } Letras gregas para sequncias de variveis e terminais N T = { U, V, ... Z } Letras maisculas do fim do alfabeto para um smbolo terminal ou no-terminal Derivao Derivao uma operao de substituio efetuada de acordo com as regras de produo da gramtica. Representa-se esta operao pelo smbolo Logo: se P e e V* Uma sequncia de derivaes, de zero ou mais passos, representada por *=> . Isto : se 1 *=> m 1 2, 2 3, ...., m-1 m, 1, 2, ..., m V* Para garantir que pelo menos uma derivao seja efetuada, a notao utilizada +=> . Isto : 1 +=> m se 1 2, 2 *=> m, 1, 2, ..., m V* N = { A, B, C, ... T }

Sentena e Forma Sentencial Uma sentena de uma linguagem uma sequncia formada de terminais, obtida a partir do smbolo inicial da gramtica desta linguagem, atravs de derivaes sucessivas. S
+ > =

{u= sequncia de terminais}

Uma forma sentencial uma sequncia qualquer, composta de smbolos terminais e de no-terminais, obtida a partir do smbolo inicial da gramtica atravs de derivaes sucessivas. S
* =>

{=sequncia de variveis e terminais}

Linguagem A linguagem gerada por uma gramtica G = ( N, T, P, S ) o conjunto de todas as sentenas que podem ser geradas a partir do smbolo inicial desta gramtica, atravs de derivaes sucessivas. L(G) = { w | w T* e S +=> w } Exemplo: G = ( N, T, P, S ) G = ( {S}, {0,1}, P, S ) P = { S 0S1 S 01 } S 0S1 00S11 03S13 .... 0n-1S1n-1 0n1n L(G) = { 0n 1n | n 1 }

1.3

Tipos de Gramticas

Segundo a hierarquia de Chomsky, as gramticas podem ser de quatro tipos. Para G = ( N, T, P, S ) e V = N T, temos: Tipo 0 - Gramticas Irrestritas (GI) So definidas pelas seguintes regras de produo: P = { | V+ , V* } Ou seja, do lado esquerdo da produo pode haver uma sequncia de quaisquer smbolos. Do lado direito da produo pode haver qualquer sequncia de smbolos, inclusive a sentena vazia. Tipo 1 - Gramticas Sensveis ao Contexto (GSC)

Regras de produo na forma: P = { | || <= || } Ou seja, o comprimento da sentena do lado esquerdo deve ser menor ou igual ao comprimento da sentena do lado direito da produo. Do lado direito no aceito a sentena vazia. Ex: 1A2 1B2 Tipo 2 - Gramticas Livres de Contexto (GLC) Quando as regras de produo so todas na seguinte forma: P = { | N e } Ou seja, do lado esquerdo da produo deve, sempre, ocorrer um e apenas um no-terminal. A sentena vazia tambm no aceita do lado direito da produo. {no interessa o contexto em que X se encontra} Ex: X abcX Tipo 3 - Gramticas Regulares (GR) Toda produo da forma: A aB ou Aa Ou seja: P = { A aX | A N, a T, X N {} } Ou seja, do lado esquerdo da produo deve, sempre, ocorrer um e apenas um no-terminal e do lado direito podem ocorrer ou somente um terminal, ou um terminal seguido de um no-terminal. Observao:

Exemplo de Gramtica Livre de Contexto: G = ({ S, A, B }, { a, b }, P, S ) P = { S aB | bA A bAA | a | aS B b | bS | aBB } L(G) o conjunto de todas as palavras em T que tem o mesmo nmero de as e bs. Linguagens geradas por gramticas

Conforme o tipo da gramtica que d origem a uma linguagem, estas se classificam em: LSC - Linguagem Sensvel ao Contexto LLC - Linguagem Livre de Contexto LR - Linguagem Regular A sentena vazia Vamos estender as definies das gramticas Tipo 1, 2 e 3 para permitir produes do tipo S , sendo S o smbolo inicial. Entretanto, isto s ser possvel se S no aparecer do lado direito de qualquer produo. Desde modo, a regra S somente ser utilizada para dar origem sentena vazia. A gramtica que possuir o smbolo inicial aparecendo do lado direito de regras de produo, dever ser transformada em outra equivalente que obedea a esta restrio. Observao: gramticas equivalentes devem gerar a mesma linguagem. Quando for necessrio transformar a gramtica, dever ser includo um novo smbolo no-terminal (S) que passar a ser o novo smbolo inicial. Em seguida, devero ser includas em P todas as regras que tinham o smbolo S do lado esquerdo, substituindo este por S, mais a regra S . Exemplo: Modificar a gramtica abaixo de modo a incluir a sentena vazia. G = { { S }, {a}, P, S } P = { S aS | a } Resposta: G = { { S, S }, {a}, P, S } P = { S S | S aS | a }

Expresses Regulares (ER)

Toda linguagem regular pode ser descrita por uma expresso simples, denominada Expresso Regular (ER). Trata-se de um formalismo gerador, pois expressa como construir (gerar) as palavras da

linguagem. Uma ER definida recursivamente a partir de conjuntos (linguagens) bsicas e operao de concatenao e unio. Linguagens Regulares gramticas expresses regulares autmatos finitos geradores de linguagens reconhecedores de linguagens

Regras de formao de expresses regulares Dado um alfabeto 1) 2) 3) 4) os smbolos do alfabeto so expresses regulares; se R1 e R2 so ER, ento (R1 R2 ) uma ER; se R1 e R2 so ER, ento (R1 R2 ) uma ER; se R1 uma ER, ento (R1)* uma ER; (R1 R2) (R1) *

representa concatenao de linguagens; representa a linguagem formada pela concatenao de zero ou mais palavras de R1. (R1|R2) representa unio de linguagens Observao: p+ = pp* Exemplos: Expresso Regular aa ba* (a) * (a | b)* (a (a | b))* (a (a | b)*) Identificadores l(l|d|_)* Inteiro com sinal (+ | -) d ( d )* Linguagem Gerada contm somente a palavra aa todas as palavras que iniciam por b, seguido de zero ou mais as { , a, aa, aaa, ... } { , a, b, aa, ab, bb, ba, aaa, ... } { , aa, ab, aaaa, abaa, aaab, ... } { a, aa, ab, aaa, aba, aab, ... } { l, ll, ld, l_, lll, lld,... } { +d, -d, +dd, -dd, +ddd, -ddd,...}

Autmato Finito (AF)

Um autmato finito um modelo matemtico (mquina abstrata) de um sistema, com entradas e sadas discretas. O sistema pode estar em qualquer uma de um nmero finito de configuraes internas (ou

estados). O estado de um sistema resume as informaes anteriores, at o momento atual do reconhecimento, necessrias para determinar o seu comportamento face ao resto da sequncia que est analisando. Um bom exemplo de um autmato finito o mecanismo de controle de um elevador. Ele no lembra todas as requisies anteriores mas somente o andar atual, a direo de movimento (para cima ou para baixo), e a relao de requisies pendentes. 3.1 onde: K q0 F Autmato Finito Determinstico (AFD) Um AFD definido formalmente por uma 5-tupla (K, , , q0, F), um conjunto finito, no vazio, de estados um alfabeto finito de entrada o estado inicial e q0 K o conjunto de estados finais e F K a funo de transio de estados, mapeando K x em K. Isto , (q, a) um estado para cada estado q e smbolo de entrada a.

Um autmato finito representado atravs de um controle finito, que tem acesso a uma fita onde est a sequncia a ser analisada. O autmato percorre esta fita da esquerda para a direita, lendo um smbolo de cada vez. Estando o controle em um estado, apontando para um determinado smbolo na entrada, ocorre uma transio de estado, que faz com que o controle passe para outro estado e avance para o prximo smbolo na entrada. Se isto se repetir com sucesso at o final da fita de entrada e, no final, o autmato estiver em um estado final, a sequncia foi reconhecida. Se, ao contrrio, ocorrer alguma falha (transio impossvel) o reconhecimento para e a sequncia no reconhecida.

( q, a ) = p

para q e p K e a , significa que, estando M no estado q e lendo o smbolo de entrada a, o cabeote de leitura movido uma clula para a direita e M vai para o estado p.

Diagrama de Transio Uma outra maneira de representar um autmato finito o diagrama de transio. Trata-se de um grafo direcionado e rotulado. Os vrtices representam os estados, sendo representados por crculos. Os

10

estados finais so representados por 2 crculos concntricos e o estado inicial indicado por uma seta. As arestas representam as transies entre 2 estados, sendo o rtulo o smbolo reconhecido. Exemplo:

( q0, a ) = q1 ( q1, a ) = q1 ( q1, b ) = q2

M = ( { q0, q1, q2 }, { a, b }, , q0, {q2} ) L(M) = { an b | n 1 }

Tabela de Transio de Estados Uma terceira maneira de representar um autmato finito atravs de uma tabela, indicando na vertical os estados e na horizontal os smbolos do alfabeto. O estado inicial indicado com uma seta e os finais com asteriscos. O contedo da tabela indica as transies de estado possveis. a b q0 q1 q1 q1 q2 * q2 Exemplo: Autmato finito que reconhece sentenas em { 0, 1 }, as quais no contm dois ou mais 1s consecutivos.

M ( ( (

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

* *

q0 q1

0 q0 q0

1 q1 -

11

Extenso da funo para o domnio K x * (q, ) = q (q, xa ) = ( (q, x ), a ) para x * e a .

(q, x ) = p significa que M, iniciando no estado q, com a sequncia x na fita de entrada, entrar no estado p, aps o cabeote mover-se para a direita tantas clulas quanto for o comprimento de x. Uma sentena x aceita por M se ( q0, x ) = p para algum p em F. Linguagem aceita por M O conjunto de todos os x aceitos por M : T(M) = { x | ( q0, x ) = p p F } Qualquer conjunto de sentenas aceito por um autmato finito dito ser REGULAR. 3.2 Autmato Finito No-Determinstico (AFND)

Um AFND um sistema (K, , , q0, F), onde: K um conjunto finito, no vazio, de estados um alfabeto finito de entrada o estado inicial e q0 K q0 F o conjunto de estados finais e F K a funo de transio de estados, mapeando K x em 2K. Isto , (q,a) um subconjunto de K para cada estado q e smbolo de entrada a. Observao: 2K o conjunto de todos os subconjuntos de K Diferena importante entre determinsticos e no-determinsticos: (q, a) um conjunto de estados (possivelmente vazio) ao invs de um nico estado. (q, a) = { p1, p2, ..., pk }, significa que, M estando no estado q, olhando a na fita de entrada, move uma clula para a direita e escolhe qualquer um de p1, p2, ..., pk como prximo estado. Exemplo: AFND que aceita o conjunto de todas as sentenas que contm dois 0s ou dois 1s consecutivos.

12

M = ( { q0, q1, q2, q3, q4 }, { 0, 1 }, (q0, 0) = { q0, q3 } (q1, 0) = (q2, 0) = { q2 } (q3, 0) = { q4 } (q4, 0) = { q4 }

, q0, { q2, q4 } ) (q0, 1) = { q0, q1 } (q1, 1) = { q2 } (q2, 1) = { q2 } (q3, 1) = (q4, 1) = { q4 }

Equivalncia entre DFAs e NFAs Teorema: Se L um conjunto aceito por um autmato finito nodeterminstico, ento existe um autmato finito determinstico que aceita L.

Seja M = ( K, , , q0, F ) um AFND que aceita L. Definimos um AFD M = ( K, , , q0, F ) tal que: - os estados de M constituem todos os subconjuntos do conjunto de estados de M: K = 2K. - F o conjunto de todos os estados de K contendo um estado de F. - um elemento de K denotado por [ q1 q2 ... qi ] onde q1 q2 ... qi K. - q0 = [ q0 ] - definimos ([ q1 q2 ... qi ], a ) = [ p1 p2 ... pj ] se e somente se ( { q1, q2, ... qi } , a ) = { p1, p2, ... pj } = = ( q1, a ) ( q2, a ) ... ( qi, a ) Exemplo Dado o AFND M = ( { q0, q1 }, { 0, 1 }, , q0, { q1 } ), onde: ( q0, 0 ) = { q0, q1 }

13

( q0, 1 ) = { q1 } ( q1, 0 ) = ( q1, 1 ) = { q0, q1 } Construir um AFD M que reconhea a mesma linguagem que M. M = ( K, { 0, 1 }, , [q0], F ) K = { [q0], [q1], [q0 q1], } F = { [q1], [q0 q1] } ( ( ( ( q0, q0, q1, q1, 0 1 0 1 ) ) ) ) = = = = { q0, q1 } { q1 } { q0, q1 } ( ( ( ( [q0], [q0], [q1], [q1], 0 1 0 1 ) ) ) ) = = = = [ q0, q1 ] [ q1 ] [ q0, q1 ]

( [q0, q1], 0 ) = [ q0, q1 ] desde que ( {q0, q1 }, 0 ) = ( q0, 0 ) ( q1, 0 ) = { q0, q1 } = { q0, q1 } e ( [q0, q1], 1 ) = [ q0, q1 ] desde que ( {q0, q1 }, 1 ) = ( q0, 1 ) ( q1, 1 ) = { q1 } { q0, q1 } = { q0, q1 } (, 0 ) = (, 0 ) = * q0 q1 [q0] [q1] [q0,q1] 0 {q0, q1} 0 [q0,q1] [q0,q1] 1 q1 {q0, q1}

* *

1 [q1] [q0,q1] [q0,q1]

3.3

Autmato Finito No-Determinstico com movimentos (AFND-)

Pode-se estender o modelo do AFND para permitir transies com o como smbolo de entrada. Como exemplo tomemos o diagrama de transio abaixo que aceita a linguagem consistindo de qualquer nmero (incluindo zero) de 0s, seguido de um nmero qualquer de 1s que so seguidos igualmente de por um nmero qualquer de 2s.

14

Formalmente, ns definimos AFND- como sendo uma quntupla (K, , , q0, F), onde: K q0 F um conjunto finito, no vazio, de estados um alfabeto finito de entrada o estado inicial e q0 K o conjunto de estados finais e F K a funo de transio de estados, mapeando K x ( {} ). A inteno que (q, a) consiste de todos os estados p tal que existe uma transio a de q para p, onde a ou um smbolo de .

Exemplo: A tabela de transio para o AFND- acima a seguinte * q0 q1 q2 0 {q0} 1 {q1} 2 {q2} {q1} {q2}

Ns devemos estender a funo de transio para a funo que mapeia K x * em 2K. O resultado desta funo ser todos os estados p tal que pode-se ir de q para p atravs de um caminho w, talvez incluindo-se arcos . Na construo de ser importante saber o conjunto de estados atingveis a partir de um determinado estado q usando-se somente . Ns utilizamos -CLOSURE(q) para assinalar o conjunto de todos os estados p, tal que existe um caminho de q para p nomeado . Exemplo: No exemplo acima o -CLOSURE(q0) = {q0, q1, q2} . Ns podemos considerar que o -CLOSURE(P), onde P um conjunto de estados, seja q em P -CLOSURE(q). Agora, ns definimos como segue:

15

1) 2)

(q, ) = -CLOSURE(q). Para w em * e a em , (q, wa) = -CLOSURE(P), onde P = { p | para algum r em (q, w), p est em (r, a)} Ou seja, (q, a) = -CLOSURE (((q, ),a))

Exemplo: Considere novamente o exemplo dado anteriormente. (q0, ) = -CLOSURE(q0) = {q0, q1, q2} ento (q0, 0) = -CLOSURE( -CLOSURE( -CLOSURE( -CLOSURE( -CLOSURE( (q0, 1) = -CLOSURE( -CLOSURE( -CLOSURE( -CLOSURE( -CLOSURE( ( (q0, ), 0) ( {q0, q1, q2}, 0) (q0, 0) (q1, 0) (q2, 0) ) {q0} ) {q0} ) = {q0, q1, q2} ( (q0, ), 1) ( {q0, q1, q2}, 0) (q0, 1) (q1, 1) (q2, 1) ) {q1} ) {q1} ) = {q1, q2}

Equivalncia entre AFNDs e AFND-s Teorema: Se L aceita por um AFND-, ento L aceita por um AFND. Considere que M = (K, , , q0, F) seja um AFND-. possvel construir um AFND M = (K, , , q0, F), que no possui transies , onde: F = F {q0} se -CLOSURE ( {q0} ) possui um estado de F, ou F nos outros casos, e (q,a) (q, a) para q K e a . Exemplo: Considere o AFND- dado anteriormente, transformado em AFND: q0 q1 q2 0 {q0,q1,q2} 1 {q1,q2} {q1,q2} 2 {q2} {q2} {q2}

* *

16

O diagrama seria assim:

3.4

Relao entre Autmatos Finitos e Gramticas Regulares

Teorema: Se G = (N, T, P, S) uma gramtica do tipo regular ento existe um autmato finito M = (K, T, , S, F) tal que T(M) = L(G). M um AFND (ou AFND-) os estados de M so as variveis de G, mais um estado adicional A: K = N {A} e A N o estado inicial de M S se P tem produo S ento F = {S,A}, caso contrrio F = {A} transies de M: 1. (B,a) = A para cada B a P 2. (B,a) = C para cada B aC P 3. (A,a) = para todo a T Exemplo: G = ( {S,B}, {0,1}, P, S ) P = { S 0B B 0B | 1S | 0 } Construir um autmato finito que aceite L(G): M = ( {S,B,A}, {0,1}, , S, {A} ) um AFND (ou AFND-) (S,0) = {B} S 0B (S,1) = (B,0) = {B,A} B 0B | 0 (B,1) = {S} B 1S

17

3.5

Equivalncia entre Autmatos Finitos e Expresses Regulares

Teorema: Considere que r uma expresso regular. Ento existe um AFND que aceita L(r).

CASO 1: r = r1 + r2 A construo de M mostrada na figura abaixo.

Qualquer caminho no diagrama de transio de M a partir de q0 para f0 precisa comear indo para q1 ou q2 com . Se o caminho vai para q1, ento ele seguir qualquer caminho em M1 para f1 e ento ir para f0 com . Similarmente, podemos concluir o mesmo com caminhos atravs de M2. Estes so os nicos caminhos possveis de q0 para f0. Segue-se imediatamente que existe um caminho x em M a partir de q0 para f0 se e somente se existe um caminho x em M1 a partir de q1 para f1 ou caminho x em M2 a partir de q2 para f2. Ento L(M) = L(M1) L(M2) como desejado. CASO 2: r = r1 r2 A construo de M mostrada na figura abaixo.

Cada caminho em M a partir de q1 para f2 um caminho x de q1 para f1, seguido pela ligao de f1 para q2 por seguido por um caminho y de q2 para f2. Ento L(M) = { xy | x L(M1) e y L(M2)} e L(M) = L(M1) L(M2) como desejado.

18

CASO 3: r = r1* A construo de M mostrada na figura abaixo.

Cada caminho a partir de q0 para f0 consiste de um caminho de q0 para f0 com ou um caminho de q0 para f1 com seguido por algum nmero (possivelmente zero) de caminhos de q1 para f1 e ento novamente para q1 com , cada caminho determinado por uma sequncia de smbolos L(M1), seguido por um caminho de q1 para f1 com com uma sequncia de smbolos L(M1) e finalmente para f0 com . Ento existe um caminho x em M a partir de q0 para f0 se e somente se ns podemos escrever x = x1 x2 ... xj para algum j >= 0 (o caso j = 0 x = ) tal que cada xi est em L(M1). Ento L(M) = L(M1)* como desejado. Exemplo: Construir um AFND- para expresso regula 0 1* | 1. Podemos reescrever essa expresso com parenteses para ficar mais claro a precedncia. Ela ficaria assim: (0(1*)) | 1, ento essa expresso na forma r1 + r2, onde r1 = 01* e r2 = 1. O autmato para r2 fcil, sendo representado abaixo.

Ns podemos expressar r1 como r3 r4, onde r3 = 0 e r4 = 1*. O autmato para r3 seria tambm facilmente construido:

19

Podemos notar que r4 r5* onde r5 = 1. Um AF para r5 seria

Para construir um AF para r5* usa-se o CASO 3 visto anteriormente. O AF resultante mostrado abaixo.

Ento, para r1 = r3 r4 usa-se o CASO 2 visto anteriormente. o AF resultante seria o seguinte:

E finalmente, utiliza-se o CASO 1 para completar o AF para r = r1 + r2. O AF final mostrado abaixo.

3.6

Minizao de AFD completo

20

Um autmato finito M = (K, T, , q0, F) mnimo quando: 1. no possui estados inacessveis; 2. no possui estados mortos; 3. no possui estados equivalentes. Construo do AF mnimo: 1. retirar de K os estados inacessveis, ou seja, todo estado q K para o qual no exista nenhuma sentena tal que, a partir de q0, q seja alcanado durante o reconhecimento; 2. retirar de K os estados mortos, ou seja, todo estado que no seja estado final a partir do qual nenhum estado final poder ser alcanado durante um reconhecimento; 3. construir todas as possveis classes de equivalncia de estados; 4. construir M = (K, T, , q0, F) conforme segue: K o conjunto das classes de equivalncia obtidas; q0 a classe de equivalncia que contm q0; F o conjunto das classes de equivalncia que contm pelo menos um estado de F; o conjunto de transies tais que ([p], a) = [q] para toda transio (p1, a) = q1, onde p1 e q1 so elementos de [p] e [q]
respectivamente.

Construo das Classes de Equivalncia: Um conjunto de estados q1, q2, ..., qj est em uma mesma classe de equivalncia se todas as transies possveis a partir de cada um destes estados levam o autmato aos estados qi, qi+1, ..., qn, estando estes ltimos todos em uma mesma classe de equivalncia. Para construir as classes de equivalncia procede-se da seguinte maneira: 1. criar um estado para representar as transies indefinidas; 2. dividir K em duas classes de equivalncia iniciais, uma contendo os estados finais e a outra todos os demais estados de K;

21

3. dividir sucessivamente as classes obtidas, de acordo com o conceito de classe de equivalncia, at que nenhuma nova classe possa ser obtida. Exemplo: Construa o AF mnimo que reconhea a mesma da linguagem do AF da tabela abaixo: q0 q1 q2 q3 q4 q5 a q1 q3 q3 q4 q5 b q5 q2 q2 q3 q1 q5

* *

a) Estado inacessvel: q4 b) Estado morto: q5 c) AFD sem estados mortos e inacessveis: q0 q1 q2 q3 a q1 q3 q3 b q2 q2 q3

* *

c) Classes de equivalncia : < q0 q1 > < q2 q3 >

< q0 > < q1 > < q2 q3 > [0] [1] [2] e) Autmato Finito Mnimo : [0] [1] * [2] a [1] [2] b [2] [2]

22

Gramticas Livres de Contexto (GLC)

As Gramticas Livres de Contexto tem grande importncia dentro do estudo das Linguagens Formais pois atravs delas pode ser descrita a maior parte das construes sintticas das linguagens de programao. 4.1 Extenso da definio de GLC

Vamos estender a definio de GLC para permitir quaisquer produes da forma: A Estas produes, cujo lado direito contm somente a sentena vazia, so chamadas de -produes. Deste modo, uma GLC definida formalmente por regras de produo dadas por: P = { A | A N, (N T)* ) GLC -livre Uma GLC -livre quando no possui -produes ou quando possui uma nica -produo, S , onde S o smbolo inicial da gramtica e S no aparece do lado direito de nenhuma regra de produo. 4.2 rvores de Derivao para GLC

As rvores de derivao so representaes grficas para as derivaes nas GLC. Atravs destas, temos representada explicitamente a estrutura hierrquica que est implcita na linguagem. Formalmente, consideremos que G = (N, T, P, S) seja uma GLC. Uma rvore uma rvore de derivao para G se: 1. todo nodo tem um rtulo que um smbolo de N T { }; 2. o rtulo da raiz S; 3. se um nodo A tem um ou mais descendentes, ento A um elemento de N; 4. se A1, A2, ..., An so descendentes diretos de A, da esquerda para a direita, ento A A1 A2 ... An uma produo de P; 5. se D a nica subrvore da raiz e tem rtulo , ento a regra S P.

23

Exemplo: Considere a gramtica G = ( {S, A}, {a, b}, P, S ), onde P consiste de: S aAS | a A SbA | SS | ba a derivao da sentena aabbaa dada por: S aAS aSbAS aabAS aabbaS aabbaa A rvore de derivao correspondente a essa sentena seria: S a S a A b A b S a a

Profundidade da rvore de Derivao o comprimento do maior caminho entre a raiz e um nodo terminal. No exemplo anterior, a rvore de derivao da sentena tem profundidade 3. Limite de uma rvore de Derivao a sequncia formada pela concatenao, da esquerda para a direita, das folhas da rvore de derivao. 4.3 Derivao mais esquerda e mais direita

Uma rvore de derivao ignora variaes na ordem em que os smbolos foram substitudos na derivao. Por exemplo, na gramtica de expresso aritmtica abaixo: G = ( {E}, {+, *. (, ), -, id}, P, E ) onde P={ E E E E E E+E E*E (E) -E id }

24

A sentena - (id * id) pode ser derivada de dois modos diferentes: E - E - ( E ) - ( E + E ) - ( id + E ) - ( id + id ) ou E - E - ( E ) - ( E + E ) - ( E + id ) - ( id + id ) As derivaes acima correspondem mesma rvore de derivao: E ( E id E E + ) E id

Uma derivao chamada de mais esquerda quando o smbolo substitudo for o no-terminal mais esquerda da forma sentencial. Na derivao mais direita, o smbolo substitudo o no-terminal mais direita. Nas duas derivaes da sentena - ( id + id ) mostradas acima, a primeira mais esquerda e a segunda mais direita. Exemplo: Para a mesma gramtica anterior, obtenha as derivaes mais esquerda e mais direita da sentena id + id * id Soluo: Derivao mais esquerda E E + E id + E id + E * E id + id * E id + id * id Derivao mais direita E E + E E + E * E E + E * id E + id * id id + id * id 4.4 Gramtica Ambgua

Uma GLC ambgua quando, para alguma sentena da linguagem gerada, existe mais de uma rvore de derivao.

Exemplo:

25

A gramtica de expresso aritmtica apresentada antes ambgua. Isto pode ser visto atravs de duas rvores de derivao diferentes para a sentena vista: id + id * id E E id + E id E * E id E id E + E * E id E id

As duas derivaes analisadas no exemplo anterior esto representadas na primeira rvore de derivao. Linguagens Inerentemente Ambgua uma linguagem para a qual todas as GLC que a geram so ambguas. Exemplo de linguagem inerentemente ambgua: L = { an bn cm dm | n 1, m 1} { an bm cm dn | n 1, m 1} 4.5 Transformaes em G.L.C

A seguir sero vistas algumas transformaes que podem ser efetuadas em GLCs com o objetivo de torn-las mais simples ou de prepar-las para posteriores aplicaes. importante notar que, qualquer que seja a transformao efetuada, a linguagem gerada dever ser sempre a mesma. 4.5.1 Eliminao de Smbolos Inteis

Em uma GLC, um smbolo (terminal ou no-terminal) intil se ele no aparece na derivao de nenhuma sentena. Ou seja, um smbolo intil se ele estril (isto , no gera nenhuma sequncia de terminais pertencente a uma sentena) ou inalcanvel (isto , no aparece em nenhuma forma sentencial da gramtica). Determinao do conjunto de smbolos frteis

26

a) b)

c)

Pode ser efetuada atravs do seguinte algoritmo: Construir o conjunto N0 = e fazer i = 1 Repetir Ni = Ni-1 { A | A P e (Ni-1 T)* } i=i+1 at que Ni = Ni-1 Ni o conjunto de smbolos frteis.

Se o smbolo inicial no fizer parte do conjunto de smbolos frteis, a linguagem gerada pela gramtica vazia. Exemplo: Retirar os smbolos estreis da gramtica: G = ( {S,A,B,C,D}, {a,b,c,d}, P, S ) P={ SaA Aa|bB Bb|dD C cC | c DdD } Soluo: N0 N1 N2 N3 = = = = { A, B, C} { S, A, B, C} { S, A, B, C} = N2

Conjunto de smbolos frteis: {S,A,B,C} Gramtica simplificada: G = ( {S,A,B,C}, {a,b,c}, P, S ) P = { S a A Aa|bB Bb C cC | c } Determinao do conjunto de smbolos alcanveis Pode ser efetuada atravs do seguinte algoritmo: a) Construir o conjunto V0 = { S } (S = smbolo inicial) e fazer i = 1 b) Repetir Vi = { X|existe algum A X e A Vi-1 e , (N T)*} V i-1 i=i+1 at que Vi = Vi-1 c) Vi o conjunto de smbolos alcanveis. Exemplo: Simplificar a gramtica G do exemplo anterior, retirando os smbolos inalcanveis.

27

Soluo: V0 = V1 = V2 = V3 =

{ { { {

S} S, a, A} S, a, A, b, B} S, a, A, b, B} = V2

Conjunto de smbolos alcanveis: {S, a, A, b, B} Gramtica simplificada: G = ( {S,A,B}, {a,b}, P, S ) P = { S a A Aa|bB Bb} OBS: Note que aparentemente os dois passos so independentes e podem ser aplicados em qualquer ordem. Isto no verdadeiro. Isto ocorre porque a eliminao de smbolos inativos pode ocasionar o surgimento de smbolos inatingveis. O contrrio no verdadeiro. 4.5.2 Transformao de uma GLC qualquer para uma GLC -Livre

Esta transformao sempre possvel e pode ser efetuada pelo seguinte algoritmo: a) Reunir em um conjunto os no-terminais que derivam direta ou indiretamente a sentena vazia: Ne = { A | A N e A + } b) Construir o conjunto de regras P como segue: b1) incluir em P todas as regras de P, com exceo daquelas da forma A b2) para cada ocorrncia de um smbolo Ne do lado direito de alguma regra de P, incluir em P mais uma regra, substituindo este smbolo por . Isto , para regra de P do tipo A B, B Ne e , V* incluir em P a regra A c) Se S Ne, adicionar a P as regras S S e S , sendo que N ficar igual a N S. Caso contrrio trocar os nomes de S por S e N por N. d) A nova gramtica ser definida por: G = (N, T, P, S) Exemplo: Transformar as GLC abaixo, definidas pelo respectivo conjunto de regras de produo P, para GLC -Livres. a) G = ( {S, B}, {a,b}, P, S ) P={ SaB BbB|} Soluo: Ne = {B} P = { S a B | a

28

BbB|b} b) G = ( {S}, {a}, P, S ) P={SaS|} Soluo: Ne = {S} P= { S S | SaS|a} G = ( {S, D, C}, {b,c,d,e}, P, S ) P={ SbDCe DdD|

CcC|} Soluo: Ne = {D, C} P= { S bDCe|bCe |bDe |be DdD|d CcC|c}

c)

4.5.3

Remoo de Produes Simples (unitrias)

Produes simples so produes da forma A B onde A e B N. Estas produes podem ser removidas de uma GLC atravs do seguinte algoritmo: a) b) c) Transformar a GLC em uma GLC -livre, se necessrio Para todo no-terminal de N, construir um conjunto com os noterminais que ele pode derivar, em um ou mais passos. Isto , para todo A N, construir NA = { B | A * B } Construir P como segue: se B P e no uma produo simples, adicione a P as produes: A para todo A | B NA A GLC equivalente, sem produes simples, ser definida por: G = (N, T, P, S)

d)

Exemplo: Transformar as GLC abaixo em gramticas equivalentes que no apresentem produes simples. a) G = ( {S, A}, {a,b}, P, S ) P={ SbS|A AaA|a} Soluo: Ns = { A } NA = { } P= { S b S | a A | a AaA|a} P={SaSb|A AaA|B BbBc|bc} Soluo: Ns = { A, B} NA = {B} NB = { } P= { S aSb |aA |bBc |bc A a A | bBc | bc B bBc | bc }

b) G = ({S, A, B}, {a,b,c}, P, S ) 4.5.4 Fatorao de GLC

29

Uma GLC est fatorada se ela determinstica, isto , no possui produes cujo ladodireito inicie com o mesmo conjunto de smbolos ou com smbolos que gerem sequncias que iniciem com o mesmo conjunto de smbolos. Por exemplo, a gramtica fatorada no dever apresentar as seguintes regras: AaB|aC pois as duas iniciam com o mesmo terminal a. Outro exemplo de gramtica no-fatorada o seguinte: SA|B Aac Bab Para fatorar uma GLC devemos alterar as produes envolvidas no no-determinismo da seguinte maneira: a) as produes que apresentam no-determinismo direto, da forma A| sero substitudas por A A A | sendo A um novo no-terminal b) O no-determinismo indireto retirado fazendo, nas regras de produo, as derivaes necessrias para torn-lo um determinismo direto, resolvido posteriormente como no item anterior. Exemplo: Fatorar as GLC abaixo a) G = ( {S, A, B}, {a,b}, P, S ) P = { S aA | aB A aA | a Bb} Soluo: P= { S a S S A | B A aA A A | Bb} b) G = ( {S, A}, {a,b}, P, S ) P = { S Ab | ab | baA A aab|b } Soluo: P= { S aabb|bb|ab|baA A aab|b } P= { S aS | bS S abb|b S b|aA A aab|b }

4.5.5

Eliminao de Recurso Esquerda

30

Uma gramtica G = (N, T, P, S) tem recurso esquerda se existe A N tal que A + A , (N T)* A recurso dita direta se a derivao acima for em um passo, isto : - G tem recurso direta esquerda se existe produo A A P Para eliminar a recurso direta esquerda usa-se o seguinte algoritmo: Seja G = (N,T,P,S) uma GLC -livre e sem produes do tipo AA. a) Para eliminar recurso direta esquerda, envolvendo um smbolo no-terminal A, dividimos inicialmente o conjunto das produes de P do tipo A em subconjuntos: C1 = conjunto das produes A que apresentam recurso direta esquerda, ou seja, A A P onde (N T)*. C2 = conjunto das produes A que no apresentam recurso direta esquerda. b) Cria-se um novo no-terminal B. c) Substitua as produes A da gramtica original de acordo com os seguintes passos: c.1) para cada produo A i C2 criar a produo A i B c.2) para cada produo A Ai C1 criar as produes B i B B OBS: A recurso direta esquerda foi transferida para recurso direita. Se a gramtica original tiver produes A A podero surgir produes aps a execuo do algoritmo. Alm disso, podem aparecer produes simples aps a execuo do algortimo. Exemplo: Elimine as recurses esquerda da GLC abaixo G = (N, T, P, S) P={ SAa ASb|cA|a} Soluo: P = { S A a AAab|cA|a} P = { S A a A c A A | a A A a b A | } 4.6 Forma Normal de Chomsky (CNF) Uma GLC est na Forma Normal de Chomsky se ela -livre e apresenta todas as produes da forma ABC ou Aa onde A, B, C N e a T.

31

Prova-se que toda Linguagem Livre de Contexto -livre pode ser gerada por uma GLC na Forma Normal de Chomsky. Uma GLC -livre G = ( N, T, P, S ) pode ser colocada na CNF atravs do seguinte algoritmo: a) b) obter G = ( N, T, P, S ) a partir de G, removendo de G as suas produes simples, de modo que L(G) = L(G) nas regras de G cujo lado direito apresenta mais de um termo, substituir cada terminal (por exemplo, a T) por um novo noterminal (Aa), incluindo para cada um destes novos no-terminais uma nova regra, Aa a, resultando G = (N, T, P, S) substituir cada regra do tipo A B1 B2 ... Bm, m >= 3 onde A, B1, B2, ...., Bm so no-terminais, pelo conjunto de regras A B1 B1 B1 B2 B2 ... Bm-2 Bm-1 Bm onde B1, B2, ..., Bm-2 so novos no-terminais

c)

d)

a gramtica gerada est na CNF e dada por G = ( N, T, P, S ) Exemplo: Dada a GLC abaixo, ache a gramtica equivalente na CNF G = ( {S, A, B}, {a, b}, P, S ) P={ SA|ABA AaA|a BbB|b } Soluo a) P = { S a A | a | A B A AaA|a BbB|b } P = { S Aa A | a | A B A A Aa A | a B Ab B | b Aa a Ab b } P = { S Aa A | a | A B B B A A Aa A | a B Ab B | b Aa a Ab b }

b)

c)

32

4.7

Forma Normal de Greibach (GNF)

Uma GLC est na Forma Normal de Greibach se ela -livre e apresenta todas as produes na forma: Aa onde A N, a T e N*. Para achar a gramtica equivalente a G = ( N, T, P, S), na GNF, deve-se seguir os seguintes passos: a) achar G = ( N, T, P, S ) tal que L(G) = L(G) e que G esteja na CNF b) ordenar os no-terminais de G em uma ordem quaisquer - por exemplo: N = { A1, A2, ..., Am } c) modificar as regras de P de modo a que, se Ai Aj uma regra de P, ento j > i d) a gramtica obtida do passo anterior, G, apresentar todas as regras de Am com o lado direito iniciando por um terminal; atravs de substituies sucessivas dos primeiros termos das regras Ai anteriores, coloca-se estas tambm nessa forma e) se no item c tiverem sido includos novos no-terminais Bi (para retirar recurses esquerda), fazer tambm para as regras correspondentes a estes, as devidas substituies dos primeiros termos (que sero sempre terminais ou Ai) f) a gramtica final, G, est na GNF Exemplo: Coloque a GLC abaixo na GNF G = ( {S,A}, {a,b}, P, S ) P={ SAS|a ASA|b } Soluo a) G j est na CNF b) Renomear os no-terminais (ordem): Logo: S = A1 e A = A2 P: A 1 A2 A1 | a A2 A1 A2 | b c) a nica regra a modificar A2 A1 A2 substituindo A1 nessa regra pelas suas regras temos A2 A2 A1 A2 |a A2 | b para retirar a recursividade esquerda da 1 regra, introduzimos um novo no-terminal B2 resultando para G: P = { A1 A2 A1 | a A2 a A2 B2 |b B2 |a A2 | b B2 A1 A2 B2 | A1 A2 } d) P = { A2 a A2 B2 | b B2|a A2 | b A1 a A2 B2 A1 | b B2 A1 | a A2 A1| b A1 | a B2 a A2 B2 A1 A2 B2 | b B2 A1 A2 B2 | a A2 A1 A2 B2 | b A1 A2 B2 |a A2 B2 | a A2 B2 A1 A2 | b B2 A1 A2 |a A2 A1 A2 | b A1 A2 | a A2 }

33

4.8 a)

Outros Tipos de GLC Gramtica reduzida uma GLC que satisfaz s seguintes condies: 1 - L(G) e 2 - se A P ento A e G no possui smbolos inteis

b)

Gramtica sem ciclos uma GLC que no possui derivao da forma: A + A para A N

c)

Gramtica Prpria uma GLC que 1 - no possui ciclos 2 - -livre 3 - no possui smbolos inteis

d)

Gramtica de Operadores uma GLC que no possui produes da forma: A ... B C ... onde A, B, C N

ou seja, uma GLC na qual no aparecem dois no-terminais juntos em nenhuma regra de produo. e) Gramtica Linear uma GLC na qual todas as produes se apresentam na forma: A x B w ou Ax onde A, B N e x, w T*

34

Autmato de Pilha

O Autmato de Pilha a mquina abstrata que reconhece as Linguagens Livres de Contexto (LLC). chamado usualmente de Pushdown Automata (PDA). Consiste de um controle finito que tem acesso a uma fita de entrada (onde est a sequncia a ser analisada) e a uma pilha. O controle percorre a fita de entrada da esquerda para a direita, lendo um smbolo de cada vez. Na pilha, o controle pode empilhar smbolos, alm de retirar ou substituir o smbolo do topo. Uma caracterstica do PDA ser no-determinstico. Fita de Entrada 0 1 1 0 1

controle finito

w x y z Pilha

Movimento do Autmato de Pilha O movimento do PDA determinado pelo smbolo apontado na entrada, pelo smbolo no topo da pilha e pelo estado do controle finito. Existem dois tipos de movimentos: 1) um smbolo da fita lido e o cabeote avana para o prximo smbolo; -move - movimento vazio, no qual o cabeote no se move, 2) no importando qual o smbolo que est sendo apontado na fita de entrada. Linguagem Aceita por um PDA o conjunto de sentenas que, quando o autmato chegar no final de seu reconhecimento: a) resultam na pilha vazia ou b) levam o autmato a estado final. Estes dois tipos de reconhecimento, por pilha vazia ou por estado final, so equivalentes.

35

No reconhecimento atravs de pilha vazia, o conjunto de estados finais do autmato irrelevante, podendo ser vazio. Uma linguagem aceita por um autmato de pilha se e somente se for uma Linguagem Livre de Contexto. Definio de Autmato de Pilha Um autmato de pilha M um sistema definido por: M = ( K, , , , q0, Z0, F ) Kq0 Z0 Fonde conjunto finito de estados alfabeto finito de entrada alfabeto finito da pilha estado inicial, sendo que q0 K smbolo inicial na pilha, sendo que Z0 conjunto finito de estados finais, sendo que F K mapeamentos

: K x ( ) x subconjuntos de K x * Tipos de mapeamentos: 1. ( q, a, z ) = ( ( p1, 1 ), ( p2, 2 ), ...., ( pm, m ) ) onde: e q, p1, p2, ..., pm K a , Z , 1 * significando que o autmato de pilha M, estando no estado q, vendo o smbolo a na entrada e sendo Z o smbolo que est no topo da pilha, pode, para qualquer i, entrar no estado pi, substituir Z por i e avanar o cabeote de leitura da fita de entrada para o prximo smbolo. ( q, , z ) = ( ( p1, 1 ), ( p2, 2 ), ...., ( pm, m ) ) significando que o autmato de pilha M, estando no estado q, independente do smbolo de entrada e com Z no topo da pilha, pode passar para um estado pi e substituir Z por i, sem avanar o cabeote de leitura da entrada.

2.

Costuma-se representar a pilha na horizontal, sendo o smbolo do topo da pilha aquele que est mais esquerda de i. Dependendo do comprimento de , temos as seguintes possibilidades de atuao do autmato de pilha: || > 1 || = 1 || = 0 troca o smbolo do topo e empilha outros troca o smbolo do topo desempilha ( = ).

Autmato de Pilha Determinstico

36

1. 2.

Um PDA determinstico se: para cada q K e Z , sempre que (q, m Z) ento (1, a, Z) = para todo a para qualquer q K e Z e a , (q, m Z) nunca contm mais de um elemento.

A condio 1 evita a possibilidade de uma escolha entre um movimento independente da entrada (-move) e um movimento envolvendo um smbolo de entrada, enquanto que a condio 2 previne uma escolha de movimento para qualquer (q, a, Z) ou (q, , Z). Exemplo: um PDA que aceita, por pilha vazia, a linguagem L = { w C wr | w {0,1}* } onde wr a sequncia reversa de w, pode ser definido da seguinte maneira: M = ( {q1, q2}, {0,1,C}, {Z0,Z,U}, , q1, Z0, 0) = { (q1, ZZ0) } ( q1, 0, Z0 ) = { (q1, ZZ) } ( q1, 0, Z ) = { (q1, ZU) } ( q1, 0, U ) = { (q2, Z0) } ( q1, C, Z0 ) = { (q2, Z) } ( q1, C, Z ) = { (q2, U) } ( q1, C, U ) = { (q2, ) } ( q2, 0, Z ) = { (q2, ) } ( q2, , Z0 ) = { (q1, UZ0) } ( q1, 1, Z0 ) = { (q1, UZ) } ( q1, 1, Z ) = { (q1, UU) } ( q1, 1, U ) = { (q2, ) } ( q2, 1, U )

Descrio instantnea de um PDA A descrio instantnea de um PDA dada por seu estado, o contedo de sua pilha e pelo restante da sequncia de entrada a analisar. Assim, a descrio instantnea (q1, bc, AB) significa que o autmato est no estado q1, falta reconhecer bc e a pilha contm AB (com o smbolo A no topo). Exemplo:

37

usando a descrio instantnea, o reconhecimento da sentena 01C10 atravs do PDA do exemplo anterior seria representado por (q1, 01C10, Z0) (q1, (q1, (q2, (q2, (q2, (q2, 1C10, ZZ0) C10, UZZ0) 10, UZZ0) 0, ZZ0) , Z0) , )

Linguagem aceita por um PDA Utilizando a notao vista de configurao de uma autmato de pilha, podemos representar a linguagem aceita por ele de duas maneiras, conforme o modo em que efetuado o reconhecimento das sentenas: T(M) = = T(M) = = linguagem aceita por estado final { w | w : (q0, Z0) * ( q, ) para * e q F}
M

linguagem aceita por pilha vazia { w | w : (q0, Z0) * ( q, ) para q F}


M

Representao Grfica do Autmato de Pilha O PDA tambm pode ser representado por um grafo, similar aquele utilizado no autmato finito. Os rtulos dos arcos devero indicar, alm do smbolo apontado na fita de entrada, o smbolo que est no topo da pilha e o conjunto de smbolos que deve substituir aquele que est no topo da pilha durante a transio. Isto , o rtulo deve ser da forma (a, W) Z a W Z * onde

o smbolo de entrada o smbolo no topo da pilha a sequncia que ir substituir o topo da pilha

Exemplo: L(M) = { an bn | n 0 }

38

As transies representadas no grafo deste exemplo so as seguintes: = { (q1, XZ0) } ( q0, a, Z0 ) = { (q1, XX) } ( q1, a, Z0 ) = { (q2, ) } ( q1, b, Z0 ) = { (q2, ) } ( q2, b, Z0 ) = { (q3, ) } ( q2, , Z0 ) 5.1 PDA e Linguagens Livres de Contexto

Teorema: Se L uma Linguagem Livre de Contexto (LLC), ento existe um autmato de pilha M tal que L = N (M). Algoritmo para construir M Seja G = (N, T, P, S) uma GLC na GNF. Assumimos que L(G). O PDA M que reconhece esta linguagem dado por: M = ( {q0}, T, N, , q0, S, ) O mapeamento construdo a partir das regras de P, sendo que para regra A a P corresponde ( q0, a, A ) (q0, ) Exemplo: Construir um PDA M para reconhecer a linguagem gerada pela gramtica abaixo: G = ( {S,A}, {a,b}, {S aAA, A bS | aS | a}, S ) Soluo: M = ( {q0}, {a,b}, {S,A}, , q0, S, ) ( q0, a, S ) = { (q0, AA) } ( q0, b, A ) = { (q0, S) } ( q0, a, A ) = { (q0, S), (q0, ) }

Teorema: Se L uma linguagem reconhecida por algum autmato de pilha, ento L uma Linguagem Livre de Contexto, isto , pode ser gerada por uma gramtica G livre de contexto.

39

Mquina de Turing

As linguagens chamadas de linguagens irrestritas, podem ser reconhecidas por Mquinas de Turing. As mquinas de Turing foram propostas como modelos matemticas para representar procedimentos. Qualquer cmputo que possa ser descrito por uma mquina de Turing, poder ser realizado mecanicamente. De outra parte, qualquer cmputo que possa ser realizado por um computador digital, poder ser descrito por uma mquina de Turing. Tese de Church - qualquer processo que possa ser chamado de procedimento, pode ser realizado por uma mquina de Turing. 6.1 Modelo Bsico da Mquina de Turing Fita de Entrada a1 a2 a3 ... ai ... an B B ...

Controle Finito A mquina de Turing possui uma fita de entrada, onde colocada a sentena a ser reconhecida, posicionada nas clulas mais esquerda ( a1 ... an ). Esta fita limitada esquerda, mas infinita direita. O restante das clulas da fita de entrada preenchido com caracteres brancos (B). O movimento da mquina de Turing depende do smbolo lido e do estado do controle finito. Dependendo destes elementos, a mquina pode: - trocar de estado - gravar um smbolo diferente de branco sobre o smbolo lido na fita, substituindo o que estava gravado anteriormente - mover o cabeote de leitura uma clula para a esquerda ou para a direita sobre a fita de entrada.

40

6.2

Definio de Mquina de Turing Uma mquina de Turing (T) definida por T = ( K, , , , q0, F ), onde: K = conjunto finito de estados = conjunto finito de smbolos da fita, incluindo o smbolo branco = conjunto de smbolos de entrada, que um subconjunto de , no incluindo o branco = funo de movimento, que pode ser indefinida para alguns argumentos, sendo definida por : K X K X ( - B ) X ( L, R ) onde L = movimento do cabeote para a esquerda e R = para a direita = estado inicial, q0 K q0 F = conjunto finito de estados finais, F K

Configurao da Mquina de Turing A configurao de uma mquina de Turing representada por q i ( q, , i ) onde = estado atual da mquina, q K = poro no branca da fita, ( - B )* = distncia do cabeote ao limite esquerdo da fita. a1 a2 a3 ... ai ... an B ...

|<--------- i ---------------> | | | | q | | | |<------------------------------ -------> | Descrio Instantnea da Mquina de Turing definida por 1 q 2 onde q = estado corrente da mquina, q K 1 2 = sequncia de caracteres em *, contedo da fita de entrada esquerda do cabeote, ou at o ltimo smbolo diferente de B. Assume-se que o cabeote esteja apontando para o smbolo mais esquerda de 2. Se = , o cabeote est apontando para B. O smbolo B pode ocorrer em 1 2. Movimentos da Mquina de Turing

41

Seja ( q, A1 A2 ... An, i ) uma configurao da mquina de Turing T, onde 1 <= i <= n+1. Se 1 <= i <= n e ( q, Ai ) = ( p, A, R ) ento ( p, A1 A2 ... Ai-1 A Ai+1 ... An, i+1 ) ( q, A1 A2 ... An, i ) Se 2 <= i <= n e ( q, Ai ) = ( p, A, L ) ento ( p, A1 A2 ... Ai-1 A Ai+1 ... An, i-1 ) ( q, A1 A2 ... An, i ) Se i = n+1 e ( q, B ) = ( p, A, R ) ento ( p, A1 A2 ... An A, i+2 ) ( q, A1 A2 ... An, i+1 ) Se i = n+1 e ( q, B ) = ( p, A, L ) ento ( p, A1 A2 ... An, n ) ( q, A1 A2 ... An, i+1 ) Linguagem aceita pela Mquina de Turing o conjunto de palavras em * que causa a mquina de Turing a entrar num estado final, tendo partido do estado inicial, com o cabeote de leitura sobre o primeiro smbolo de estrada. Assim, a linguagem aceita por T = ( K, , , , q0, F ) L(T) = { w | w e (q0, w, 1) * (q, , i) para algum q F, * e um inteiro i } Parada da Mquina de Turing Se uma mquina de Turing T aceita a linguagem L, ento T pra para as palavras de L. Entretanto, para palavras que no pertencem linguagem L e que, portanto, no so aceitas por T, possvel que T no pare.

Exemplo: Definir uma mquina de Turing que reconhece a LLC abaixo L = { 0n 1n | n >0 1 } e representar, atravs de configuraes sucessivas, o reconhecimento da sentena 000111. Soluo: T = ( K, , , , q0, F )

42

K = { q0, q1, q2, q3, q4, q5 } = { 0, 1} = { 0, 1, B, X, Y } F = { q5 } = { ( q0, 0 ) = ( q1, X, R ) ( q1, 0 ) = ( q1, 0, R ) ( q1, 1 ) = ( q2, Y, L ) ( q2, Y ) = ( q2, Y, L ) ( q2, X ) = ( q3, X, R ) ( q2, 0 ) = ( q4, 0, L ) ( q4, 0 ) = ( q4, 0, L ) ( q4, X ) = ( q0, X, R ) ( q3, Y ) = ( q3, Y, R ) ( q3, B ) = ( q5, Y, R ) ( q1, Y ) = ( q1, Y, R ) ( q0, 000111, 1 ) (q1, X00111, 4 ) (q4, X00Y11, 1 ) (q3, XXXYYY, 6 ) 6.3 (q1, X00111, 2 ) (q2, X00Y11, 3 ) (q0, X00Y11, 2 ) (q3, XXXYYY, 7 ) (q1, X00111, 3 ) (q4, X00Y11, 2 ) (q1, X00Y11, 3 ) (q5, XXXYYY, 8 )

Relao entre Mquina de Turing e Gramtica Irrestrita

Teorema: Se a linguagem L gerada por uma gramtica irrestrita, ento L pode ser reconhecida por uma Mquina de Turing Teorema: Se uma linguagem L reconhecida por uma Mquina de Turing, ento L gerada por uma gramtica irrestrita.

43

Bibliografia
HOPCROFT, J.E. & ULLMAN, J.D. Formal Languages and Their Relation to Automata. Addison-Welley Publishing Company, Reading, Massachussets, 1969. HOPCROFT, J.E. & ULLMAN, J.D. Introduction to Automata Theory, Languages, and Computation. Addison-Welley Publishing Company, Reading, Massachussets, 1979. MENEZES, PAULO FERNANDO BLAUTH. Linguagens Formais Autmatos. Editora Sagra-Luzzatto, Porto Alegre, 1997. e

PRICE, ANA MARIA DE ALENCAR & EDELWEISS, NINA. Introduo As Linguagens Formais, PORTO ALEGRE, 1989. 60 P. RAYWARD-SMITH, V.J. A First Course in Formal Language Theory. Blackwell Scientific Publications, Oxford, 1983.

You might also like