Apostila de Linguagens Formais e Autômatos

download Apostila de Linguagens Formais e Autômatos

of 53

Transcript of Apostila de Linguagens Formais e Autômatos

UNIVERSIDADE FEDERAL DE JUIZ DE FORA UFJF INSTITUTO DE CINCIAS EXATAS DEPARTAMENTO DE CINCIA DA COMPUTAO Linguagens Formais e Autmatos Prof. Itamar Leite de Oliveira Curso de Cincia da Computao Juiz de Fora MG 1 1. Teoria de Linguagens Formais 1.1 Conceitos Iniciais Nestaseoseroapresentadosalgunsconceitosgeraissobregramticaselinguagens queserviroparafundamentaroestudodetodosostiposdelinguagensqueviroa seguir. 1.1.1 Introduo AteoriadeLinguagensFormaiseateoriadeMquinas(eautmatos)sotpicos abrangentesqueinseremnoestudodaTeoriadaComputaoemgeral.ATeoriada Computaoumacinciaqueprocuraorganizaroconhecimentoformalrelativoaos processosdecomputao,comocomplexidadedealgoritmos,linguagensformais, problemas intratveis, etc. Atualmente,otermocomputarestassociadoaoconceitodefazerclculosou aritmticausandoparaisso,mquinascomputadoras.Entretanto,anoode computabilidadepodeserdissociadadaimplementaofsicadamquina. Originalmente,apalavralatinaputaresignificapensar,masnocasodateoriada computaoosentidomaisadequadoseriaalgocomomanipulaodesmbolos,o queno,necessariamente,pensamento.Essamanipulaodesmbolos,envolvendo, computadores,segundoAlanTuring(1969)realizaqualqueroperaoformaldequeo ser humano seria capaz. Mesmoassim,algunsfilsofossustentamqueoscomputadoresnopodemcomputar (fazeraritmtica),porquenocompreendemanoodenmero(apenasmanipulam sinaiseltricos).Todavia,pode-sefalar,sementrarnomritodaquesto,queos computadores realizam uma computao perceptvel j que transformam uma entrada emsadacomoseestivessemrealmentecomputando.Nestecaso,oqueimportao efeito final do processo e no a maneira como ele feito. 1.1.2 Smbolo Umsmboloumaentidadeabstrataquenoprecisaserdefinidaformalmente,assim como pontoe linhano so definidos nageometria.Letras e dgitos so exemplos de smbolos freqentemente usados. Smbolos so ordenveis lixicograficamente, e, portanto podem ser comparados quanto igualdade ou precedncia. A principal utilidade dos smbolos est na possibilidade de us-los como elementos atmicos em definies de linguagens. Exemplo: a, b, U, P, >, /,A, +, *, etc. 2 1.1.3 Cadeia Uma cadeia (ou string, ou palavra) uma seqncia finita de smbolos justapostos (isto , sem vrgulas separando os caracteres.) Por exemplo, se a, b, e c so smbolos, ento abcb um exemplo utilizando estes smbolos. 1.1.4 Alfabeto Umalfabeto(ouvocabulrio)definidosimplesmentecomoumconjuntofinito,no vazio, de smbolos (elementos). Representaremos um alfabeto por. Exemplo: V = {a, b, c,...,z } V = {0, 1} V = {a, e, i, o ,u} Tamanho: O tamanho de uma cadeia o comprimento da seqncia de smbolos que a forma. O tamanho de uma cadeia w ser denotado por |w|. Exemplo: Seja V = { a , b , c } se x = aba, ento |x| = 3 se x = c, ento |x| = 1 Cadeia vazia: A cadeia vazia denotada por c (pslon), e tem tamanho igual a zero, isto , no possui nenhum smbolo; assim |c| = 0. Prefixo e sufixo: Um prefixo de uma cadeia um nmero qualquer de smbolos tomados de seu incio e sufixo um nmero qualquer de smbolos tomados de seu fim. Exemplo: Seja a cadeia abc Prefixos: c, a, ab, abc Sufixos: c, c, bc, abc. Umprefixoousufixoquenosejaaprpriacadeiachamadodeprefixoprprioou sufixo prprio respectivamente. Concatenao:Aconcatenaodeduascadeiasacadeiaformadapelaescritada primeira cadeia seguida da segunda, sem nenhum espao no meio. Exemplo: a concatenao de horta e lia hortalia. O operador de concatenao a justaposio. Isto , se w e x so variveis que denotam cadeias, ento wx a cadeia formada pela concatenao de w e x. Potncia:An-simapotnciadeumacadeiax,denotadaporxnaconcatenaodex com ela mesma n vezes.Exemplo: (abc)3 = abcabcabc.a5 = aaaaa a2b416 = aabbbb111111 3 Fechamento: o fechamento de um alfabeto V, representado por V*, o conjunto todas as cadeias que podem ser formadas com os smbolos de V, inclusive a cadeia vazia. Exemplo: V = {a, b} V* = {c, a, b, ab, ba, aaa, aab, aba, abb, ......} Fechamento positivo: O fechamento positivo de V, representado por V+ definido como V*-{c} Exemplo: V = {a, b} V+ = {a, b, ab, ba, aaa, aab, aba, abb, ......} 1.1.5 Linguagem Umalinguagem(formal)umconjuntodecadeiasdesmbolostomadosdealgum alfabeto.Isto,umalinguagemsobreumalfabetoVumsubconjuntodeV*.Note-se queestadefiniomeramenteextensional,isto,noconsideraosmecanismos formadores da linguagem, mas apenas a sua extenso. Assim,por exemplo, o conjunto desentenasvlidasdalnguaportuguesapoderiaserdefinidoextensionalmentecomo um subconjunto de {a, b, c, ..., z, A, B, C, ..., Z}*. Exemplos:Seja V = {0, 1} A linguagem {0n1n | n > 0} um subconjunto de V*. A linguagem {0n1m | n > 0, m > 0} um subconjunto de V*. A linguagem {w | possui um nmero par de 1s} um subconjunto de V*. Uma linguagem finita se suas sentenas formam um conjunto finito. Caso contrrio, a linguageminfinita.Umalinguageminfinitaprecisaserdefinidaatravsdeuma representao finita. Um reconhecedor para uma linguagem um dispositivo formal usado para verificar se umadeterminadasentenapertenceounoaumadeterminadalinguagem.So exemplos de reconhecedores de linguagens a Mquina de Turing, o Autmato finito e o AutmatodePilha.Cadaumdestesmecanismosreconheceumconjuntobastante particulardelinguagens.Entretanto,osmodelossoinclusivos:todasaslinguagens reconhecveis por um autmato finito podem ser reconhecidas por um autmato de pilha etodasaslinguagensreconhecveisporumautmatodepilhasoreconhecveispor mquinas de Turing. As recprocas, porm no so verdadeiras. Umsistemageradorumdispositivoformalatravsdoqualassentenasdeuma linguagem podem ser sistematicamente geradas. Exemplos de sistemas geradores so as gramticas gerativas, definidas pela primeira vez por Noam Chomsky, em seus estudos para sistematizar a gramticada Lngua Inglesa. 1.2 Gramticas Uma Gramtica gerativa um instrumento formal capaz de construir (gerar) conjuntos decadeiasdeumadeterminadalinguagem.Asgramticassoinstrumentosque facilitam muito a definio das caractersticas das linguagens. 4 Usar um mtodo de definio de conjuntos particular para definir uma linguagem pode serumpassoimportantenoprojetodeumreconhecedorparaalinguagem, principalmenteseexistiremmtodossistemticosparaconverteradescriodo conjunto em programa que processa o conjunto. ExemplointuitivodeumaGramtica:(umsubconjuntodagramticadalngua portuguesa) :: = :: = | | :: = :: = Joo|Maria|cachorro | livro | po :: = o | a :: = pequeno|bom|bela :: = morde|l|olha :: = | | 1.2.1 Definio Formal Umagramticapossuiumconjuntofinitodevariveis(tambmchamadasno-terminais).Alinguagemgeradaporumagramticadefinidarecursivamenteem termos das variveis e dos smbolos primitivos chamados terminais. As regras que relacionam terminais e variveis so chamadas de produes. Uma regra deproduotpicaestabelececomoumadeterminadaconfiguraodevariveise terminais pode ser reescrita, gerando uma nova configurao. Uma gramtica especificada por uma qudrupla (N, T, P, S), onde: a) N o conjunto de no-terminais ou variveis. b) Toconjuntodeterminais,oualfabeto,sendoqueNeTsoconjuntos disjuntos. c) Pumconjuntofinitodeprodues,ouregras,sendoque ( ) ( )*T N T N P_+ d) S um smbolo no-terminal inicial, sendo queN S e Umaproduo(n,p)podeserescritacomonp,parafacilitaraleitura.Nocasode existirmaisdeumaalternativaparaumamesmaconfiguraoesmbolosdolado esquerdo da regra, como, por exemplo: coisa co pedra Osmbolopodeseridocomo:definidopor,eosmbolo|podeserlidocomo ou. 5 Exemplo: Formalizando o subconjunto da gramtica da lngua portuguesa, apresentado na seo anterior, teramos: Gportugues = (N, T, P, S), onde:N = { , , , , , ,, , } T ={joo, maria, cachorro, livro, po, o, a, pequeno, bom, bela, morde, l, olha} P= o conjunto das regras gramaticais apresentado S = 1.2.2 Derivao Umagramticapodeserusadaparagerarumalinguagematravsdereescritaou derivao.Aderivaopodeserdefinidadaseguintemaneira:dadaumasentena1 a1bb1,coma1ea2sendocadeiasdeterminaiseno-terminais,seexistirumaregrada formabc,entoasentenainicialpodeserreescritacomoa1cb1.Aderivao,ou reescrita denotada da seguinte forma: a1bb1 a1cb1 Seab,entosedizqueaproduzdiretamenteb.Ofechotransitivoereflexivoda relao*.Portanto,seab...z,entosedizqueaproduzz, simplesmente,anotandoaproduopor*.Ofechotransitivopodeserdefinidoda seguinte forma: a) a 0a b) a 1b se a b c) a n+1z se a ny e y 1z para todo n>1. d) a *z se a nz para algum n>1. Seja,porexemplo,aseguintegramtica,ondeasregrassonumeradaspara acompanhar o desenvolvimento da derivao: 1: += 2,3: 1 | 1 4:+1 1+ 5:1 1 6:+= 7:1 1 Aderivaodeumasentenaapartirdestagramticaconsisteemumaseqnciade aplicaes das produes a partir do smbolo inicial. Por exemplo: +=[1] 1+=[2 no primeiro ] 1+1=[3 no segundo ] 11+=[4] 11+=[5] 1 Uma sentena neste texto uma cadeia de terminais e no-terminais. Assim, se w uma sentena, ento ( )*U T we . 6 11[6] 111 [3] Ofatodasregrasteremsidoaplicadaspraticamenteemseqnciafoimera coincidncia.Aprincpio,qualquerregradederivaopodeseraplicadaaqualquer pontodasentenadesdequeaconfiguraodesmbolosdoladoesquerdodaregra aparea na sentena sendo derivada. Originalmente, a motivao do uso de gramticas foi o de descrever estruturas sintticas da lngua natural. Poderia-se escrever regras (produes) como: .| . dorme | escuta | ama gato | rdio | rato o | a | os | as Desta gramtica pode-se obter derivaes como: . o. o gato . o gato ama . o gato ama o. o gato ama o rato. Entretanto, a mesma gramtica tambm permite derivar o gato dorme o rato, frase que nofazsentido.Paraevitarageraodetaisfrases,pode-seusarumagramtica sensvel ao contexto, estabelecendo que s pode ser reescrito para dorme se for sucedido pelo ponto final da frase: .| . . dorme escuta | ama gato | rdio | rato o | a | os | as Para esta gramtica impossvel derivar as cadeias o gato dorme o rato, o gato ama eogatoescuta.Overbodormespodeserderivadoseforsucedidoporumponto finaleosverbosescutaeamaspodemserderivadosseforemsucedidosporum artigo. 1.2.3 Notao Como conveno notacional, pode-se admitir que smbolos no terminais sero sempre representadosporletrasmaisculas,eterminaisporminsculas.Assim,umaregra como b | b poderia ser escrita como A Ab | b. Alm disso, os conjuntos T e N podem ficar subentendidos, e no precisam ser expressos sempre. 7 Pode-se ainda arbitrar que o smbolo inicial S ser o no-terminal que aparecer primeiro do lado esquerdo da primeira produo da gramtica. Assim, bastaria listar as regras de produo para se ter a definio completa da gramtica. 1.3 Tcnicas para Definio de Gramticas Nestaseoserointroduzidasalgumastcnicaspadroparadefiniodeprodues parafinsespecficos.Soelas:listassimples,listacomseparadores,opo, concatenao, aninhamento e relaes quantitativas. Lista simples:xxxxx...xExemplo: nmeros naturais A xA | x ouN DN | D A Ax | xD 0 | 1 | 2 | 3 | ... | 9 Lista com separadores:xSxSxSxS...SxExemplo:cadeias de as separadas por $.A xSA | xS A$S A aA | a Opo: G1 ou G2Exemplo1:comentrioempascalExemplo2:conj.nmeros inteiros. A B | CC H | PZ P | N H {M}P U | +U P (*M*)N -U M LM | MU DU | D M a | b | c |...| z | A | B | ... | Z | cD 0 | 1 |...|9 Concatenao: G1G2 Exemplo: nmero em ponto flutuante C ABR NPN | N | PN | NP P . N DN | D D 0 | 1 | 2 | 3 | ... | 9 Aninhamento: Exemplo: expresses aritmticas com + e * A aAf | cE N | E+E | E*E | (E) N DN | D D 0 | 1 | 2 | 3 | ... | 9 Relaes quantitativas: Exemplos: 1) {aib2i | i > 0}={c, abb, aabbbb, ...}A aAbb | c 2) {aibj | j > 0 e i > j}={c, aab, aaaa, aaaabb ...}L aLb | S S a | aS 3) {aibj | j = 2i ou i > j}={c, aab, aaaa, aaaabb, abb ...}P A | L A aAbb | c L aLb | S S a | aS 8 4) {aibjckdm | i = m e j = 3k}={abbbcd, aabbbbbbccdd,...}L aLd | S S bbbSc | c 5) {aibj | i = j e i,j > 0}={abbb, aab, aaabbbb, aaaab...}S aSb | L L A | B A a | aA B b | bB 6) {aibjci+j| i,j > 0}={abcc, aabccc, aabbbccccc, ...}S aSc | B B bBc | bc 1.4 Exerccios 1) Uma palndrome uma cadeia que pode ser lida da mesma maneira da direita para a esquerdaedaesquerdaparaadireita.Exemplos:a,aba,osso,asddsa.Definauma gramticaparaalinguagempalndrome(conjuntodetodasaspalndromessobreo alfabeto A = {a, b, c, ..., z}). 2)SejaG=({S},{a,b},P,S).DdefiniesparaoconjuntodeproduesP,de maneira a gerar as seguintes linguagens: a) Cadeias que comeam e terminam com a. b) Cadeias com tamanho mpar. c) Cadeias onde todos os as aparecem consecutivos. d) Cadeias onde todos os bs precedem todos os as. e) Cadeias onde o nmero de bs par. Observe que a gramtica deve ter apenas um no terminal. 3)Definaumagramticaquegereasexpressesnumricascomoseguintealfabeto dgitos:0a9;sinais:+,-,*e/;parnteses:(e).Testesuadefiniomostrandoa derivao das seguintes cadeias: a) 1+(3*534) b) ((8/2-(25+3)) 1.5 Linguagens definidas por gramticas Alinguagemdefinidaporumagramticaconsistenoconjuntodecadeiasdeterminais queestagramticapodepotencialmentegerar.Esteconjuntoserdenotadoporum L(G). A linguagem definida por uma gramtica G = (N, T, P, S) dada por: () { } e e e* *| e = S e T G L Em outras palavras, uma cadeia pertence a L(G) se e semente se ela consiste somente de terminais e pode ser produzida a partir de S. Uma cadeia em( )*N T chamada de forma sentencia l(ou sentena) se ela pode ser produzidaapartirdeS.Assim,podecaracterizarL(G)comooconjuntodetodasas formas sentenciais que contm apenas terminais. 9 1.6 Tipos de Gramticas Impondo restriesna forma das produes, pode-se identificar quatro tipos diferentes de gramticas. Esta classificao foi feita por Chomsky e conhecida comohierarquia de Chomsky: a)Tipo 0. No h restrio na forma das produes. Este o tipo mais geral. b)Tipo1.SejaG=(N,T,P,S).Se(i)OsmboloinicialSnoaparecenolado direito de nenhuma produo, e (ii) para cada produo o1 o2, verdadeiro que |o1| s|o2| (com exceopara a regra S c), ento se diz que G uma gramtica do tipo 1, u Gramtica Sensvel ao Contexto (GSC). c)Tipo 2. Uma gramtica G = (N, T, P, S) do tipo 2 ou Livre de Contexto (GLC) se cada produo livre de contexto, ou seja, cada produo da forma A o, com AeN e oe( )*N T. d)Tipo3.UmagramticaGdetipo3,ouregular,secadaproduodaformaA aB, A a ou A c, onde A e B so no-terminais (AeN e BeN) e a um terminal (aeT). Istoclaramente,umarestriodetipo2.Aimportnciadestetiposimplesde gramtica ser estudada mais adiante. 1.7 Tipos de Linguagens Uma linguagem L de tipo i se existe uma gramtica G de tipo i tal que L = L(G), para i igual a 0, 1, 2 ou 3. Pode-se ver que cada linguagem de tipo 3 tambm de tipo 2, cada linguagem de tipo 2 tambm de tipo 1, e cada linguagem de tipo 1 tambm de tipo 0. Estas incluses so estritas, isto , existem linguagens de tipo 0 que no so de tipo 1, existem linguagens de tipo 1 que no so de tipo 2 e existem linguagensde tipo 2 que no so de tipo 3. Pode-se relacionar cada tipo de gramtica com uma mquina reconhecedora da seguinte maneira: a gramtica de tipo 0 gera linguagens reconhecveis por mquinas de Turing; a gramticadetipo2geralinguagensreconhecidasporautmatosdepilha;agramtica de tipo 3 gera linguagens reconhecidas por autmatos finitos. No h uma classe de reconhecedores para apenas linguagens de tipo 1, porque qualquer mquinacapazdereconhecerlinguagensdetipo1poderosaosuficientepara reconhecer linguagens de tipo 0. A principal razo para identificar as linguagens de tipo 1 como um tipo separado porque toda a linguagem de tipo 1 decidvel, isto , se G = (N, T, P, S) ento existe um algoritmo tal que, para qualquer cadeiaa, responda sim se a pertence L(G) e no caso contrrio. 1.8 Exerccios a) SejaagramticaG=(N,T,P,S),comN={,A,B},T={Este,,o, gato, que, matou, rato, comeu, malte, estava, no, poro, da, casa, Joo, constuiu}, S = e P dado por: 10 AB A Este o | A gato que matou matou B matou o rato que comeu B comeu B comeu o malte que estava no B B poro da casa que Joo construiu Derive duas cadeias diferentes a partir desta gramtica, indicando as derivaes. b) Seja G a seguinte GLC (gramtica livre de contexto): S aSbSa | c Mostre quatro cadeias de L(G) e a derivao de cada uma delas. c) Escreva uma gramtica para cada uma das seguintes linguagens: a){ } { } 0 | 0 |3 1 2 1 2 3>>+ + +i b a i b ai i i i b){ } 0 , |3> j i e d c b ai j j i c){ } j i ou j i com j i b aj i= = > 2 20 , |d){ } k j e l i l k j i d c b al k j i= s > , 0 , , , |e){ } 0 , | > j i a b b aj i j i Identifique o tipo de gramtica que foi definida para cada um dos casos. d) Escreva uma gramtica livre de contexto para gerar a linguagem: conjunto de todas as cadeias sobre o alfabeto{ } ) (, , , , c b acom os parnteses corretamente aninhados. e) Caracterize e explique as relaes entre linguagem, gerador e reconhecedor. f) Definaumagramticalivredecontextoparaoscabealhosdedeclaraode procedimentos e funes da linguagem Pascal. g) Indique, entre os parnteses, o tipo de cada gramtica: () S aS | b () S c | aB B Ab | a () S AAA | aA AbcA | c () S (S) | S+S(S+S) [id+id] () S aA | AbaaA a | baA 11 2. Linguagens Regulares e Autmatos Finitos Aslinguagensregularesconstituemumconjuntodelinguagensdecidveisbastante simplesecompropriedadesbemdefinidasecompreendidas.Essaslinguagenspodem serreconhecidasporautmatosfinitosesofacilmentedescritasporexpresses simples, chamadas expresses regulares (ER). Ling. Sensveis ao Contexto ou do Tipo 1 Ling. Livres de Contexto ou do Tipo 2Ling. Recursivamente Enumerveis ou do Tipo 0Linguagens Regulares ou doTipo 3 Figura 2-1: Hierarquia de Chomsky. O estudo das linguagens regulares (ou linguagens do tipo 3 na Hierarquia de Chomsky, vejaFigura2-1,asmaissimples,permitindoabordagensdepequenacomplexidade, grandeeficinciaefcilimplementao)podeserabordadoatravsde3diferentes formalismos: -operacionaloureconhecedor:AutmatoFinito,quepodeserdeterminstico, no determinstico ou com movimento vazio (com c-transio). -axiomtico ou gerador:Gramtica Regular -denotacional:Expresso Regular (tambm pode ser considerado gerador). 2.1 Autmatos Finitos Um autmato finito, pode ser vistacomo uma mquina composta basicamente por trs partes (Figura 2-2): -Fita: Dispositivo de entrada que contm a informao a ser processada. A fita finita esquerda e direita. dividida em clulas onde cada uma armazena um smbolo.Ossmbolospertencemaumalfabetodeentrada.Nopossvel gravarsobreafita.Noexistememriaauxiliar.Inicialmenteapalavraaser processada, isto , a informao de entrada ocupa toda a fita. -UnidadedeControle:Refleteoestadocorrentedamquina.Possuiuma unidadedeleitura(cabeadeleitura),queacessaumaunidadedafitadecada vez. Pode assumir um nmero finito e pr-definido de estados. Aps cada leitura a cabea move-se uma clula para a direita. -Programa ou Funo de Transio: Funo que comanda as leituras e define o estado da mquina.Dependendo do estado corrente e do smbolo lido determina onovoestadodoautmato.Usa-seoconceitodeestadoparaarmazenaras informaes necessrias determinao do prximo estado, uma vez que no h memria auxiliar. 12 a a b c c b a aControle Figura 2-2: Autmato Finito como uma mquina com controle finito. 2.1.1 Autmato Finito Determinstico (AFD) Umautmatofinitodeterminstico(AFD),ousimplesmenteautmatofinito,Muma quntupla: M = (E, Q, o, q0, F), onde: E - Alfabeto de smbolos de entradaQ - Conjunto finito de estados possveis do autmato o- Funo programa ou funo de transioo: Q x E Q q0 -Estado inicial tal que q0 e Q F-Conjunto de estados finais, tais que F _ Q. Afunoprogramapodeserrepresentadacomoumgrafoorientadofinitoconforme representado pela Figura 2-3 e Figura 2-4: paqestadoanteriorsmbololidonovoestado Figura 2-3:Representao da Funo programa como um grafo. qf q0 Figura 2-4: Representao dos estados inicial (com uma seta) e final (com linha grossa) como nodos de um grafo. OprocessamentodeumautmatofinitoMparaumapalavradeentradawconsistena sucessivaaplicaodafunoprogramaparacadasmbolodew,daesquerdapara direita, at ocorrer uma condio de parada. 13 Exemplo: Autmato Finito OautmatofinitoM1 =({a,b},{q0,q1,q2,qf},o1,q0,{qf}),ondeo1representada pela tabela abaixo e pelo grafo da Figura 2-5, reconhece a linguagem L1 = {w | w possui aa ou bb como subpalavra} o1ab * q0 q1 q2 qf q1 qf q1 qf q2 q2 qf qf aaabbbq0q1 q2qf Figura 2-5:Grafo do autmato finito determinstico M1. Oalgoritmoapresentadousaosestadosq1eq2paramemorizarosmboloanterior.Assim q1 representa o smbolo anterior a e q2 representa o smbolo anterior b.Aps identificar dois aa ou dois bb consecutivos o autmato assume o estado qf (final) e varreosufixodapalavradeentradasemqualquercontrolelgico,somentepara terminaroprocessamento.AFigura2-6ilustraoprocessamentodoautmatofinito M1 para a palavra de entrada w = abba, a qual aceita. a b b a12ff0 Figura 2-6: Seqncia de processamento. Note-se que um autmato finito sempre pra aoprocessar qualquer entrada, pois como todapalavrafinitaecomoumnovosmbolodeentradalidoacadaaplicaoda 14 funoprograma,noexisteapossibilidadedeciclo(loop)infinito.Aparadado processamento pode ocorrer de duas maneiras:aceitando ou rejeitando uma entrada w.As condies de parada so as seguintes: a)Apsprocessaroltimosmbolodafitaoautmatofinitoassumeumestado final.O autmato para e a entrada w aceita. b)Apsprocessaroltimosmbolodafita,oautmatofinitoassumeumestado no final.O autmato para e a entradaw rejeitada c)Afunoprogramaindefinidaparaoargumento(estadocorrenteesmbolo lido).O autmato para e a entrada w rejeitada. Definio: Linguagens Regulares ou do Tipo 3 Uma linguagem aceita por um autmato finito uma Linguagem Regular ou do Tipo 3. Exerccio Desenvolver AFDs que reconheam as seguintes linguagens sobre E = {a, b}: a){w | w possui aaa como subpalavra} b){w | o sufixo de w aa} c){w | w possui um nmero mpar de a e b} d){w | w possui nmero par de a e mpar de b ou vice-versa} e){w | o quinto smbolo da esquerda para a direita de w a} Exemplos: Autmato Finito Os autmatos M2 = ({a,b}, {q0}, o2, q0, C)eM3 = ({a, b}, {q0}, o3, q0, {q0}), cujo diagramas esto na Figura 2-7,reconhecem respectivamenteas linguagensL1 =C eL2=E*, onde o2eo3so representadas abaixo em forma de tabela. M2M3 o2ab o3ab q0q0q0 * q0q0q0 bq0aM3bq0aM2 Figura 2-7: Exemplo de Autmato Finito. OautmatoM4=({a,b},{q0,q1,qa2,q3},o,q0,{q0}),Figura2-8,reconhecea linguagem: L4 = {w | w possui um nmero par de a e b}. 15 q1 q0bq3 q2a aaabbbM4 Figura 2-8: Diagrama de transies de estado para o autmato M4. 2.1.2 Autmato Finito No-Determinstico(AFND) -No-determinismoumaimportantegeneralizaodosAFs,essencialparaa teoria da computao e para a teoria das linguagens formais. -Qualquer AFND pode ser simulado por um autmato finito determinstico. qpn p1p0aaa... Figura 2-9: Exemplo de um AFND. -Em AFNDs, a funo programa leva de um par (estado, smbolo) a um conjunto de estados possveis. -Pode-se entender que o AFND assume simultaneamente todas as alternativas de estados possveis {p0, p1, ..., pn} a partir do estado atual (q e Q)e do smbolo recebido(aeE),comosehouvesseumaunidadedecontroleparaprocessar cadaalternativaindependentemente,semcompartilharrecursoscomasdemais, Figura 2-9. -Assimoprocessamentodeumcaminhonoinfluinoestado,smbololidoe posio da cabea dos demais caminhos alternativos. Definio: Autmato Finito No-Determinstico (AFND) Um AFND uma quntupla M = (E, Q, o, q0, F), onde: E - Alfabeto de smbolos de entradaQ - Conjunto finito de estados possveis do autmato o- Funo programa ou funo de transioo: Q x E 2Q, parcial.q0 -Estado inicial tal que q0 e Q F- Conjunto de estados finais, tais que F _ Q. 16 Portanto,oscomponentesdoAFNDsoosmesmosdoAFD,comexceodafuno programa (ver Figura 2-9). Exemplo: Autmato Finito No-Determinstico OAFNDM5=({a,b},{q0,q1,q2,qf},o5,q0,{qf}),vejaFigura2-10,reconhecea linguagem L5 = {w | w possui aa ou bb como sub-palavra}, onde o5 dada abaixo, na forma de tabela: o5ab * q0 q1 q2 qf {q0, q1} {qf} - {qf} {q0, q2} - {qf} {qf} q0q2qfq1aa bba,ba,b Figura 2-10: Diagrama de transies de estados do AFND M5. Exemplo: Autmato Finito No-Determinstico OAFNDM6=({a,b},{q0,q1,q2,qf},o6,q0,{qf}),representadonaFigura2-11 reconhece a linguagemL6 = { w | w possui aaa como sufixo } q0 q2qfq1a aa,ba Figura 2-11: Diagrama de transies do AFND M6. 2.1.3 Autmato Finito com Movimentos vazios (ou com c-Transio) -MovimentosvaziosconstituemumageneralizaodosAFNDesotransies que ocorrem sem que haja a leitura de smbolo algum. -Osmovimentosvaziospodemserinterpretadoscomoumno-determinismo interno do autmato, que encapsulado. -A no ser por uma eventual mudana de estados, nada mais pode ser observado sobre um movimento vazio. -Qualquer AFc pode ser simulado por um autmato finito no-determinstico. 17 Definio: Autmato Finito com Movimento Vazio (AFc) Umautmatofinitono-determinsticoecommovimentovazio(AFNDc),ou simplesmente autmato finito com movimento vazio (AFc), uma quntupla: M = (E, Q, o, q0, F), onde: E -Alfabeto de smbolos de entradaQ -Conjunto finito de estados possveis do autmato o-Funo programa ou funo de transioo: Q x (E{c}) 2Q, parcial.q0 -Estado inicial tal que q0 e Q F-Conjunto de estados finais, tais que F _ Q. Portanto,oscomponentesdoAFcsoosmesmosdoAFND,comexceodafuno programa, veja a Figura 2-12. p0 p1 pn q . . . c a1 an Figura 2-12: Esquema genrico de um AFNDc possuindo uma c-transio. OprocessamentodosAFcsimilaraodosAFND.Poranalogiaoprocessamentode uma transio para uma entrada vazia tambm no-determinstica.Assim um AFc ao processar uma entrada vazia assume simultaneamente os estados de origem e destino da transio. Exemplo: Autmato Finito com Movimento Vazio OAFcM7=({a,b},{q0,qf},o7,q0,{qf}),representadonafiguraabaixoreconhecea linguagemL7={w|qualquersmboloaantecedequalquersmbolob},ondeo7 representada na forma da tabela: o7ab c q0{q0}-{qf} *qf-{qf}- baq0qf c Figura 2-13: Diagrama do AFc M7. 18 2.2 Operaes de Concatenao e Fechamento Seja C um conjunto finito de smbolos (alfabeto), e sejam L, L1 e L2 subconjuntos de C* (linguagenssobreoalfabetoC).AconcatenaodeL1eL2,denotadaporL1L2,o conjunto{xy|xeL1eyeL2}.Emoutraspalavras,ascadeiasdalinguagemL1L2so formadas por uma cadeia de L1 concatenada a uma cadeia de L2, nesta ordem, incluindo a todas as combinaes possveis. Define-se L0 = {c} e Ln =L Ln-1 para n> 1. O fecho de Kleene (ou simplesmente fecho) de uma linguagem L, denotado por L*, o conjunto: ==0*iiL L e o fecho positivo da linguagem L, denotado por L+, o conjunto: =+=1 iiL LEmoutraspalavras,L*denotaascadeiasconstrudaspelaconcatenaodequalquer nmerodecadeiastomadasdeL.OconjuntoL+semelhante,masnestecaso,as cadeias de zero palavras, cuja concatenao definida comoc, so excludas. Note-se, porm que L+ contm c se e somente se L a contm. Esta definio difere da definio do fechamento de alfabetos, onde A+ era definido como A*- {c}. Note-se que no caso de linguagens podem ocorrer dois casos: a)Se ceL, ento L+ = L* b)Se ceL, ento L+ = L* - {c} Exemplo 1: Se L1 = {10,1} e L2 = {0011,11}. Ento L1L2 = {100011,1011,10011,111} Exemplo 2: Se L1 = {10,11} e L2 = {0011,11}. Ento L1L2 = {100011,1011,110011,1111} 2.3 Expresses Regulares Umaexpressoregular(ER)sobreumalfabetoEindutivamentedefinidacomose segue: a) C uma ER que denota a linguagem vazia. b) c uma ER que denota a linguagem contendo exclusivamente a cadeia vazia, ou seja {c}. c)QualquersmboloxpertencenteaoalfabetoEumaERedenotaalinguagem contendo a cadeia unitria x, ou seja {x}. d)SeressoERsedenotamrespectivamenteaslinguagensReS,respectivamente, ento: i) (r+s) ER e denota a linguagem RS ii) (rs) ER e denota a linguagem {uv | ueRev e S} iii) (r*) ER e denota a linguagem R* 19 Observaes: 1.Osparntesespodemseromitidos,respeitando-seasseguintesprioridadesde operaes: -A concatenao sucessiva tem precedncia sobre a concatenao e a unio, e -A concatenao tem precedncia sobre a unio. 2.UmalinguagemgeradaporumexpressoregularrrepresentadaporL(r)ou GERA(r). Exemplos: Expresso Regular Linguagem Representada aaSomente a cadeia aa. ba*Todas as cadeias que iniciam por b, seguido de zero ou mais a. (a+b)*Todas as cadeias sobre o alfabeto {a, b} (a+b)*aa(a+b)*Todas as cadeias contendo aa como subpalavra. a*ba*ba*Todas as cadeias contendo exatamente dois b (a+b)*(aa+bb)Todas as cadeias que terminam com aa ou bb. (a+c)(b+ba)*Todas as cadeias que no possuem dois a consecutivos 0*1*2*Todas as cadeias de 0 seguidas de 1s seguidas d 2s Exerccios: Desenvolva expresses regulares que gerem as seguintes linguagens sobre E = {a, b}: 1.{w| w tem no mximo um par de a como subcadeia e no mximo um par de b como subcadeia}. 2.{w | qualquer par de a antecede qualquer par de b} 3.{w | w no possui aba como subpalavra} 2.4 Equivalncia entre AFs e ERs Pode-sefacilmenteconstruirumAFcomc-transiesapartirdequalquerexpresso regular.Omtododeveseraplicadoparaabase(casos(a),(b)e(c))eindutivamente para cada tipo de construo das ERs. a)Para expresso C, construa o seguinte AF: b) efe0 c)Para ER c, construa o seguinte AF: d) ef c) Para ER a (para algum aeE), construa o seguinte AF: d)efe0a d) Para ER (A + B), construa a seguinte estrutura: 20 d2 e2 d1 e1 ef e0 A B c c c c onde e1 e d1 so, respectivamente, os estados inicial e final da ER A, e e2 e d2

