Вы находитесь на странице: 1из 24

Prof.

Rmulo Silva

Teoria da Computao
Maio/2007

Prof. Rmulo Silva

Objetivo desta apostila


Esta apostila foi desenvolvida com o objetivo de facilitar o entendimento da Teoria da Computao, principalmente no que se refere s Linguagens Formais e Autmatos. Na sua elaborao foram utilizados os principais livros-textos adotados em disciplinas dessa rea. Os exemplos apresentados so bastante simples, visando fins didticos. Portanto, esta apostila NO substitui os livros-textos, sendo apenas um material auxiliar. Se voc tem sugestes e/ou correes, envie para romuloce@hotmail.com . Agradecemos antecipadamente. Rmulo Csar Silva

Prof. Rmulo Silva

1. Introduo
Teoria da Computao. A Teoria da Computao abrange o estudo de modelos de computadores ou mquinas e o respectivo poder computacional destes modelos. Isto , que classes de problemas podem ser resolvidas em cada modelo e como represent-los. O modelo de computao atual (ano base: 2007) incapaz de entender a linguagem humana direta: seja falada ou escrita, dado o nmero enorme de possibilidades de significados e/ou acepes de uma mesma palavra, alm das variaes de construes de frases. Linguagens Formais. Para diminuir este distanciamento entre a lngua humana (por exemplo: o portugus, o ingls, etc.) e a programao de computadores foram criadas as linguagens de programao. Estas so linguagens formais, isto , procuram eliminar toda ambigidade possvel, garantindo assim que um comando e palavras reservadas tenham sempre o mesmo significado independentemente de onde apaream no programa. A lngua portuguesa uma linguagem natural, sendo que sua representao escrita possui uma gramtica. Esta indica onde se deve usar preposio ou no; a concordncia verbal e nominal, entre outras regras. Gramticas. Da mesma forma, as linguagens de programao possuem uma gramtica associada, que define a formao de programas vlidos. Por exemplo: se cada comando deve ser seguido de ; (ponto-e-vrgula), se o tipo de uma varivel vem antes ou depois de seu nome. Algoritmos. As resolues de problemas so representadas atravs de algoritmos, sendo que esses so implementados computacionalmente em alguma linguagem de programao. Compiladores. Os compiladores fazem traduo dos programas escritos nas diversas linguagens de programao para instrues que o computador capaz de executar. Assim, a Teoria da Computao est intimamente ligada ao estudo de linguagens: sua representao (gramtica); e sua traduo para instrues da mquina usada (compilador).

2. Gramticas e Linguagens Formais


Uma gramtica define a estrutura geral de formao de uma sentena vlida para uma linguagem. Suponha o seguinte exemplo simplificado para a Lngua Portuguesa: <Frase> ::= <Sujeito> <Predicado> <Sujeito> ::= <Artigo> <Substantivo> <Predicado> ::= < Verbo> <Complemento> <Complemento> ::= <Artigo> <Substantivo> <Artigo> ::= o | a <Substantivo> ::= livro | mente <Verbo> ::= abre 3

Prof. Rmulo Silva

Forma Normal de Backus. A gramtica anterior est especificada numa notao conhecida como Forma Normal de Backus (BNF). Nessa notao, as palavras entre os smbolos < e > so chamadas variveis. O smbolo ::= indica que a varivel sua esquerda pode ser substituda pelos valores direita. Assim, a gramtica anterior estabelece que uma frase formada por um sujeito seguido de um predicado, sendo que este por sua vez formado por um verbo seguido de um complemento. E portanto, a frase o livro abre a mente uma frase vlida segundo a gramtica acima. Em uma linguagem de programao teramos, por exemplo, uma regra que define um comando de atribuio vlido: <Atribuicao> ::= <Varivel> := <Valor> ; onde <Varivel> se refere a qualquer seqncia de caracteres comeando com alguma letra. A descrio de gramticas seguindo essa forma, embora de simples entendimento, no muito prtica quando se deseja estudar mais genericamente as propriedades das linguagens. Assim, na teoria da computao geralmente dado um tratamento matemtico s linguagens e adotam-se convenes de notao e simplificaes, procurando facilitar sua representao e o estudo de suas propriedades. Exemplo de convenes: ao invs de se escrever <Varivel>, em geral utiliza-se apenas uma letra maiscula (V) para representar tais tipos de construo. Alm disso, na Teoria da Computao, em geral procura-se estudar classes de linguagens ao invs de uma linguagem especfica. A seguir, algumas definies essenciais para o estudo de Linguagens Formais: 2.1 Alfabeto (): um conjunto finito de smbolos. Na lngua portuguesa seria formado pelas 27 letras do alfabeto mais os dgitos de 0 a 9. Outros exemplos: o alfabeto grego, o alfabeto russo. Usamos a letra grega sigma maiscula () para representar o alfabeto de uma linguagem. Ex.: = {0,1} representa o alfabeto composto pelos smbolos 0 e 1. 2.2 Palavra ou cadeia: uma seqncia finita de smbolos do alfabeto concatenados Exemplos de palavras utilizando o alfabeto = {0,1}: 0, 1, 010, 111, 011, etc. O comprimento de uma cadeia w, denotado por |w| o nmero de smbolos que compem w. Assim a palavra 011 tem comprimento 3 (trs). Usamos a letra grega epsilon minscula () para representar a palavra vazia, isto , tem comprimento 0 (zero).