so, respectivamente, os estados inicial e final da ER B. e) Para ER AB, construa a seguinte estrutura: d2 d1 AB c e1e2 ondee1ed1so,respectivamente,osestadosinicialefinaldaERA,ee2ed2 so,respectivamente, os estados inicial e final da ER B. f) Para ER A*, construa a seguinte estrutura: e2 e1 d2 e0 A c c c c onde e1 e e2 so, respectivamente, os estados inicial e final da ER A. 2.5 Transformao de GR em AF ParatransformarumagramticaregularG=(N,T,P,S)emumautmatofinito M=(E,A,t,e0,F), proceda como segue: Algoritmo: Transformao de GR em AF Entrada: Uma Gramtica Regular G = (N, T, P, S) Sada: Um Autmato Finito M=(E, A, t, e0, F) E:= N{enovo, S}, onde enovo um smbolo que no pertence a N; A := T; e0 := S; se S ::= c e P ento F := { enovo, S} seno F := { enovo}; 21 fimSe; Construa t de acordo com as seguintes regras: a)ParacadaproduodaformaB::=aePc/ae{T{c}},crieumatransio t(B,a) = enovo; b) Para cada produo da forma B::=aC e P, crie uma transio t(B,a) = C; c) Para todo ae T, deixe t(enovo,a) indefinida (ou use o estado ERRO).