Prof. Rmulo Silva

O smbolo * indica o conjunto de todas as palavras possveis de serem formadas a partir do alfabeto , de qualquer comprimento incluindo a palavra vazia (). A notao an indica a repetio do smbolo a n vezes. Assim a3 representa aaa, a2 representa aa e a0 representa (palavra vazia). 2.3 Linguagem Formal: um conjunto de palavras sobre um alfabeto. Exemplos de linguagens formais sobre o alfabeto = {0,1}: a) L = { 01, 1010, 1110} representa a linguagem formada pelas cadeias 01, 1010 e 1110 somente. b) L = { w | w tem nmero mpar de zeros em *} representada todas cadeias possveis com nmero mpar de zeros usando somente os smbolos 0 e 1.

3. Representao de Linguagens Formais


Uma linguagem formal pode ser representada de 3 maneiras: Enumerao das cadeias que fazem parte dela. Gramtica, isto , um conjunto de regras que especifica a formao das cadeias. Dispositivo reconhecedor (mquina), que possui embutido um conjunto de regras de aceitao de cadeias. A primeira s pode ser utilizada para linguagens finitas. As duas ltimas so capazes de representar linguagens com nmero infinito de cadeias. Gramtica. A definio formal de uma gramtica uma qudrupla ordenada G = (V,T, P,S), onde: V o conjunto de smbolos no-terminais, tambm chamados de variveis T o conjunto de smbolos terminais, tal que V T = P o conjunto de regras de produo S o elemento de V denominado smbolo inicial As regras de produo so escritas na forma , onde e so compostos de no-terminais e terminais; alm disso, possui pelo menos um no-terminal. Convenes. As seguintes convenes de notao so adotadas: Cada no-terminal representado por apenas uma letra maiscula do alfabeto portugus {A, B, C, D, ...} Cada terminal representado por apenas uma letra minscula ou dgito {0,1,2,3,4,5,6,7,8,9, a,b,c,d,...} Utiliza-se a prpria letra maiscula S para ser o smbolo inicial da gramtica. Exemplo 1: Seja G a gramtica: S AB A aA | a Bb . Neste exemplo a gramtica possui 4 regras: S AB, A aA, A a e B b

Prof. Rmulo Silva

O smbolo | pode ser usado quando h mais de uma regra para um mesmo no terminal, como o no-terminal A do exemplo. O conjunto de no-terminais para a gramtica G V= {S,A,B}. O conjunto de terminais T = {a,b} . O conjunto de regras P = { S AB, A aA, A a, B b }. A seta () indica que o no-terminal sua esquerda pode ser substitudo pelo smbolo ou smbolos que esto sua direita. Assim: o no-terminal S pode ser substitudo por AB o no-terminal A pode ser substitudo por aA ou por a o no-terminal B pode ser substitudo por b. As palavras ou cadeias vlidas na linguagem so formadas a partir do smbolo inicial, substituindo-o por alguma de suas regras e os no-terminais desta sucessivamente, at que se obtenham apenas terminais. Assim, utilizando a gramtica definida anteriormente pode-se obter a palavra aaab efetuando-se as seguintes substituies: (1) S (2) (3) (4) (5) AB aAB aaAB aaaB aaab

Na linha (1) foi usada a nica regra disponvel para o smbolo S. Na linha (2) foi usada a regra A aA. Na linha (3) foi usada novamente a regra A aA. Na linha (4) foi usada a regra A a. Na linha (5) foi usada a regra B b. Observe que a notao usada no processo de substituio, indica pela seta , diferente da notao usada na prpria gramtica, indicada pela seta . Isto permite diferenciar quando se est gerando uma palavra ou descrevendo uma regra da gramtica. Derivao. O processo de substituir um no-terminal por alguma de suas regras chamado de derivao. rvore de derivao. A gerao de uma palavra pelas sucessivas derivaes pode ser representada atravs de uma rvore, chamada rvore de derivao, onde a raiz o smbolo inicial S. A Figura 1 apresenta a rvore de derivao para a palavra aaab do exemplo anterior. S A a a A A a Figura 1 B b

Prof. Rmulo Silva

Efetuando-se todas as possveis derivaes a partir do smbolo inicial S, obtm-se todas as palavras que compem a linguagem formal descrita pela gramtica, podendo ser infinito o nmero de palavras. No exemplo da gramtica anterior possvel gerar o seguinte conjunto infinito de palavras: L = {ab, aab, aaab, aaaab, aaaaab, ...}. Observando mais atentamente as palavras geradas fcil notar que todas seguem um padro: so formadas por uma seqncia de um ou mais as e terminadas exatamente com um b. Assim pode-se dizer a gramtica representa ou gera a linguagem L = { w | w formada por uma seqncia de um ou mais as seguido de exatamente um b sobre *}, onde = {a,b}. Linguagens de Programao. A gramtica de uma linguagem de programao representa todos os programas possveis de serem escritos nela, geralmente um nmero potencialmente infinito de programas. Assim, o primeiro trabalho do(s) criador(es) de uma linguagem de programao definir sua gramtica. Notao. Usa-se L(G) para denotar a linguagem gerada pela gramtica G. Gramticas equivalentes. Uma mesma linguagem pode ser gerada por diferentes gramticas. Por exemplo, a gramtica: S Ab A aA | a gera a mesma linguagem descrita pela gramtica vista anteriormente. Assim, quando duas gramticas geram a mesma linguagem, elas so ditas gramticas equivalentes. Formalmente: G1 equivalente a G2 se e somente se L(G1) = L(G2). No estudo das linguagens formais, as gramticas so classificadas de acordo com as restries que se impem sobre suas regras de produo. Assim, as linguagens formais podem ser classificadas em: Linguagens Regulares (Tipo 3) - LR Linguagens Livres de Contexto (Tipo 2) - LLC Linguagens Sensveis ao Contexto (Tipo 1) - LSC Linguagens Recursivamente Enumerveis (Tipo 0) - LRE A Figura 2 mostra a relao entre os tipos de linguagens. LR LLC LSC LRE Figura 2 As linguagens regulares (LR) so aquelas onde se impem mais restries s regras de produo. 7

Prof. Rmulo Silva

Hierarquia de Chomsky. As linguagens livres de contexto (LLC) so menos restritivas que as linguagens regulares (LR). As linguagens sensveis ao contexto (LSC) so menos restritivas que linguagens livres de contexto (LLC) e assim por diante. A hierarquia assim gerada chamada de Hierarquia de Chomsky. Devido ao fato que um tipo de linguagem com mais restries um caso particular de um tipo de linguagem com menos restries, ento toda LR uma LLC. Toda LLC uma LSC, e toda LSC uma LRE. Estudaremos inicialmente apenas as linguagens regulares (LR). Gramtica Regular (GR). Uma gramtica G regular se todas suas produes so tais que podem ser colocada em alguma das seguintes formas: A a A aB A Isto , do lado esquerdo da regra sempre h somente um no-terminal. Do lado direito h um terminal sozinho (acompanhado no mximo de um no-terminal), ou h apenas a palavra vazia (). s vezes, inicialmente a gramtica no possui todas suas regras em alguma das formas segundo a definio de gramtica regular. No entanto, fazendo-se pequenas alteraes possvel obter uma gramtica equivalente onde todas as regras estejam de acordo com a definio de gramtica regular. Exemplo: seja G1 a gramtica a seguir: S AB A aA | a Bb G1 regular. Para ver isto, basta observar que ela equivalente a G2, definida por: S aA A aA | b Linguagem Regular (LR). Uma linguagem regular se ela pode ser descrita usando uma gramtica regular (GR).

4. Modelos de Mquinas
Dispositivo Reconhecedor. Uma outra maneira de definir uma linguagem atravs da utilizao de um dispositivo reconhecedor, que permite submeter uma palavra ou cadeia a um teste de aceitao capaz de determinar se tal palavra pertence ou no linguagem em questo. O dispositivo reconhecedor na verdade um modelo matemtico que descreve o funcionamento de uma mquina, onde as cadeias so submetidas para aceitao ou rejeio. 8

Prof. Rmulo Silva

Cada tipo de linguagem da Hierarquia de Chomsky possui um reconhecer distinto. Linguagem Linguagens Regulares (LR) Linguagens Livres de Contexto (LLC) Linguagens Sensveis ao Contexto (LSC) Linguagens Recursivamente Enumerveis (LRE) Reconhecedor Autmatos Finitos Autmatos com Pilha Mquina de Turing com limitada Mquina de Turing

memria

Inicialmente estudaremos os autmatos finitos, capazes de reconhecer linguagens regulares (LR).

5. Autmato Finito Determinstico (AFD)


Definio. Um Autmato Finito Determinstico (AFD) um modelo de mquina definido formalmente por uma quntupla M = ( , Q, , q0, F), onde: : alfabeto de smbolos de entrada Q: conjunto finito de estados possveis para M : funo transio ou funo programa definida em Q x Q q0: estado inicial de M, sendo q0 Q F: conjunto de estados finais, tal que F Q