2.6 Transformao de AF em GR Para transformar um AF em uma gramtica regular equivalente, proceda como segue: Algoritmo: Transformao de AF em GR Entrada: Um Autmato Finito M=(E, A, t, e0, F) Sada: Uma Gramtica Regular G = (N, T, P, S) N := E; T := A; S := e0; Defina P de acordo com as seguintes regras: a) Se t(B, a) = C ento adicione B::=aC em P; b) Se t(B, a) = C e CeF, ento adicione B::=a em P; c) Se e0eF, ento adicione S::= c em P. 2.7 Determinizao de AFND Por definio, todo AFD um caso especial de AFND no qual a relao de transio umafuno.Assim,aclassedelinguagensreconhecidasporumAFNDincluias linguagensregulares(aquelasquesoreconhecidasporAFDs).Entretanto,pode-se provarqueaslinguagensregularessoasnicaslinguagensreconhecidasporum AFND.Paraisto,bastamostrarqueparaqualquerAFNDpode-seconstruirumAFD que reconhece a mesma linguagem. Um mtodo de transformao dado a seguir. Algoritmo: Determinizao de Autmato Finito Entrada: Um AFND MN = (E, A, t, e0, F) Sada: Um AFD MD = (E, A, t, e0, F) 1. Rotule a primeira linha da tabela de transies t para MD com um conjunto unitrio contendo apenas o estado inicial e0 de MN. Aplique o passo (2) a este conjunto. 2.DadoumconjuntodeestadosS,rotulandoumalinhadatabelatparaMD,paraa qual as transies ainda no foram computadas, encontre os estados de MN que podem ser alcanados a partir dos estados contidos em S para cada smbolo de entrada; coloque estes estados na coluna correspondente ao smbolo de entrada na tabela para MD. 3.Paracadanovoconjuntogeradopelastransiesdopasso(2),determineseelej usado como rtulo para alguma linha de MD. Se o conjunto ainda no foi usado, ento crieumanovalinhacomoconjuntocomortulo.Seoconjuntojfoiusado,no necessrio fazer nada com ele. 22 4. Se existe alguma linha em MD para a qual as transies no forma computadas, volte e aplique o passo (2) quela linha. Se todas as transies j forma computadas, v pra o passo (5). 5. Para todas as linhas de MD rotuladas com conjuntos que contenham pelo menos um estado final de MN, marque esta linha como estado final de MD. Fim. Exemplo: Construo de um AFD a partir do AFND M6. Determinizar o AFND M6 = ({a,b}, {q0, q1, q2, qf}, t, q0, {qf}), dado na Figura 2-11e repetido a seguir. q0 q2qfq1a aa,ba Tabela de t para o autmato M6 mostrado acima. tab * q0 q1 q2 qf q0, q1 q2 qf - q0 - - - Executando o algoritmo: t'ab q0 q01 q01 q01, q2 q0 q0 t'ab q0 q01 q012 q01 q012 q012, qf q0 q0 q0 t'ab q0 q01 q012 q012f q01 q012 q012f q012f q0 q0 q0 q0 Adicionandoosestadosrestantesedeterminandoosestadosfinais,tem-seatabelado autmato M6 determinizado (M6D): 23 t'ab * * q0 q01 q012 q012f q1 q2 qf q01 q012 q012f q012f q2 qf - q0 q0 q0 q0 - - - O AFD M6D = ({a, b}, Q, t, q0, F), construdo conforme o algoritmo dado :a abaq012fqfq012q01q0bbbaq1q2a a onde: Q={q0, q1, q2, qf, q01, q012, q012f } F={qf, q012f}. t=Exibida acima. 2.8 Equivalncia entre AFs com e sem c-transies Paraumautmato finitocomc-transies (oucommovimentovazio)define-se o c-fechamentodeumestadoecomooconjuntodeestadosalcanveisapartirdee utilizando-se somente c-transies. Para o exemplo a seguir tem-se o seguinte: 012 c e0 e0 CC e1 e1 C e1 C e2 *e2 CC e2 C c-fecho(e0) = {e0, e1, e2} c-fecho(e1) ={e1, e2} c-fecho(e2) = {e2} Seja M = (E, A, t, e0, F), um AF com c-transies, pode-se construir M = (E, A, t, e0, F) sem as c-transies da seguinte maneira: Algoritmo: Eliminao de c-transies Entrada: Um AFND M = (E, A, t, e0, F) Sada: Um AFND sem c-transies M = (E, A, t, e0, F) 1.F ser definido por F{e | eeE e c-fecho(e) contm um estado de F}; 24 2.tdevecontertodasastransiesdetquenosoc-transiesemaisaquelasque so obtidas pela composio de transies de t com as c-transies de t, da seguinte maneira: a) se (e1, a, e2)et e e3ec-fecho(e2) ento coloque (e1, a, e3)et; a) se (e1, a, e2)et e e1ec-fecho(e3) ento coloque (e3, a, e2)et; 2.9 Minimizao de Autmatos Finitos Diz-sequeumAFmnimoseelenopossuiestadosinatingveisoumortoseseno existemestadosequivalentesentresi.SeumAFnomnimo,entoumAF equivalente com menos estados pode ser obtido pela eliminao dos estados inatingveis e mortos e pela combinao dos estados equivalentes. Este processo de reduo pode ser repetidoatqueumAFmnimosejaencontrado.Assim,todoAFtemumAFmnimo correspondente. Realizandoestasreduesporcaminhosdiferentes,ouiniciandocommquinas equivalentes,masdiferentes,pode-seobtermquinasmnimasquepareamser diferentes.Entretanto,estasmquinassero,defato,idnticasemtudo,comexceo dos nomes usados para os estados. Pode-seconcluirque,excetopelosnomesdosestados,existeapenasumamquina mnimaparaumdadoproblemadereconhecimento.Istosignificaquenoimportaa formadoAFinicialmenteencontradoparareconhecerumadeterminadalinguageme noimportaaformacomqueasreduessofeitas:existeapenasumamquina mnima que pode ser encontrada pra este problema. 2.9.1 Estados Inatingveis Pode haver alguns estados no AF que nunca sero atingidos com nenhumaseqncia de smbolos a partir do estado inicial. Taisestadossochamadosdeestadosinatingveis.Aslinhasquecorrespondema estadosinatingveispodemsersimplesmenteremovidasdatabeladetransiopara deixar a mquina com menos estados. Algoritmo: Eliminao de Estados Inatingveis Entrada: Um Autmato Finito M = (E, A, t, e0, F) Sada: Um Autmato Finito sem estados InatingveisM = (E, A, t, e0, F) 1.Inicialize o conjunto de estados atingveis E com o estado inicial e0. 2.Adicione, em E, para cada estado e, presente no conjunto E, todos os estados d que podem ser alcanados por uma transio a partir de e, ou seja, todos os estados d tal que t(e,x) = d para algum xeA. 3.Se nenhum novo estado pode ser adicionado ao conjunto E com o uso destas regras, j foi obtido o conjunto de estados atingveis. 4.Coloqueemttodasastransiest(x,y)=ztalquex,zeEeyeA.ColoqueemF todos os estados que pertencem simultaneamente a F e a E. 25 2.9.2 Estados Mortos Um estado e de um AF morto se ele no final e se a partir dele no se pode atingir nenhum estado final. Para eliminar os estados mortos de um AF M proceda como segue: Algoritmo: Eliminao de Estados Mortos Entrada: Um AF M = (E, A, t, e0, F) Sada: Um AF sem estados mortos M = (E, A, t, e0, F) 1.Inicialize o conjunto de estados no-mortos E com os estados finais F de M. 2.ParacadaestadoeemE,adicioneosestadosdeEquelevamparaecomuma transiodetparaalgumsmbolodeentrada.Ouseja,adicioneemEoconjunto {x| t(x,a) = e, eeE e aeA} 3.Repita o passo (2) at que mais nenhum estado possa ser adicionado ao conjunto E. 4.Coloque em t todas as transies t(x,y) = z tal que x, zeE e yeA. Se e0eE ento faae0=e0;casocontrrio,e0umnovosmbolodeestadoealinguagem reconhecida pelo autmato vazia, uma vez que o estado inicial morto. 2.9.3 Estados Equivalentes Dois estados e e d so equivalentes se e somente se as duas condies seguintes forem satisfeitas: a) Condiodecompatibilidade:osestadoseeddevemserambosfinaisouambos no-finais. b) Condio de propagao: para qualquer smbolo de entrada, os estadose e d devem levar a estados equivalentes. As condies (a) e (b) podem ser incorporadas em um teste geral de equivalncia entre estados. O mtodo chamado mtodo da separao, uma vez que seu objetivo separar, ouparticionar,oconjuntodeestadosemsubconjuntosdisjuntos,oublocos,talque estadosno-equivalentesfiquememblocosseparados.Omtodoilustradoporsua aplicao no AF da tabela seguinte: tab e1 e6e3 e2e7e3 e3e1e5 e4e4e6 *e5e7e3 *e6e4e1 *e7e4e2 Os estados so inicialmente separados em dois blocos; um contendo os estados finais e outro contendo osestados no-finais. Para oexemplo, a partio inicialL0 dada pela seguinte lista: L0 = [{e1, e2, e3, e4},{e5, e6, e7}] j que e1, e2, e3 e e4 so estados no finais e e5, e6 e e7 so estados finais. Nenhum dos estadosnoprimeiroblocoequivalenteanenhumdosestadosnosegundobloco, porque tal para violaria a condio de compatibilidade. 26 Agora,observeoqueaconteceaosestadosnobloco{e1,e2,e3,e4}comentradaa.Os estadose3ee4voparaestadoscontidosnoprimeirobloco(e1ee4respectivamente), enquanto os estados e1 e e2 vo para estados no segundo bloco (e6 e e7 respectivamente). Istosignificaqueparaqualquerestadonoconjunto{e1,e2}equalquerestadoem {e3, e4} os estados seguintes correspondendo a entradaa no sero equivalentes.Isto uma violao da condio de propagao, e assim se pode concluir que nenhum estado em {e1, e2} ser equivalente a nenhum estado em {e3, e4}. Isto habilita a construo de uma nova partio: L1 = [{e1, e2},{e3, e4},{e5, e6, e7}] Comapropriedadedequeestadostomadosdeblocosdiferentesserosempreno equivalentes. AgorasetentarencontrarumblocoemL1eumaentradatalqueoblocopossaser separadocomrespeitoaentradaeumanovapartiosejaassimobtida.Estanova partiotambmterapropriedadedequeosestadostomadosdediferentesblocos serogarantidamenteno-equivalentes.Esteprocessodeveserrepetidoatque nenhuma nova separao seja possvel. No exemplo, a continuao seria a seguinte: Separando {e3, e4} de L1 com respeito a a: L2 = [{e1, e2},{e3},{e4},{e5, e6, e7}] Separando {e5, e6, e7} de L2 com respeito a a (ou b): L3 = [{e1, e2},{e3},{e4},{e5},{e6, e7}] ApartioL3nopodesermaisseparada.Paraverificaristo,observequetodosos estadosnobloco{e1,e2}voparaestadosnobloco{e6,e7}comentradaa,eparao bloco {e3} com entrada b. Similarmente {e6, e7} vo para os blocos {e4 } e {e1, e2} com entrada a e b, respectivamente. Os outros blocos tm apenas um elemento, e assim no podem mais ser separados. Quandooprocedimentotermina,osestadosdentrodeummesmoblocoso equivalentes.Noexemplo,osestadose1ee2soequivalenteseosestadose6ee7 tambm so equivalentes. Os blocos da partio final podem ser usados para construir uma nova mquina, a qual equivalenteoriginal,pormsempossuirestadosequivalentes.Paraoexemploa mquina mnima resultante seria: tabtab {e1, e2}{e6, e7}{e3} e1e5e2 {e3}{e1, e2}{e5}e2e1e4 {e4}{e4}{e6, e7}oue3e3e5 *{e5}{e6, e7}{e3}*e4e5e2 *{e6, e7}{e4}{e1, e2}*e5e3e1 ou em forma de diagrama de transio (com os estados renomeados): 27 e1ae2e5babe4e3abaabb Oconjuntodeestadosdanovamquinaoconjuntodeblocosdapartiofinal.As transiesparaanovamquinasoobtidasapartirdaantigaobservandoquaisblocos seguem quais para cada entrada. Assim, na tabela acima, a transio do estado {e1, e2} com entrada a definida para o estado {e6, e7}, porque os estados contidos no primeiro blocovoparaosestadosdosegundoblococomentradaa.Oestadoinicialdanova mquinasimplesmenteoblocoquecontmoestadoinicialdamquinaoriginaleos estados finais so aqueles blocos que contm estados finais da mquina original. Algoritmo: Eliminao de Estados Equivalentes Entrada: Um Autmato finito M = (E, A, t, e0, F) Sada: Um Autmato finito sem estados equivalentes M = (E, A, t, e0, F) Crie uma lista de parties L0 = [E F, F]. i :=0; Repita: Li+1 := []; Para cada elemento p de Li faa: Se | p | = 1 ento: Coloque p em Li+1 Seno p' := C; e := um estado qualquer de p; coloque e em p; para todo smbolo dep-{e} faa: se d e e so equivalentes ento: adicione d em p fim se; fim para; coloque p em Li+1; se p = p ento coloque p p em Li+1