a b

a b

fita de entrada

cabea de leitura q0 qn q1 q2 controle finito Figura 3 Um AFD pode ser representado esquematicamente conforme a Figura 3: os smbolos que compem a palavra a ser testada encontram-se escritos numa fita de entrada, dividida em clulas, onde cada smbolo ocupa exatamente uma clula. H um controle finito composto pelos estados possveis para o autmato, sendo que existe um marcador que indica o estado atual. Alm disso, h uma cabea de leitura que l um smbolo por vez da fita. Finito. O autmato dito finito porque o conjunto de estados possveis (Q) finito. Determinstico. O autmato determinstico quando dado o estado atual de M, ao ler um determinado smbolo na finita de entrada existe apenas um prximo estado possvel.

Prof. Rmulo Silva

Estado Inicial. O estado inicial q0 indica que ao ligarmos o AFD, o marcador automaticamente se posiciona no estado q0, antes de ler qualquer smbolo da fita de entrada. S pode existir um nico estado inicial. Aceitao. Uma palavra reconhecida (ou aceita) quando o AFD aps ler todos os smbolos contidos na fita de entrada, o marcador se encontrar em um estado final. Ao contrrio do estado inicial, podem existir vrios estados finais. Rejeio. Uma palavra rejeitada quando aps ler todos os smbolos da fita de entrada, o marcador no se encontrar em um estado final ou quando no existe uma transio definida para um smbolo a ser lido, estando o autmato num determinado estado. Mquina de Estados Finitos. Alguns autores denominam os AFDs de mquinas de estados finitos. Vejamos um exemplo de AFD: Seja M = (,Q, ,q0,F) tal que = {a,b}, Q = {q0, q1, q2}, F = {q2} e a funo transio (ou funo programa) definida segunda a tabela a seguir: q0 q1 q2 a q1 q1 --b --q2 ---

Interpretando a tabela: estando no estado q0 e lendo o smbolo a na fita de entrada, M muda para o estado q1. Tambm estando no estado q0 e lendo o smbolo b na fita de entra, M rejeita a palavra, pois no h transio definida esta situao. J estando no estado q1, e lendo o smbolo a, M permanece no estado q1. Quando M est no estado q1 e l um smbolo b, ele muda para o estado q2. E uma vez no estado q2, qualquer smbolo que seja lido, a palavra ser rejeitada, pois no h transies definidas a partir de q2. Grafo Orientado. Comumente representa-se a funo programa () utilizando-se um grafo orientado. A Figura 4 apresenta o grafo correspondente funo programa do AFD do exemplo anterior. a q0 a b

q1

q2 Figura 4

Os ns do grafo representam os estados possveis do AFD enquanto as arestas orientadas representam as transies. A origem de uma seta indica o estado atual. O smbolo a ser lido colocado sobre a seta.

10

Prof. Rmulo Silva

O destino da seta indica o prximo estado aps a leitura do smbolo. O estado inicial indicado atravs de uma seta sem origem e com destino no estado inicial. Os estados finais so indicados atravs de dois crculos concntricos. Observando o grafo do AFD temos os estados q0, q1 e q2, sendo q0 o estado inicial e q2 o estado final. O estado q1 pode ser traduzido como estado onde se l um ou mais as. O estado q2 pode ser expresso por: estado que indica a leitura de exatamente um b. Este AFD reconhece a linguagem L = { w | w formada por uma seqncia de um ou mais as seguido de exatamente um b sobre *}, onde = {a,b}. Portanto, equivalente gramtica vista anteriormente: S AB A aA | a Bb Teorema: Toda linguagem regular (LR) possui um AFD equivalente. Outro exemplo: seja L = { abncm | n 0 e m 0}. O AFD a seguir reconhece L. b a q0 q1 c c q2 Figura 5 M = (, Q, , q0, F) onde = {a, b, c}, Q = {q0, q1, q2}, est representada pelo grafo da Figura 5, q0 o estado inicial e F = {q1, q2}. Exemplos de palavras ou cadeias reconhecidas pelo AFD : a, ab, ab, abb, abbb, abc, abbc, abcc, ac, acc, accc, etc. Exemplos de cadeias no reconhecidas: b, c, ba, acb, aa, etc.

6. Transformao de AFD em Gramtica Regular (GR)


possvel escrever uma gramtica regular para todo AFD. Para tal basta seguir o algoritmo a seguir: a cada estado associado um no-terminal da gramtica, sendo o estado inicial q0 associado ao smbolo inicial (S) para cada transio de estado representada no grafo cria-se uma regra de produo na gramtica, tal que o estado de origem torna-se o no-terminal esquerda da regra e o estado destino torna-se um no-terminal do lado direita da regra aps o terminal lido na transio. cria-se uma regra para cada no-terminal associado a um estado final onde o lado direito da regra formado apenas pela palavra vazia ().