fim se; fim se; fim para; i := i + 1; at Li = Li+1; Crie um smbolo de estado ej para cada elemento pj da partio Li; Coloque estes estados ej no conjunto E; Para cada transio t(e, a) = d faa Crie a transio t(ej, a) = el onde ee pj e depl, sendo el smbolo de pj e e de p. 28 Fim para. Coloque em F todos os estadosej de E originados a partir de algumpj tal que xepj e xeF. e0 = ej, tal que ej se originou de pj e e0 de pj.2.9.4 Estado de Erro ParanodeixartransiesindefinidasemM,pode-sesubstituirtodasasindefinies porumestadodeerroERROeadicionaresteestadotabela.Paracadasmbolode entradaoestadoERROtemtransioparasiprprio.Oestadodeerronodeve jamais ser definido como estado final. 2.9.5 Autmato Finito Mnimo Para encontrar um AF mnimo a partir de um AF qualquer preceda como segue: Algoritmo: Minimizao de Autmato Finito Entrada: um Autmato Finito M = (E, A, t, e0, F). Sada: um AF mnimo M = (E, A, t, e0, F). 1.Elimine os estados inatingveis (ou inalcanveis); 2.Elimine os estados mortos; 3.Adicione o estado de erro; 4.Elimine os estados redundantes 1 3. Linguagens Livres de Contexto AimportnciadasLLCsresidenofatodequepraticamentetodasaslinguagensde programaopodemserdescritasporesteformalismo,equeumconjuntobastante significativodestaslinguagenspodeseranalisadoporalgoritmosmuitoeficientes.A maioria das linguagens de programao pertence a um subconjunto das LLCs que pode seranalisadoporalgoritmosqueexecutamn.log(n)passosparacadasmboloda sentenadeentrada.Outrosubconjunto,quecorrespondeslinguagensnoambguas pode ser analisado em tempo n2. No pior caso, uma LLC ambgua pode ser analisada em tempon3.Oqueaindabastanteeficiente,secomparadoslinguagenssensveisao contextoquepoderequerercomplexidadeexponencial(2n),sendo,portanto, computacionalmenteintratveis,easlinguagensdetipo0,quepodemserinclusive indecidveis, isto , o algoritmo de anlise pode no parar nunca. Relembrando, uma gramtica livre de contexto (GLC) denotada por G = (N, T, P, S), ondeNeTsoconjuntosdisjuntosdevariveiseterminais,respectivamente,Pum conjuntofinitodeprodues,cadaumadaformaA::=o,ondeAumavariveldo conjuntoNeoumacadeiadesmbolosde(TN)*.Finalmente,Sumavarivel especial denominada smbolo inicial. 3.1 rvore de Derivao e Ambigidade Muitas vezes til mostrar as derivaes de uma GLC atravs de rvores. Estas figuras, chamadas rvores de derivao ou rvores sintticas, impem certas estruturas teis s cadeias das linguagens geradas, principalmente as de programao. Osvrticesdeumarvoredederivaosorotuladoscomterminaisouvariveis,ou mesmocomacadeiavazia.SeumvrticenrotuladocomA,eosfilhosdenso rotulados com X1, X2,..., Xk, da esquerda para a direita, ento A ::= X1X2...Xk deve ser uma produo. Considere, como exemplo, a gramtica: E ::= E+E | E*E|(E)|id Uma rvore de derivao para a sentena (id+id)*id gerada por esta gramtica poderia ser: E EE E E EE id * idid + )( 2 Mais formalmente, seja G = (N, T, P, S) uma GLC. Ento uma rvore uma rvore de derivao para G, se: a)Cada vrtice tem um rtulo, que um smbolo de NT{c}. b)O rtulo da raiz o smbolo S. c)Os vrtices interiores so rotulados apenas com smbolos de N. d)Se o vrtice n tem rtulo A, e os vrtices n1, n2,..., nk so filhos de n, da esquerda para a direita, com rtulos X1, X2,..., Xk, respectivamente, ento: A ::= X1X2...Xk deve ser uma produo em P. e)Se o vrtice n tem rtulo c, ento n uma folha e c o nico filho de seu pai. Exemplo Considere a gramtica G = ({S, A}, {a, b}, P, S), onde P consiste de S ::= aAS | a A ::= SbA | SS | ba A figura seguinte uma rvore de derivao para uma sentena desta gramtica, na qual os nodos foram numerados para facilitar a explicao: 123 45 6 7 89 10 11 S S AA Sab aab a Osvrticesinterioresso1,3,4,5e7.Ovrtice1temrtuloS,eseusfilhos,da esquerdaparaadireitatmrtulosa,AeS.NotequeS::=aASumaproduo.Da mesmaforma,ovrtice3temrtuloA,eosrtulosdeseusfilhossoS,beA,da esquerda para a direita; A :: SbA tambm uma produo. Os vrtices 4 e 5 tm ambos ortuloS.Onicofilhodelestemrtuloa;eS::=aumaproduo.Finalmente,o vrtice 7tem rtulo A, eseus filhos, daesquerdapara adireita, temrtulos b e a; e A::=batambmumaproduo.Assimascondiesparaqueestarvoresejauma rvore de derivao para G foram cumpridas. Pode-seestenderaordemdaesquerdaparaadireitadosfilhosparaproduziruma ordemdaesquerdaparaadireitadetodasasfolhas.Noexemploacima,o caminhamentodaesquerdaparaadireitanasfolhasdarvoreproduziriaaseguinte seqncia: 2, 9, 6, 10, 11 e 8. 3 Pode-se ver que a rvore de derivao uma descrio natural para a derivao de uma forma sentencial particular da gramtica G. Umasub-rvoredeumarvoredederivaocompostaporumvrticeparticularda rvore, juntamente com seus descendentes. SeumagramticaGtemmaisdeumarvoredederivaoparaumamesmacadeia, entoGchamadadegramticaambgua.Umalinguagemlivredecontextoparaa qualtodagramticalivredecontextoambguadenominadalinguagemlivrede contexto inerentemente ambgua. 3.2 Derivao mais Esquerda e mais Direita Secadapassonaproduodeumaderivaoaplicadonavarivelmaisesquerda, ento a derivao chamada derivao mais esquerda. Similarmente, uma derivao ondeacadapassoavariveldireitasubstituda,chamadadederivaomais direita. SewestemL(G),entowtemaomenosumarvoredederivao.Almdisso,em relaoaumarvoredederivaoparticular,wtemumanicaderivaomais esquerda e uma nica derivao mais direita. Evidentemente, w pode ter vrias derivaes mais esquerda e vrias derivaes mais direita,jquepodehavermaisdeumarvoredederivaoparaw.Entretanto,fcil mostrarqueparacadarvoredederivaoapenasumaderivaomaisesquerdae uma derivao mais direita pode ser obtida. Exemplo: derivao mais esquerda correspondendo rvore do exemplo anterior derivaomaisdireita correspondente S aAS aSbAS aabAS aabbaS aabbaa S aAS aAa aSbAa aSbbaa aabbaa 3.3 Simplificaes de Gramticas Livres de Contexto Existem vrias maneiras de restringir as produes de uma gramtica livre de contexto semreduzirseupoderexpressivo.SeLumalinguagemlivredecontextonovazia, entoLpodesergeradaporumagramticalivredecontextoGcomasseguintes propriedades: a)Cada varivele cada terminal de Gaparecem na derivao de alguma palavra de L. b)No h produes da forma A::=B, onde A e B so variveis. c)Se c no est em L, ento no h necessidade de produes da forma A::=c. 4 Nocasode(a)estessmbolos(variveisouterminais)soconhecidoscomosmbolos inteis(smbolosimprodutivosesmbolosinalcanveis).Em(b)asproduesA::=B soconhecidascomoproduesunitrias.AsproduesdaformaA::=c(itemc)so conhecidascomoc-produes.Existemalgoritmosquepodemseraplicadosnoscasos (a),(b)e(c)queproduzemumanovagramticaequivalentegramticaoriginal. Veremos apenas o algoritmo para eliminar as c-produes. 3.3.1 Eliminao das c-produes ConformevimosumaGLCpodeterproduesdotipo::=c.MastodaGLCpodeser transformadaemumaGLCequivalentesemestestiposdeprodues(chamadasc-produes),comexceodaproduoS::=c(Sosmboloinicial),seestaexistir. Assim procedendo, possvel mostrar que toda GLC pode obedecer restrio das GSC (tipo 1). O mtodo de eliminao das c-produes consiste em determinar, para cada varivel A emN,seA*c.Seissoocorrerdiz-sequeavarivelAanulvel.Pode-se,assim, substituircadaproduodaformaB::=X1X2X3...Xnportodasasproduesformadas pela retirada de uma ou mais variveis Xi anulveis. Exemplo: Dada a gramtica A ::= BCDe B ::= c | e C ::= c | a D ::= b | cC Neste caso as variveis anulveis so B e C, assim, a gramtica pode ser transformada na seguinte gramtica: A ::= BCDe | CDe | BDe | De B ::= e C ::= a D ::= b | c | cC Osno-terminaisquederivamacadeiacsochamadosc-no-teminais.Umno-terminal(varivel)Aumc-no-terminalseexistirumaderivaoA*cemG.Note quecestemL(G)seesomenteseSumc-no-terminal.SeGnotemc-no-terminal, ela dita c-livre. Se G tem c-produes, ento em uma derivao sentencial da forma: S o1 o2 ... on