11

Prof. Rmulo Silva

Como exemplo considere o AFD da Figura 5. Fazendo-se q0 = S, q1 = A e q2 = B, a gramtica equivalente ao AFD : S aA A bA | cB | B cB |

7. Transformao de Gramtica Regular (GR) em AFD


O algoritmo a seguir mostra como encontrar um AFD equivalente a uma dada gramtica regular. Todas as regras da gramtica devem ser do tipo A aB (no-terminal levando a um terminal seguido de um nico no-terminal) ou A a (no-terminhal levando a um terminal sozinho) ou A (no-terminal levando palavra vazia). Para cada no-terminal crie um estado para o AFD, sendo que o smbolo inicial seja o estado inicial ( S = q0 ). Para cada regra do tipo A aB crie uma transio que parta do estado A com destino ao estado B atravs da leitura do terminal a. Para cada regra do tipo A a crie uma transio que parta do estado A com destino a um estado Ax, atravs da leitura do terminal a. Alm disso, marque o estado como final Para cada regra do tipo A , faa do estado associado ao no-terminal A um estado final. A Figura 6 mostra o AFD equivalente gramtica regular a seguir: S aA | bB A aA | bB | c | B bB | b a a b

A S c A1 b

Figura 6

12

Prof. Rmulo Silva

8. Expresses Regulares (ER)


As linguagens regulares podem ser representadas usando uma notao denominada expresso regular. Uma expresso regular utiliza apenas smbolos terminais e alguns caracteres especiais (metacaracteres), sendo que estes tm a funo de especificar a quantidade de vezes que um terminal ou grupo de smbolos terminais se repetem dentro da formao de uma palavra pertencente linguagem. Definio. A definio formal de uma expresso regular pode ser feita recursivamente da seguinte maneira: Se x um terminal, x expresso regular. Se r e s so expresses regulares, ento r+s expresso regular. O sinal + indica que tanto r ou s formam palavras vlidas Se r e s so expresses regulares, ento rs expresso regular, onde as palavras so formadas pela concatenao de r e s. Se r expresso regular, r* denota a expresso regular onde r repetida zero ou mais vezes Se r expresso regular, r+ denota a expresso regular onde r repetida uma ou mais vezes. Portanto r+ = rr* Utilizam-se parntesis para agrupar smbolos que se repetem conjuntamente. Exemplos: 001(0+1) denota L = {0010, 0011} 01(10+11) denota L = { 0110, 0111} (0 + 01)1 denota L = { 01, 011} ab*a denota L = {aa, aba, abba, abbba, ...}, isto , L = { w | w inicia com um a seguido de zero ou mais bs e termina com um a} a(bc)*a denota L = {aa, abca, abcbca, abcbcbca, ...}, isto , L = { w | w inicia-se com um a seguido de zero ou mais seqncias de bc e termina com a} ab+a denota L = {aba, abba, abbba, ...}, isto , L = { w | w inicia-se com um a seguido de um ou mais bs e termina com a} (ab + bc)a denota L = {aba, bca} (a+b)* denota L = {a,b}*, isto todas as palavras possveis de serem formadas a partir do smbolos a e b, inclusive a palavra vazia. (a+b)*c(a+b)* denota L = { w | w possui exatamente um c sobre = {a,b,c}* }

Unix. O comando grep do sistema operacional Unix permite o uso de expresses regulares para busca de padres. Exemplos: grep Mar* arq: listar todas as linhas do arquivo arq que contm palavras contendo a string Mar. grep Maria arq* : listar todas as linhas de arquivos cujo nome comece com arq e que contenha a string Maria. grep i maria arq : listar todas as linhas do arquivo arq que contenham a string maria (ignorando maisculas e minsculas). grep v maria arq : listar todas as linhas do arquivo arq que no contenham a string maria. 13

Prof. Rmulo Silva

grep [a-z] arq: listar todas as linhas do arquivo arq que comecem com as letras minsculas de a a z.

9. Autmatos Finitos No-determinsticos (AFND)


Definio. Um autmato finito no-determinstico (AFND) similar a um AFD, porm existe pelo menos um estado tal que ao ler um mesmo smbolo h mais de uma possibilidade de estado destino. c q2 Figura 7 No autmato da Figura 7, existem duas transies de estado possveis ao ler o smbolo a estando o autmato no estado q0. Aceitao. Uma cadeia aceita por um AFND se testando-se todas as transies possveis medida que se l a cadeia, o AFND pra em um estado final aps ler toda a cadeia para algum caminho das transies. Assim, o no-determinismo do prximo estado pode ser interpretado como um teste de todas as possibilidades. Exemplos de cadeias aceitas pelo AFND da figura 7: a, ac, ab, abcc, ... Rejeio. Uma cadeia rejeita por um AFND se nenhum caminho de transies leva o autmato a um estado final aps ler toda a cadeia. Exemplos de cadeias rejeitadas pelo AFND da figura 7: b, bc, abb, aca, ...

a q0 q1 a

10. Autmatos Finitos com Transies (AF)


Definio. Um autmato finito com transies (AF) um AFND onde existem transies feitas a partir da palavra vazia. Uma transio a partir da palavra vazia indica que o autmato pode alterar seu estado sem ler nenhum smbolo da fita. AFND. A existncia de apenas uma transio usando a palavra vazia suficiente para que o autmato seja considerado no-derterminstico (AFND), pois existe uma situao o autmato pode efetuar uma transio sem ler qualquer smbolo da fita. Aceitao e Rejeio. A aceitao e rejeio de cadeias so feitas do mesmo modo que em AFND.

14

Prof. Rmulo Silva

q0 q1 a

c q2

Figura 8 No AF da Figura 8, o autmato pode fazer a transio para o estado q1 a partir do estado q0 sem ler qualquer smbolo na fita. Assim, as cadeias: b, bc, bcc so aceitas pelo autmato enquanto que bb, aac, acb so rejeitadas. Teorema. Para todo AFND, incluindo os AF, possvel construir um AFD equivalente. Equivalncia. Na prtica, o teorema anterior estabelece que a facilidade de nodeterminismo dos AFNDs no representa um aumento de poder computacional em relao aos AFDs. Ou seja, a classe de linguagens reconhecida por AFNDs e AFDs a mesma.

11. Transformao de Expresses Regulares em AF


Existe um algoritmo simples para converso de expresses regulares em AF. Segue sua descrio: Se uma expresso regular r constituda por um nico smbolo x, ento r pode ser representada por um autmato de apenas 2 (dois) estados, tal que existe uma transio do primeiro para o segundo estado lendo o smbolo x. Se uma expresso regular r da forma r = r1 + r2, isto , as palavras vlidas so palavras da linguagem descrita por r1 ou da linguagem descrita por r2, ento r pode ser representada pela unio dos autmatos M1 e M2, que reconhecem r1 e r2 respectivamente, de maneira que M1 e M2 formem caminhos exclusivos entre si utilizando transies . Se uma expresso regular r da forma r = r1r2, isto , as palavras vlidas so obtidas da concatenao das palavras da linguagem descrita por r1 com palavras da linguagem descrita por r2, ento r pode ser representada pelo seqenciamento dos autmatos M1 e M2, que reconhecem r1 e r2 respectivamente, de maneira que M2 segue M1 utilizando uma transio . Apenas o estado que no possui transies com origem nele um estado final.

Inicialmente procura-se desenhar os autmatos dos smbolos isoladamente, que so de fcil representao. Os autmatos obtidos so combinados segundo as regras anteriores at se obter o autmato que representa a expresso regular completa.

15

Prof. Rmulo Silva

x r=x

q0r1

qfr1

r = r1 + r2

q0r

qfr2

q0r1

qfr1

q0r

qfr2

r = r1r2

q0r1

qfr1

r = r1*

Figura 9 A Figura 9 mostra esquematicamente como pode ser feita a construo de AF a partir de uma expresso regular. importante observar que os estados que seriam finais em M1 e M2 para as expresses regulares r1 e r2, no o so quando se faz o autmato que representa r1+r2. E o mesmo ocorre com M1 em r1r2 e em r1*. Exemplo: seja a expresso regular (a + ab)(bc)*. * Observe que ela a concatenao das subexpresses (a +ab) e (bc) . Por sua vez, (a + ab) indica que apenas as palavras a e ab so vlidas dentro da subepresso. J * (bc) a concatenao dos smbolos b e c, repetidos em grupo, zero ou mais vezes. Assim, primeiro montamos o autmato para a primeira subexpresso (a + ab) que ser: a

Figura 10 16

Para montar o autmato para a segunda subexpresso (bc)*, primeiro montamos o autmato para bc somente, e sobre o seu resultado aplicamos a regra que permite repeti-lo zero ou mais vezes, obtendo assim:

Prof. Rmulo Silva

Figura 11

Agora, uma vez obtidos os autmatos para (a +ab) e (bc)* basta coloc-los em seqncia usando uma transio para que representem a concatenao das duas subexpresses, e definir o estado que no possui transies a partir dele como estado final, representando assim o autmato para (a + ab)(bc)*, conforme a Figura 12. a

Figura 12

12. Transformao de AFDs em expresses regulares