Ostamanhosdassentenasirovariarno-monotonicamenteumemrelaoaooutro, isto , ora aumentam, ora diminui. Entretanto, se G no tem c-produes, ento: |S| s |o1| s |o2| s ... s |on| Isto, os tamanhos dassentenas so monotonicamentecrescentes. Estapropriedade til quando se quer testar se uma dada palavra ou no gerada por uma GLC. Antesdeapresentarumalgoritmoparaeliminarasc-produes,serapresentadoum algoritmo para encontrar os c-no-terminais. 5 Algoritmo: Encontrar o Conjunto dos c-no-terminais Entrada: Uma GLC G = (N, T, P, S) Sada: O conjunto E de c-no-terminais E := {A | AeN e A ::= c};Repita Q := {X | XeN e XeE e existe pelo menos uma produo da forma X ::= Y1 Y2...Yn

tal que Y1eE, Y2eE, ...,YneE}; E := EQ; At Q = C; Exemplo: Seja G a seguinte gramtica: S ::= aS | SS | bA A ::= BB B ::= CC | ab | aAbC C ::= c Inicialmente temos E = {C} e se obtem: B ::= CC | aAbC C ::= c Quando o lao executado pela primeira vez deixa Q = {B} e A ::= BB B ::= CC | ab | aAbCC ::= c obtendo E = {B, C} Como Q no vazio, uma segunda iterao deixa Q = {A} S ::= bA A ::= BB B ::= CC | ab | aAbCC ::= c obtendo E = {A, B, C}. Maisumavez,Qno-vazio,masumaiteraosubseqentenoacrescentanovos smbolos, assim o algoritmo termina. A, B e C so os nicos c-no-terminais em G. Paraeliminarosc-no-terminaisdeumaGLC,pode-seusaroseguintealgoritmo,que elimina c-no-terminais sem introduzir novos. A estratgia baseada na seguinte idia. SejaAumc-no-terminalemG.Entoeledivididoconceitualmenteemdoisno-terminaisAeA,talqueAgeratodasascadeiasnovaziaseAapenasgerac. Agora,oladodireitodecadaproduoondeAapareceumavez,porexemplo, B::=oA|,trocadoporduasproduesB::=oA|eB::=oA|.JqueAsgerac, 6 ele pode ser trocado por c, deixando B::=o|. Depois disso, pode-se usar A em lugar de A. A produo final fica: B::=o| | B::=oA|, onde A no mais um c-no-terminal. Se B::=oA|A, ento so obtidas as quatro combinaes possveis pelas trocas de A por c, e assim por diante. Algoritmo:Eliminao de todos os c-no-terminais Entrada: Uma GLC G = (N, T, P, S) Sada: Uma GLC G = (N, T, P, S) c-livre Construa o conjunto E; P := {p | peP e p no c-produo} Repita Se P tem uma produo da forma A::= oB|, tal que BeE, o|e(NT)* e o| = c, ento inclua a produo A::= o| em P; at que nenhuma nova produo possa ser adicionada a P; se SeE ento Adicione a P as produes S::=S | c N := N{S}; seno S := S; N = N; Fim-se; 3.3.2 Fatorao de GLC UmaGLCestfatoradaseeladeterminstica,ouseja,seelanopossuiprodues paraummesmonoterminalnoladoesquerdocujoladodireitoiniciecomamesma cadeia de smbolos ou com smbolos que derivam seqncias que iniciem com a mesma cadeiadesmbolos.Deacordocomestadefinio,aseguintegramticano determinstica: S ::= aSB | aSa A ::= a B ::= b Fontedeno determinismo. ParafatorarumaGLC(retiraronodeterminismo)deve-sealterarasprodues envolvidas no no determinismo da seguinte maneira: a)As produes com no determinismo direto da forma: A ::= o| | o sero substitudas por: A :: oA A ::= | | b)Onodeterminismoindiretoretiradoatravsdesuatransformaoem determinismodireto(atravsdesubstituiessucessivas)eposterioreliminao segundo o item (a). 7 Exemplo: Fatorar a gramtica S ::= aSB | aSa A ::= b B ::= a Eliminando o no determinismo direto S ::= aSS S::=B | a A ::= b B ::= a Veja que na produo S ::= B | a tem um no-determinismo indireto, pois o lado direito da varivel B comea com um a. Para fatorarestagramtica tem-se que tornar este no determinismo indireto emdireto substituindooladodireitodeB::=anavarivelBdaproduoS::=B.Assim procedendo tem-se: S ::= aSS S::= a | a A ::= b B ::= a Eliminando o no determinismo direto S ::= aSS S::= aS S ::= c A ::= b B ::= a 3.3.3 Eliminao da Recurso Esquerda Um no-terminal A, em uma GLC G = (N, T, P, S) recursivo se A +oA|, para o e | e(NT)*. Seo =c, ento A recursivo esquerda; se | = c, ento A recursivo direita. Esta recursividade pode ser direta ou indireta. Umagramticacompelomenosumno-terminalrecursivoesquerdaoudireita uma gramtica recursiva esquerda ou direita, respectivamente. Uma GLC G = (N, T, P, S) possui recurso esquerda direta, se P contm pelo menos uma produo da forma A ::= Ao. UmaGLCG=(N,T,P,S)possuirecursoesquerdaindireta,seexisteemGuma derivao da forma: A n A|, para algum n > 2. Para eliminar as recurses diretas esquerda de um no terminal A, com produes A ::= Ao1 | Ao2 | ... |Aom | |1 | |2 | ... | |n