Conforme visto anteriormente, todo AFD possui um expresso regular equivalente. Segue um algoritmo para converter um AFD em expresso regular. 1 passo: dado autmato M, constri-se M equivalente a M, tal que o estado inicial de M liga-se ao estado inicial de M por transio , e todos os estados finais de M ligam-se ao nico estado final de M por transio . Alm disso, os estados finais de M no so finais em M, conforme o esquema da Figura 13.

17

Prof. Rmulo Silva

M: M qf1 q0

. . .
qfn

q0

. . .

qf

Figura 13

2 passo: elimina-se gradualmente os estados intermedirios entre o estado inicial e final de M construindo expresses regulares equivalentes s transies do estado eliminado.

Exemplo: Seja M o autmato da Figura 14. Inicialmente constri-se o autmato M, mostrado na Figura 15. c M a b a c q0 q1 b q3 Figura 14 q2

c M a a c q0 b q2

qf

q0

q1 b q3

Figura 15 18

Prof. Rmulo Silva

Observe que o autmato da Figura 15 equivalente ao autmato da Figura 14, pois apenas foram acrescentados dois estados (um novo estado inicial e um final) ligados aos respectivos estados inicial e finais usando transies . Agora procedemos eliminao dos estados intermedirios entre q0 e qf. Assim, eliminado o estado q0 obtm-se o autmato da Figura 16.

a c q0 a*b q1 b

q2

qf

q3 Figura 16

A expresso regular colocada na transio de q0 para q1 representa que saindo de q0 at chegar em q1 foram lidos zero ou mais as e necessariamente um b. Isto corresponde exatamente ao estado eliminado (q0). Em seguida, eliminando-se o estado q1, obtm-se o autmato da Figura 17. c a*ba*c q2

qf

q0

a ba b
* *

q3 Figura 17

Observe que o estado q1 possui transio para dois estados distintos (q2 e q3). Portanto ao efetuar sua eliminao necessrio representar como que saindo de q0 * * se chega a q2 (representado por a ba c), e como se chega a q3 (representado por * * a ba b). As Figuras 18 e 19 representam a eliminao dos estados q2 e q3, respectivamente.

19

Prof. Rmulo Silva

a*ba*cc*

q0

qf

a ba b
* *

q3
Figura 18

q0

a ba cc + a ba b

qf
Figura 19

A expresso regular a*ba*cc* + a*ba*b equivalente ao autmato original (M). Alm disso, sabendo que a subexpresso cc* equivalente a c+ e que a*ba* uma subexpresso comum funcionando como um prefixo para cc* e b, pode-se reescrever a expresso da seguinte forma: a*ba*(c+ + b). Ordem de Eliminao e Equivalncia. importante registrar que a ordem de eliminao dos estados pode resultar em expresses regulares diferentes, porm equivalentes.

13. Minimizao de autmatos


Definio. Um AFD M para a linguagem regular L mnimo se qualquer outro AFD M para L, tem-se |Q| |Q|. Portanto, um autmato mnimo se ele possui o menor nmero de estados possvel reconhecendo a linguagem em questo. Algoritmo. Dado um autmato qualquer, ele pode ser minimizado atravs do seguinte algoritmo de minimizao: 1 passo: transformar o AFN ou AF em AFD 2 passo: eliminar estados inteis (aqueles a partir dos quais no possvel atingir um estado final) 3 passo: eliminar estados inacessveis e suas transies (aqueles que no podem ser atingidos a partir do estado inicial) 4 passo: particionar inicialmente os estados em 2 subconjuntos: estados finais (F) e estados no-finais (Q F) 5 passo: calcular classes de equivalncia (blocos) recursivamente a partir dos subconjuntos iniciais tal que: p Ei e a , ( p, a ) E j onde Ei e E j so classes de equivalncia.

20

Prof. Rmulo Silva

Exemplo: seja o autmato da Figura 20. Esse autmato j determinstico. Portanto inicia-se eliminando estados inteis. O estado q5 um estado intil porque no estado final e no possui transies a partir dele, logo pode ser eliminado juntamente com suas transies, resultando no AFD apresentado na Figura 21.

q0
b a

q1
b

q2
a b b

q3
b

q4

q5
a

a Figura 20

q0
b a

q1
b

q2
a

q3

q4

a Figura 21 O AFD obtido no possui estados inacessveis. Ento passa-se construo das classes de equivalncia, iniciando com os conjunto Q F = {q0,q1} e F = {q2,q3,q4}. possvel observar que (q 0 , a ) = q1 e (q1 , a ) = q 0 . Isto , lendo o smbolo a a partir dos

21

Prof. Rmulo Silva

estados que formam o conjunto Q F, o AFD permanece em um estado do prprio conjunto Q F. J a leitura do smbolo b a partir dos estados do conjunto Q F leva a estados do conjunto F. Alm disso, a leitura do smbolo a a partir de estados do conjunto F, o AFD permanece no conjunto F. Assim, podemos agrupar os estados q0 e q1 em nico estado (q01) e tambm os estados q2, q3 e q4 em um nico estado (q234), gerando o AFD apresentado na Figura 22. a b

q01

q234

Figura 22

14. Propriedades das Linguagens Regulares (LR)


Algumas observaes sobre linguagens regulares (LR), autmatos determinsticos (AFD), gramticas regulares (GR) e expresses regulares (ER): Toda LR possui GR equivalente Toda LR possui AFD que a reconhece. Toda ER possui AFD equivalente Toda GR possui AFD equivalente finitos

Alm das observaes anteriores, as linguagens regulares possuem as seguintes propriedades: Concatenao: a concatenao de LRs resulta em LR Unio: a unio de LRs resulta em LR Fecho: o fecho (repetio de zero ou mais vezes) de LR resulta em LR Interseco: a interseco entre LRs resulta em LR Complemento: o complemento (* - L) de uma LR resulta em LR. Fechamento. Pelas propriedades anteriores, diz-se que a classe das linguagens regulares (LR) fechada quanto s operaes de concatenao, unio, fecho, interseco e complemento. Pois, o resultado dessas operaes recai dentro da prpria classe de linguagens regulares (LR). As operaes de concatenao, unio e fecho podem ser melhor visualizadas quando as linguagens regulares so representadas atravs de expresses regulares. Assim, sejam r e s expresses regulares para as linguagens L1 e L2. rs representa a concatenao de L1 e L2. sr representa a concatenao de L2 e L1. r+s representa a unio de L1 e L2. r* representa o fecho de L1

22

Prof. Rmulo Silva

15. Limitaes de AFDs: exemplos de linguagens no regulares


Conforme visto anteriormente, toda LR possui um AFD que a reconhea. Portanto, uma forma de saber se uma linguagem regular, construindo um AFD que a reconhea. Problema. Inversamente, se no for possvel a construo do AFD, ento a linguagem no regular. Porm, como provar a impossibilidade de construir um AFD para uma dada linguagem? A seguir apresentamos o Lema do Bombeamento para LRs, usado para responder pergunta anterior. Lema do Bombeamento para LRs. Se L uma linguagem regular, logo existe AFD para L com n estados, sendo n finito. Se uma palavra w L tm comprimento maior ou igual a n, isto , |w| n, ento o AFD assume algum estado mais de uma vez e portanto existe um ciclo no autmato. w pode ser dividida em w = uvz tal que |uv| n e |v| 1, onde v a parte de w reconhecida pelo ciclo. Portanto uviz L para i 0. Exemplo de linguagem no regular: L = {anbn | n 0}. Demonstrao por absurdo: suponha que L seja regular, ento pelo Lema do Bombeamento para LRs, w = anbn pode ser reescrita como w = uvz onde |uv| n e |v| 1. Alm disso, uviz L para i 0. Tem-se um absurdo, pois |uv| n, uv composto s por as. Por exemplo, uv2z L, pois no possui o mesmo nmero de as e bs. Logo L no linguagem regular. Outros exemplos de linguagens no regulares: L = {anbm | n m} L = {anb2n | n 1} L = {an | n primo} Dependncia. Observando os exemplos de linguagens no regulares apresentados, possvel notar que a quantidade de um determinado smbolo depende da quantidade de outro smbolo, ou ainda depende de um algoritmo que no pode ser representado usando um nmero finito de estados. Memria. Os AFDs no possuem memria. Isto , so incapazes de armazenar a quantidade lida de um determinado smbolo. Nisto, reside sua principal limitao para n n reconhecer linguagens como L = {a b | n 0} e L = {anbm | n m}.

16. Bibliografia
LEWIS, Harry R. & PAPADIMITRION, Christos H. Elementos de Teoria da Computao. 2.ed. Porto Alegre, Bookman, 2000. MENEZES, Paulo Blauth. Linguagens formais e autmatos. 2.ed. Porto Alegre, Sagra Luzzatto, 1998. 165p.

23

Prof. Rmulo Silva

HOPCROFT, John E.; ULLMAN, Jeffrey D.; MOTWANI, Rajeev. Introduo Teoria de Autmatos, Linguagens e Computao; Rio de Janeiro; Ed. Campus, 2002. DIVERIO, T. A.; MENEZES, P. B. Teoria da Computao: Mquinas Universais e Computabilidade, Srie Livros Didticos Nmero 5, Instituto de Informtica, da UFRGS, Editora Sagra Luzzatto, 1a edio, 1999. EUGNIO, Cristiana Munhoz; PALERMO, Lilliam. Unix Avanado: Programao CShell. Disponvel em http://www.ccuec.unicamp.br , acessado em 20/03/2006.

24

Вам также может понравиться