onde nenhum |i comea por A, deve-se substituir estas produes-A pelas seguintes: A ::= |1A | |2A | ... | |nA A ::= o1A | o2A | ... |omA| c 8 Algoritmo: Eliminao da recurso esquerda Entrada: Uma GLC G = (N, T, P, S); Sada: Uma GLC G = (N, T, P, S) sem recurso esquerda; Ordene os no-terminais em uma ordem qualquer (ex: A1, A2, ...,An); Para i de 1 a n faa Para j de 1 a i-1 faa Substitua as produes Ai::=Aj por Ai::=o1 | o2 |...| ok, onde Aj::=o1 | o2 |...| ok so todas as produes-Aj correntes; fim_para; Elimine as recurses diretas esquerda entre as produes Ai; fim_para; 3.4 Tipos Especiais de GLCs A seguir sero identificados alguns tipos especiais de GLC. a) Gramtica prpria: Uma GLC prpria se: a.1) No possui produes cclicas; (ver definio a seguir) a.2) c-livre; e a.3) No possui smbolos inteis. b) Gramtica sem ciclos: G = (N, T, P, S) uma GLC sem ciclos (ou livre de ciclos) se no existe em G nenhuma derivao da forma A + A, para todo AeN. c) Gramtica reduzida: Uma GLC G = (N, T, P, S) uma GLC reduzida se c.1) L(G) no vazia; c.2) Se A ::= oeP ento A=o c.3) G no possui smbolos inteis. d) Gramticadeoperadores:UmaGLCG=(N,T,P,S)deoperadoresseelano possui produes cujo lado direito contenha no terminais consecutivos. e) Gramticaunicamenteinversvel:UmaGLCreduzidaunicamenteinversvelse ela no possui produes com lados direitos iguais. f) Gramticalinear:UmaGLCG=(N,T,P,S)linearsetodasassuasprodues forem da forma A ::= xBw | x, onde A e B pertencem a N, e x e w pertencem a T*. g) Forma normal de Chomsky: Uma GLC est na forma normal de Chomsky se ela c-livre e todas as suas produes (exceto, possivelmente, S ::= c) so da forma: g.1) A ::= BC, com a, b e percencentes a N, ou g.2) A ::= a, com AeN e aeT. h) Forma normal de Greibach: Uma GLC est na forma normal de Greibach se ela c-livre e todas as suas produes (exceto, possivelmente, S ::= c) so da forma A ::= ao tal que aeT, oeN* e AeN. 9 3.5 Principais Notaes de GLC A BNF (Backus Naur Form) uma notao utilizada na especificao formal de sintaxe de linguagens de programao. Esta aforma de especificao degramticas que tem sido utilizada nesse texto. A gramtica a seguir um exemplo de gramtica descrita na notao BNF: 1. ::= a | c 2. ::= +id | id ABNFE(BNFExtended)equivalenteBNF,maspermiteumaespecificaomais compactadasintaxedeumalinguagemdeprogramao.Ossmbolosentrechaves abreviamosfechosdascadeiasqueelesrepresentam.Amesmagramticadescrita acima em BNF pode ser representada em BNFE da seguinte forma: 1. ::= {a} 2. ::= id {+id} 10 4. Autmato de Pilha 4.1 Introduo Tipos de linguagens Tipo 0Linguagens Irrestritas Tipo 1Linguagens Sensveis ao Contexto Tipo 2Linguagens Livres de Contexto Tipo 3Linguagens Regulares Hierarquia de Chomsky LRLSCLLCLI Reconhecedores decidem se uma cadeia w pertence ou no a uma dada linguagem L(G). = enosimG L w ? ) ( Exemplo:L= {aibi | i>0} ab e L?, aabb e L?, aaabbb e L?, aaab e L? Reconhecedores x Linguagens: LinguagemReconhecedor Irrestrita Sensvel ao Contexto Mquina de Turing Livre de contextoAutmato de Pilha RegularAutmato finito 4.2 Conceito Intuitivo Suponha L uma LLC sobre o alfabeto E. Verificar se uma cadeia w pertence a L. Uso de Pinos e Discos Cadeias com nmeros iguais de as e bs e os as e b so consecutivos 11 Exemplo:L= {vcvR | v e (a,b)* , vR a cadeia reversa de v} Assim E = {a, b, c}.Queremos saber:abaacaaba e L? ,abaca e L? Usaremos uma pilha e dois discos: preto e branco. Para cada smbolo de entrada procederemos da seguinte forma: -Etapa 1: Se achar a empilhe um disco preto, e se achar b, um disco branco. -Etapa 2: Se achar c mude de atitude, e prepare-se para desempilhar discos. -Etapa 3: Compare o smbolo de entrada com o que est no topo da pilha: -Seforaeotopodapilhaocupadoporumdiscopretodesempilheo disco; ou -Seforbeotopodapilhaocupadoporumdiscobranco,desempilheo disco. Se em alguma situao nenhuma das etapas acima puder ser aplicada, ento pare: weL. Verificar se w = abcba pertence a L? Sim Smbolodeentrada FazPilhaResta na entrada aEmpilha disco pretobcba bEmpilha disco brancocba cMuda de atitudeba bCompara e desempilhaa aCompara e desempilha Verificar se w = cab pertence a L? No Smbolodeentrada FazPilhaResta na entrada cMuda de atitudeab aCompara e desempilha ab Verificar se w = aabcba pertence a L? No 12 Smbolodeentrada FazPilhaResta na entrada aEmpilha disco pretoabcba aEmpilha disco preto bcba bEmpilha disco brancocba cMuda de atitudeba bCompara e desempilhaa aCompara e desempilha 4.3 Definio Formal Um autmato de pilha no determinstico M definido como: ( ) o , , , , ,1F q Q M I E =onde: E : Alfabeto de entrada I: Alfabeto da pilha Q: Conjunto de estados: (q1, q2,.., qn} q1: Estado inicial: q1e Q F: Conjunto de estados finais: F_Q o: Funo de transio:{ } ( ) { } ( ) ( )*I I E = Q P Qfc c o Entendendo a funo de transio: Seja M um AP e suponha que:qeQ, o e E{c} e e I{c} Dados peQ e u e I*, a transio (q, o, ) (p,u) significa que: -M muda para o estado p. -M troca por u no topo da pilha. Casos onde aparecem o c CasosInterpretao o = c, (q, c, ) (p,u)A entrada no consultada = c,(q, o, c) (p,u)A topo da pilha no consultado o= = c, (q, c, c) (p,u)Nem a entrada, nem o topo da pilha so consultados. = c e u = c,(q, o, ) (p, c)Remove da pilha = c e u = c,(q, o, c) (p, u)Empilha u = c e u = c,(q, o, c) (p, c)No altera a pilha Exemplo1: Criar um Autmato de Pilha M1 para L1= {vcvR | v e (a,b)* , vR a cadeia reversa de v} E : {a, b, c} I:{a, b} Concluso: A entrada dever se aceita se, e somente se, ao final da execuo do processamento ela foi totalmente consumida e a pilha est vazia 13 o: funo de transio: ( ) { }( ) { }( ) { }( ) { }( ) { }Desempilhaq b b qq a a qinalterada permanece Pilha q c qEmpilhab q b qa q a q, ) , , (, ) , , (, ) , , (, ) , , (, ) , , (2 22 22 11 11 1c oc oc c oc oc o===== Q = {q1, q2},q1 = q1e F = {q2} A funo de transio pode ser colocada em forma de tabela. EstadoEntradaTopo da pilhaTransies a o (p1, u1) ... (ps, us) Para o autmato M1 acima EstadoEntradaTopo da pilha TransiesDescrio q1 a c (q1, a)Acha a e o empilha. q1b c (q1, b)Acha b e o empilha. q1c c(q2, c)Acha c e muda de estado. q2aa(q2, c)Acha a na entrada e na pilha e o desempilha q2bb(q2, c)Acha b na entrada e na pilha e o desempilha Forma grfica de uma transio Exemplo2: Criar um Autmato de Pilha M2 para 14 L2= {vvR | v e (a,b)* , vR a cadeia reversa de v} E : {a, b} I:{a, b} o: funo de transio: EstadoEntradaTopo da pilha TransiesDescrio q1 a c (q1, a)Acha a e o empilha. q1b c (q1, b)Acha b e o empilha. q1 cc(q2, c)Muda de estado. q2aa(q2, c)Acha a na entrada e no topo e o desempilha q2bb(q2, c)Acha b na entrada e no topo e o desempilha Q = {q1, q2},q1 = q1e F = {q2} 4.4 Exemplos e construes de AP Exemplo 1:L = {aibi | i > 0} Procedimento com um disco: -Etapa 1: Se achar um a na entrada, ponha um disco na pilha -Etapa 2: Se achar um b mude de atitude e passe a comparar a entrada com a pilha, removendo um disco da pilha para cada b que achar na entrada (incluindo o primeiro!) M = ( {a,b}, {a}, {q1, q2}, q1, {q1, q2}, o) Onde o est na tabela EstadoEntradaTopo da pilha TransiesDescrio q1 a c (q1, a)Empilha a. q1ba(q2, c)Desempilha a e muda de estado. q2ba(q2, c)Desempilha a. Exemplo 2:L = {w e {a, b} | o nmero de as igual ao nmero de bs} Procedimento: -Etapa 1: Empilhar a para cada a encontrado e b para cada b encontrado na entrada. -Etapa 2: Empilhar um b sobre um a tem o efeito de desempilhar o b da pilha e vice-versa. 15 Tabela para o EstadoEntradaTopo da pilha TransiesDescrio q1 aa(q1, aa)Acha a e o empilha. q1bb(q1, bb)Acha b e o empilha. q1ab(q1, c)Desempilha um b. q1ba(q1, c)Desempilha um a. Vejaqueestatabelanoestbemespecificada,poisemqualquerentrada(linha)da mesmaapilhatemquepossuirumsmbolo.E,inicialmente,nohsmbolonapilha. Se apenas adicionarmos as entradas: q1 a c (q1, a)Empilha a. q1b c (q1, b)Empilha b o autmato ficar errado. Asadainventarumnovosmbolo|paraoalfabetodapilha.Estesmbolo acrescentadopilhaaindavazia,noinciodacomputao.Daemdiante,oautmato opera apenas com as e bs na pilha. Assim, ao avistar um | no topo da pilha o autmato sabe que a pilha no contm mais nenhum a ou b. Para garantir que| s vai ser usado umavez,convmreservaraoestadoinicialapenasaaodemarcarofundodapilha. Portanto, se q1 for o estado inicial teremos o(q1, c, c) = {(q2, |)} Comistose,aofinaldacomputao,apilhacontmapenasomarcador|entoa palavraestemLeaceita;docontrrioapalavrarejeitada.Entretanto,pela definio formal o autmato s pode aceitar a palavra se a pilha estiver completamente vazia.Istosugerequeprecisamosdemaisumatransiopararemover|dofundoda pilha. Assimsurgeumnovoproblema.SeapalavraestemL,entosertotalmente consumidadeixandonapilhaapenas|.Portanto,atransioqueremove|aofinal destacomputao,eesvaziacompletamenteapilha,notemnenhumaentradapara consultar.Oproblemaquesepermitimosaoautmatoremoversemconsultara entrada, ele pode realizar este movimento no momento errado, antes que a entrada tenha sido consumida. Como os nossos autmatos so no determinsticos, isto no apresenta nenhum problema conceitual. Infelizmenteofatodeaindahaversmbolosnaentradaabreapossibilidadedo autmatocontinuaracomputaodepoisdeterretiradoomarcadordofundo.Para evitar isto, o autmato deve, ao remover |, passar a um novo estado q3 a partir do qual nohtransies.Assim,seoautmatodecidirremoveromarcadorantesdaentrada ser totalmente consumida ele ser obrigado a parar, e no poder aceitar a entrada nesta computao. Como a pilha s vai poder se esvaziar em q3 , claro que este ser o nico estado final deste autmato. 16 Resumindo,temosumautmatoquetem{a,b}comoalfabetodeentrada;{a,b,|} comoalfabetodapilha;estadosq1,q2eq3;estadoinicialq1;estadofinalq3;ecuja funo de transio definida na tabela abaixo. EstadoEntradaTopo da pilha TransiesDescrio q1cc(q2, |)Marca o fundo da pilha q 2a |(q2, a|)Acha a e empilha um a q 2b |(q2, b|)Acha b e empilha um b q 2aa(q2, aa)Acha a e empilha um a q 2bb(q2, bb)Acha b e empilha um b q 2ba(q2, c)Desempilha um a q 2ab(q2, c)Desempilha um b q 2 c|(q3, c)Esvazia a pilha 4.5 Exerccios 1) Considere oautmato de pilha no determinstico M com alfabetoE = {a, b} eI= {a}, estados q1 e q2, estado inicial q1 e final q2 e transies dadas pela tabela: EstradoEntradaTopo da pilhatransies q1a c (q1, a) (q2, c) q1b c (q1, a) q2aa(q2, c) q2ba(q2, c) a)Descreva todas as possveis seqncias de transies de M na entrada aba. b)Mostrequeaba,aaeabbnopertencemaL(M)equebaa,babebaaaa pertencem a L(M). 2) Ache um autmato de pilha no determinstico cuja linguagem aceita L onde: a)L={anbn+1| n > 0}; b)L={anb2n| n > 0}; c)L={anbmcn| m,n >1}; d)L={anbman+m| m,n >1}; 3) Considere a linguagem dos parnteses balanceados. a)D exemplo de uma gramtica livre de contexto que gere esta linguagem. b)Dexemplodeumautmatodepilhanodeterminsticoqueaceitaesta linguagem. 17 4.6 Gramticas Livres de Contexto e Autmatos de Pilha Nossoobjetivonestaseoademonstraodoseguinteresultadofundamental:Uma linguagemlivredecontextose,esomentese,aceitaporalgumautmatodepilha nodeterminstico.Comoumalinguagemlivredecontextoseforgeradaporuma gramticalivredecontexto,oqueprecisamosfazerestabelecerumeloentre gramticaslivresdecontextoeautmatosdepilha.Nestecaso,iremoselaboraruma receitaque,dadaumagramticalivredecontextoG=(N,T,P,S),construiremosum autmatodepilhanodeterminsticoMqueaceitaL(G).Nodesenvolveremosa recproca, isto , dado M um autmato de pilha no determinstico, construir G a partir de M. SejaGumagramticalivredecontexto.Nossoobjetivoconsisteemconstruirum autmato de pilha cujas computaes simulem as derivaes mais esquerda em G . claroqueapilhatemquedesempenharumpapelfundamentalnestasimulao.Oque de fato acontece que o papel dos estados secundrio, e a simulao se d na pilha. SejaG=(N,T,P,S)umagramticalivredecontextoe( ) o , , , , ,1F q Q M I E = o autmatodepilhaaserconstrudoapartirdeG.ComoMdeveaceitarL(G),isto GERA(G)=ACEITA(M),claroqueseualfabetodeentradaEtemqueserigualaT. Continuando, temos: E = T(alfabeto de entrada igual conjunto de terminais de G) q1 = i (estado inicial i) I = TN(alfabeto de pilha a unio de terminasi e no terminais de G) Cada derivao de G corresponde a uma transio de M. Entretanto, como a derivao depalavrasdeL(G)feitaapartirdosmboloinicialS,oautmatodevecomear pondoestesmbolonofundodapilha.Observequeoautmatonopodeconsumir entrada ao marcar o fundo da pilha, j que precisamos da entrada para gui-lo na busca da derivao correta. Nem adianta consultar a pilha, j que ainda est totalmente vazia. Entretanto, uma transio que no consulta a entrada nem a pilha pode ser executada em qualquermomentodacomputao.Porissoforamosoautmatoamudardeestado depois desta transio, impedindo assim que volte a ser executada. Temos ento que o(i, c, c) = {(f, S)}, onde f, diferente de i, um estado do autmato. Da em diante toda a ao vai se processar na pilha, e podemos simular a derivao sem nenhumamudanadeestadoadicional.Portanto,fseroestadofinaldeM.Assim, regra X ::= o de G fazemos corresponder a transio (1) (f, c, X) e (f, o) de M . Contudo, a construo do autmato ainda no est completa. O problema que Mspodeaplicarumatransiocomo(1)seavarivelXestivernotopodapilha. Infelizmente isto nem sempre acontece, como ilustra o exemplo a seguir. 18 Exemplo Suponhamos G1 = (N, T, P, S) com T = {a, b, c} N = { S } S = S P = { S ::= Sc | aSb | c}. Logo, de acordo com as discusses acima,( ) o , , , , , 11F q Q M I E = , deve ter E = {a, b, c} I = {a, b, c, S} Q = {i, f} q1 = i F = {f} E o est representado na tabela abaixo EstadoEntradaTopo da pilhaTransio i cc (f, S) f c S(f, Sc) (f, aSb) (f, c) A palavra abc2 tem derivao mais esquerda S Sc Sc2 aSbc2 abc2 em G1 Agora, deve-se fazer uma computao de M1 que copie na pilha esta derivao abc2. A computao deve comear marcando o fundo da pilha com S e deve prosseguir, a partir da, executando, uma a uma, as transies de M1 que correspondem s regras aplicadas na derivao acima. Isto nos d (2)(i, abc2, c)(f, abc2, S) (f, abc2, Sc) (f, abc2, Sc2) (f, abc2, aSbc2). At aqui tudo bem, mas a transio seguinte deveria substituir S por c. S que para isto ser possvel a varivel S tem que estar no topo da pilha, o que no acontece neste caso. Observe, contudo, que o a que apareceu na pilha acima do S na ltima configurao de (2)correspondeaoprimeirosmbolodapalavradeentrada.Almdisso,comosetrata deumaderivaomaisesquerda,estesmbolonosermaisalterado.Conclumos que,comooprimeirosmbolodapalavrajfoicorretamentederivado,podemos esquec-lo e partir para o smbolo seguinte. Para implementar isto no autmato basta apagar da pilha os terminais que precedem a varivel mais esquerda da pilha e que j foram corretamente construdos. Isto significa acrescentar tabela acima transies que permitam apagar terminais que apaream simultaneamente na entrada e na pilha: EstadoEntradaTopo da pilhaTransio faa(f, c) fbb (f, c) fcc(f, c) Levando isto em conta a computao acima continua, a partir da ltima configurao de (2) da seguinte maneira 19 (3)(f, abc2, aSbc2) (f, bc2, Sbc2) (f, bc2, bc2) (f, c2, c2) (f, c, c) (f, c, c). Observe que a passagem da segunda para a terceira configurao em (3) corresponde regra S ::= c. Todas as outras etapas so aplicadas das transies da segunda tabela. 4.7 Construo de AP Atravs de GLC Podemosagoradescreverdemaneirasistemticaareceitausadaparaconstruirum autmatodepilhanodeterminsticoMcujalinguagemaceitaL(G).Seagramtica livredecontextoGtemporelementos(N,T,P,S),entooautmatoficar completamente determinado pelos seguintes os elementos -o alfabeto de entrada T; -o alfabeto da pilha TN; -o conjunto de estados {i, f}; -o estado inicial i; -o conjunto de estados finais {f}; -a funo de transio { } { } ( ) { } ( ) { } ( )*, , : N T f i N T T f i c c o que definida por ( ) ( )( ) ( ) ( )( ) ( ) e = e e ===T a f a a faT N N X f X fXS f ionde , , , : fazer Gdeterminaltodo Parae onde , , , : fazer Gde :: regratoda Para, , ,*c oo o c ooc c o Este autmato executa dois tipos diferentes de transio a partir do estado final f. -Transiesdesubstituies:substituemumavarivelXnotopodapilhaporo (pertence a TN*) quando X ::= o uma regra de G. -Transiesderemoo:removemterminaisqueaparecemcasadosnapilhaena entrada. Exemplo Considere a gramtica G2 cujas regras so E ::= E + T | T T ::= T * F | F E ::= (E) | id Assim,( ) o , , , , , 21F q Q M I E = , deve ter E = {id, +, *, (, )} I = { id, +, *, (, ), E, T, F} Q = {i, f} 20 q1 = i F = {f} E a funo de transio definida pela tabela EstadoEntradaTopo da pilhaTransio i cc (f, E) f c E(f, E+T) (f, T) f c T(f, T*F) (f, F) f c F(f,(E)) (f, id) f(((f, c) f))(f, c) f++(f, c) f**(f, c) fidid(f, c) Uma computao para a cadeia id + id * id (i, id+id*id, c) (f, id+id*id, E)(f, id+id*id, E+T)(f, id+id*id, T+T) (f, id+id*id, F+T)(f, id+id*id, id+T)(f, +id*id, +T) (f, id*id, T)(f, id*id, T*F) (f, id*id, F*F) (f, id*id, id*F)(f, *id, *F) (f, id, F)(f, id, id) (f, c, c). 5. Mquina de Turing A mquina de Turing, proposta por Alan Turing em 1936, universalmente conhecida e aceitacomoformalizaodealgoritmo.Trata-sedeummecanismosimplesque formalizaaidiadeumapessoaquerealizaclculos.Lembra,emmuito,os computadoresatuais,emboratenhasidopropostaanosantesdoprimeirocomputador digital. Apesar de sua simplicidade, o modelo Mquina de Turing possui, no mnimo, o mesmo poder computacional de qualquer computador geral. A mquina de Turing pode ser vista como uma mquina constituda de trs partes, como segue: a)Fita. Usada simultaneamente como dispositivo de entrada, de sada e de memria de trabalho. b)Unidadedecontrole.Refleteoestadocorrentedamquina.Possuiumaunidadede leituraegravao(cabeadafita),aqualacessaumacluladafitadecadaveze movimenta-se para a esquerda ou para a direita. c)Programaoufunodetransio.Funoquedefineoestadodamquinae comanda as leituras, as gravaes e o sentido de movimento da cabea. Afitafinitaesquerdaeinfinita(tograndequantonecessrio)direita,sendo dividida em clulas, cada uma armazenando um smbolo. Os smbolos podem pertencer ao alfabeto de entrada, ao alfabeto auxiliar ou ainda ser branco ou marcador de incio de fita. Inicialmente, a palavra a ser processada (ou seja, a informao de entrada para a mquina) ocupa as clulas mais esquerda aps o marcador de incio de fita, ficando 21 asdemaiscombranco,comoilustradonafiguraabaixo,onde|erepresentam branco e marcador de incio de fita, respectivamente. abbca||... entrada fita marcador de incio de fita branco controle cabea da fita unidade de controle Aunidadedecontrolepossuiumnmerofinitoepredefinidodeestados.Acabeada fitalosmbolodeumacluladecadavezegravaumnovosmbolo.Apsa leitura/gravao(agravaorealizadanamesmacluladeleitura),acabeamove umaclulaparaadireitaouparaaesquerda.Osmbologravadoeosentidodo movimento so definidos pelo programa. O programa uma funo que, dependendo do estado corrente da mquina e do smbolo lido,determinaosmboloasergravado,osentidodomovimentodacabeaeonovo estado. 5.1 Modelo Formal Uma mquina de Turing uma 8-upla: M = (E, Q, o, q0, F, V, |, ) Onde: E: alfabeto de smbolos de entrada; Q: conjunto de estados possveis da mquina, o qual finito; o: programa ou funo de transio: { } ( ) { } ( ) { } D E V Q V Q , , , : E E | | o q0: estado inicial da mquina, tal que q0eQ; F: conjunto de estados finais, tal que FcQ; V: alfabeto auxiliar; |: smbolo especial branco : smbolo especial marcador de incio ou smbolo de incio da fita. Osmbolodeinciodafitaocorreexatamenteumavezesemprenaclulamais esquerdadafita,auxiliandonaidentificaodequeacabeadafitaseencontrana clula mais esquerda da fita. A funo programa: 22 ConsideraPara determinar -estado corrente-novo estado -smbolo lido da fita-smbolo a ser gravado -sentidodemovimentodacabea,ondeesquerda edireitasorepresentadosporEeD, respectivamente. Assim, tem-se que: o(estadoCorrente, smboloLido) = (novoEstado, smboloGravado,sentidoDeMovimento) ou seja, suponha que p, q e Q, au, ave(EV{|,}) e me{E, D}): o(p, au) = (q, av, m) Afunoprogramapodeserinterpretadaemumdiagramadetransiocomo mostrado na figura abaixo. pq (au, av, m) estado corrente smbolo lido smbolo gravado sentido do movimento estado novo Neste caso, os estados iniciais e finais so representados como: q0 qf Afunoprogramapodeserrepresentadanaformadetabela,vejaaseguir.Atabela ilustra o caso para o(p, au) = (q, av, m): o...au ...av ...| p q ... (q, av, m) OprocessamentodeumamquinadeTuringM=(E,Q,o,q0,F,V,|,)parauma palavradeentradawconsistenasucessivaaplicaodafunoprogramaapartirdo estado inicial q0e da cabea posicionada na clula mais esquerda da fita, at ocorrer umacondiodeparada.OprocessamentodeMparaaentradawpodepararouficar 23 em loop infinito. A parada pode ser de duas maneiras: aceitando ou rejeitando a entrada w. As condies de parada so as seguintes: a)Estadofinal.Amquinaassumeumestadofinal:amquinapraea palavra de entrada aceita. b)Funoindefinida.Afunoprogramaindefinidaparaoargumento (smbolo lido e estado corrente): a mquina pra e a palavra de entrada rejeitada. c)Movimentoinvlido.Oargumentocorrentedafunoprogramadefine um movimento esquerda e a cabea da fita j se encontra na clula mais esquerda: a mquina pra e a palavra de entrada rejeitada. Exemplo: Mquina de Turing M1 para reconhecer a linguagem L = {anbn | n > 0} AmquinadeTuringM1=({a,b},{q0,q1,q2,q3,q4},o,q0,{q4},{A,B},|,) ilustrada abaixo: TABELA oab AB| q0(q0, , D)(q1, A, D)(q3, B, D)(q4, |, D) q1(q1, a, D)(q2, B, E)(q1, B, D) q2(q2, a, E)(q2, A, D)(q2, B, E) q3(q3, B, D)(q4, |, E) q4 DIAGRAMA DE TRANSIES (b, B, E) (a, a, E) (B, B, E) (a, a, D) (B, B, D) (|, |, E) (|, |, D) (B, B, D) (B, B, D) (,, D) (A, A, D) (a, A, D) q0q1q2 q3 q4 O algoritmo apresentado reconhece o primeiro smboloa, o qual marcado como A, e movimentaacabeadafitaparaadireita,procurandoobcorrespondente,oqual marcado como B. Este ciclo repetido sucessivamente at identificar para cada a o seu correspondente b.Adicionalmente, oalgoritmo garante que qualquer outra palavra que 24 noestejanaformanabnrejeitada.Note-sequeosmbolodeinciodefitanotem influncia na souo proposta. AseguirapresentadaumacomputaodamquinadeTuringM1paraaentrada w=aabb. COMPUTAO para a cadeia aabb. q0 aabb|...aabb|...Aabb|... q0 q0 q1 Aabb|...Aabb|...AaBb|... q2 q2 q0 AaBb|...AABb|...AABb|... q1 q1 q2 AABB|...AABB|...AABB|... q2 q0 q3 AABB|...AABB|...AABB|... q3 q4