Você está na página 1de 8

Captulo 01 Linguagens Regulares

A Teoria da Computao inicia com uma pergunta: O que um computador ? Talvez seja uma pergunta tola, a partir do momento que minha filha de quatro anos sabe que esta coisa na qual eu teclo um computador. Mas, esses computadores reais so um tanto complicados demais para que nos permitam fazer diretamente uma teoria matemtica manusevel. Em vez disso, ns usamos um computador idealizado chamado de modelo computacional. Como em qualquer modelo na cincia, um modelo computacional poder ser acurado em algumas maneiras, mas, talvez no seja em outras. Assim, ns utilizaremos diferentes modelos computacionais, dependendo do aspecto que ns queremos focalizar. Ns comearemos com o modelo mais simples, chamado de mquina de estado finito ou autmato finito. 1.1 Autmato Finito Autmatos finitos so bons modelos para computadores com uma quantidade de memria extremamente limitada. O que um computador pode fazer com uma memria to pequena ? Muitas coisas teis! Na verdade, ns interagimos com esses computadores todo o tempo, a partir do momento que eles fazem parte de vrios dispositivos eletromecnicos. Como mostrado nas figuras seguintes, o controlador de uma porta automtica um exemplo de tal dispositivo. Constantemente encontradas nas entradas e sadas de supermercados, portas automticas se abrem quando sentem que uma pessoa est se aproximando. Uma porta automtica possui um tapete na frente para detectar a presena de uma pessoa que est na eminncia de atravessar a porta. Um outro tapete est localizado na retaguarda da porta para que o controlador possa segurar a porta aberta o bastante para a pessoa passar, como tambm para que a porta quando abrir no bata em algum que esteja em p atrs dela.

Figura 1.1
Vista area de uma porta automtica.

O controlador pode estar em dois estados: "ABERTO" ou "FECHADO", representando as condies correspondentes da porta. Como mostrado nas figuras seguintes, h quatro possveis condies de entrada: "FRENTE" (significando que uma pessoa est em p sobre o tapete em frente porta), "RETAGUARDA" (significando que uma pessoa est em p sobre o tapete na sada da porta), "AMBOS" (significando que pessoas esto sobre os dois tapetes), e "NENHUM" (significando que ningum est sobre algum dos tapetes).

Figura 1.2
Diagrama que representa o controlador para uma porta automtica.

Figura 1.3
Tabela de transio para um controlador de uma porta automtica.

O controlador move-se de estado para estado, dependendo da entrada que ele recebe. Quando est no estado FECHADO e recebe uma entrada NENHUM ou RETAGUARDA, ele permanece no estado FECHADO. Alm disso, se a entrada AMBOS recebida, ele permanece FECHADO, porque h o risco de derrubar algum no tapete da retaguarda se a porta for aberta. Mas, se a entrada FRENTE for recebida, o controlador move-se para o estado ABERTO. No estado ABERTO, se a entrada FRENTE, RETAGUARDA, ou AMBOS recebida, ele permanece em ABERTO. Se a entrada NENHUM recebida, ele retorna para FECHADO. Por exemplo, um controlador poder comear no estado FECHADO e receber a seguinte srie de sinais de entrada: FRENTE, RETAGUARDA, NENHUM, FRENTE, AMBOS, NENHUM, RETAGUARDA, NENHUM. Ento, ele passaria pela srie de estados: FECHADO (comeando), ABERTO, ABERTO, FECHADO, ABERTO, ABERTO, FECHADO, FECHADO, FECHADO. Analisando um controlador de uma porta automtica como um autmato finito til, porque isto sugere formas padronizadas de representao como nas figuras 1.2 e 1.3. Esse controlador um computador que possui apenas um bit de memria, capaz de memorizar em qual dos dois estados o controlador est. Outros dispositivos comuns possuem controladores com memrias um tanto maiores. Num controlador de elevador, um estado poder representar o andar onde ele est e as entradas poderiam ser os sinais recebidos dos botes. Esse computador poder precisar de muitos bits para manter trao dessa informao. Controladores para muitos eletrodomsticos como lavadores de loua e termmetros eletrnicos, como tambm partes de relgios digitais e calculadores, so exemplos adicionais de computadores com memrias limitadas. O projeto desses dispositivos requer que se mantenha a metodologia e terminologia de autmato finito em mente. Autmatos finitos e seus complementos probabilsticos "As Cadeias de Markov" so ferramentas teis quando ns estamos tentando reconhecer padres em dados. Esses componentes so usados no processamento de vozes e no reconhecimento tico de caracteres. As cadeias de Markov foram tambm utilizadas

para modelar e predizer a mudana nos preos em mercados financeiros. Ns vamos agora dar uma olhada de forma detalhada em autmatos finitos a partir de uma perspectiva matemtica. Ns vamos desenvolver uma definio precisa de um autmato finito, a terminologia para descrever e manipular autmatos finitos e resultados tericos que descrevem seu poder e limitao. Alm de dar-nos um entendimento mais claro sobre o que so autmatos finitos e o que eles podem e no podem fazer, o desenvolvimento terico permite-nos praticar e ficar mais vontade com as definies matemticas, teoremas e provas. Faremos o incio da descrio da teoria matemtica de autmato finito de uma forma abstrata, sem nenhuma referncia a qualquer aplicao em particular. A figura seguinte, mostra um autmato finito chamado de M1.

Figura 1.4
Um autmato finito M1 que possui trs estados.

A figura 1.4 chamada de diagrama de estados de M1. Este possui trs estados, chamados de q1, q2 e q3. O estado inicial, q1, indicado pelo arco que o aponta vindo de nenhum lugar. O estado final, q2, aquele que possui um duplo crculo. Os arcos que vo de um estado para o outro so chamados de transies. Quando este autmato recebe uma cadeia de entrada como 1101, ele processa aquela cadeia e produz uma sada. A sada pode ser reconhece ou no reconhece. Por enquanto, ns vamos considerar apenas este tipo sim/no de sada, para manter as coisas simples. O processamento inicia-se no estado inicial de M1. O autmato recebe os smbolos da cadeia de entrada um por um da esquerda para a direita. Depois de ler cada smbolo, M1 move-se de um estado para outro, seguindo o arco rotulado por aquele smbolo. Quando l o ltimo smbolo, M1 produz sua sada. A sada reconhece se M1 est agora no estado final, ou no reconhece, caso contrrio. Por exemplo, quando ns apresentamos a cadeia de entrada 1101 para a mquina M1 na figura 1.4, o processamento procede como segue: 1. 2. 3. 4. 5. 6. incio no estado q1; l 1, segue transio de q1 para q2; l 1, segue transio de q2 para q2; l 0, segue transio de q2 para q3; l 1, segue transio de q3 para q2; reconhece porque M1 est no estado final q2 no final da entrada.

Experimentando uma variedade de cadeias de entrada com esta mquina, revela-se que ela aceita as cadeias 1, 01, 11, 0101010101. De fato, M1 aceita qualquer cadeia que termina com 1, uma vez que ela vai para o seu estado final q2 toda vez que l o smbolo 1. Alm disso, esta aceita as cadeias 100, 0100, 110000, e 0101000000, e qualquer cadeia que termina com um nmero par de zeros que seguem o ltimo 1. M1 rejeita outras cadeias, como 0, 10, 101000. Voc consegue descrever a linguagem que

consiste de todas as cadeias que M1 reconhece ? Ns faremos isso em breve. Definio Formal de um Autmato Finito Na sesso anterior, ns usamos diagramas de estados para introduzir autmatos finitos. Agora, ns definimos autmatos finitos formalmente. Apesar de diagramas de estados serem mais fceis de compreender intuitivamente, ns tambm precisamos da definio formal, por dois motivos especficos. Primeiro, uma definio formal precisa. Ela resolve quaisquer incertezas sobre o que permitido em um autmato finito. Se voc estava incerto(a) quanto ao fato de um autmato finito poder possuir zero estados finais ou se um autmato deve possuir exatamente uma transio na sada de cada estado para cada smbolo possvel de entrada, voc poderia consultar a definio formal para verificar se a resposta afirmativa para os dois casos. Em segundo lugar, uma definio formal promove uma notao. Boas notaes ajudam voc a pensar e expressar seus pensamentos de forma clara. A linguagem de uma definio formal um tanto arcaica, possuindo alguma similaridade com a linguagem de um documento legal. Ambas devem ser precisas, e cada detalhe deve ser bem explicado. Um autmato finito possui diversas partes. Possui um conjunto de estados e regras para ir de um estado para o outro, dependendo do smbolo de entrada. Possui um alfabeto de entrada que indica os smbolos de entrada permitidos. Possui um estado inicial e um conjunto de estados finais (de reconhecimento). A definio formal diz que um autmato finito uma lista daqueles cinco objetos: conjunto de estados, alfabeto de entrada, regras de movimento, estado inicial, e estados de reconhecimento ou finais. Em linguagem matemtica, uma lista de cinco objetos chamada de 5-tupla. Portanto, ns definimos um autmato finito como sendo uma 5-tupla consistindo dessas cinco partes. Ns usamos algo chamado de funo de transio, freqentemente denotado por , para definir as regras de movimento. Se o autmato finito possui um arco do estado x para o estado y rotulado com o smbolo de entrada 1, isto significa que, se o autmato est no estado x quando ele l o smbolo 1, ento move-se para o estado y. Ns podemos indicar a mesma coisa com a funo de transio, dizendo que (x,1) = y. Esta notao um tipo de taquigrafia matemtica. Colocando tudo isso junto, ns chegamos descrio formal de autmato finito. Definio 1.1 Um autmato finito uma 5-tupla ( Q, , , q0, F ), onde 1. 2. 3. 4. 5. Q um conjunto finito e no-vazio chamado de estados, um conjunto finito e no-vazio chamado de alfabeto, : Q Q a funo de transio, q0 Q o estado inicial, e F Q o conjunto de estados finais.

Revise novamente o captulo 00, sobre funes, se voc estiver incerto sobre o significado de : Q Q. Estados finais so tambm algumas vezes chamados de estados de aceitao ou de reconhecimento. A descrio formal descreve precisamente o que ns queremos dizer acerca de um autmato finito. Por exemplo, retornando questo anterior de se permitido zero estados finais, voc pode ver que fazendo F o conjunto vazio , produzido zero

estados finais, o que permitido. Alm disso, a funo de transio especifica exatamente um prximo estado para cada combinao possvel de um estado e um smbolo de entrada. Isto responde nossa outra questo afirmativamente, mostrando que exatamente um arco de transio sai de cada estado para cada smbolo de entrada possvel. Ns podemos usar a notao da definio formal para descrever um autmato finito, atravs da especificao de cada uma das cinco partes listadas na definio 1.1. Por exemplo, vamos retornar ao autmato finito M1 descrito na Figura 1.4.

Figura 1.5
O autmato finito M1

onde

Ns podemos descrever M1 formalmente escrevendo M1 = ( Q, , , q1, F ), 1. Q = { q1, q2, q3 }, 2. = { 0,1 }, 3. descrito como

0 q1 q1 q2 q2 q3 q2 q3 q2 q2

4. q1 o estado inicial, e 5. F = { q2 }. Se A o conjunto de todas as cadeias que uma mquina M aceita, ns dizemos ento que A a linguagem da mquina M e escrevemos L(M) = A. Ns dizemos que M reconhece A ou que M aceita A. Devido ao fato que o termo aceitar tem diferentes significados, quando nos referimos mquinas aceitando cadeias e mquinas aceitando linguagens, ns preferimos o termo reconhece para linguagens, buscando evitar confuso. Uma mquina pode aceitar vrias cadeias, mas ela apenas reconhece uma nica linguagem. Se a mquina no aceita nenhuma cadeia, ela ainda reconhece uma linguagem, a linguagem vazia . Em nosso exemplo, seja A = {w|w contm pelo menos um 1 e um nmero par de 0s segue o ltimo 1} Ento L (M1) = A, ou equivalentemente, M1 reconhece A.

Exemplos de Autmatos Finitos


Exemplo 1.2

O que segue o diagrama de estados do autmato finito M2 .

Figura 1.6
Diagrama de estados do autmato finito M2 de dois estados

Na descrio formal M2 = ( {q1,q2}, {0,1}, , q1, {q2} ). A funo de transio 0 q1 q2 q1 q1 1 q2 q2

Lembre que o diagrama de estados de M2 e a descrio formal de M2 contm a mesma informao, apenas em formas diferentes. Voc sempre pode ir de um para o outro se necessrio. Uma boa maneira de comear a entender qualquer mquina de test-la em algum exemplo de cadeias de entrada. Quando voc fizer esses experimentos para ver como a mquina est funcionando, seu mtodo de funcionamento se torna aparente. Para a cadeia 1101, por exemplo, a mquina M2 comea no seu estado inicial q1 e segue para o estado q2 aps ter lido o primeiro 1, e ento para os estados q2, q1, e q2 depois de ter lido 1, 0, e 1, respectivamente. A cadeia aceita porque o estado q2 um estado final. Mas, a cadeia 110 finaliza M2 no estado q1, sendo ento, rejeitada. Depois de tentar mais alguns exemplos, voc ver que M2 aceita todas as cadeias que terminam em um 1. Portanto, L(M2) = { w | w termina em um 1 }. Exemplo 1.3 Considere o autmato finito M3.

Figura 1.7
Diagrama de estados do autmato finito M3 de dois estados.

A mquina M3 semelhante M2, exceto pela localizao do estado final. Como sempre, a mquina aceita todas as cadeias que a deixam em um estado final aps o trmino da leitura. Note que, devido ao fato que o estado inicial tambm um estado final, M3 aceita a cadeia vazia . Assim que uma mquina inicia a leitura de uma cadeia vazia, ela j est no final, ento, se o estado inicial um estado final, aceita. Alm da cadeia vazia, esta mquina aceita qualquer outra cadeia terminada por um 0. Neste caso, L(M3) = { w | w a cadeia vazia ou termina com um 0 }. Exemplo 1.4

A figura seguinte mostra uma mquina M4 de cinco estados.

Figura 1.8
Autmato finito M4.

M4 possui dois estados finais, q1 e r1 e opera sobre o alfabeto = { a,b }. Alguns experimentos mostram que ela aceita as cadeias a, b, aa, bb, e bab, mas, no aceita as cadeias ab, ba, ou bbba. Esta mquina inicia no estado s, e aps ler o primeiro smbolo da entrada, ela tanto pode ir para a esquerda, para os estados q, ou para a direita, para os estados r. Em qualquer um dos casos, ela nunca poder retornar para o estado inicial (em contraste aos exemplos anteriores) visto que no possui nenhum caminho para retornar de qualquer estado para o estado inicial. Se o primeiro smbolo na cadeia de entrada a, ento, a mquina vai para a esquerda e aceita quando a cadeia termina com um a. Similarmente, se o primeiro smbolo um b, a mquina vai para a direita, e aceita quando a cadeia termina em b. Portanto, M4 aceita todas as cadeias que iniciam e terminam com a, ou que iniciam e terminam com b. Em outras palavras, M4 aceita cadeias que iniciam e terminam com o mesmo smbolo. Exemplo 1.5 O diagrama seguinte mostra a mquina M5, a qual possui um alfabeto de entrada com quatro smbolos, = { <RESET>, 0, 1, 2 }. Ns tratamos RESET como um smbolo nico.

Figura 1.9
Autmato finito M5

M5 mantm uma contagem corrente da soma dos smbolos numricos de entrada que ela conta, mdulo 3. Toda vez que ela recebe o smbolo <RESET>, ela modifica a contagem a 0. Ela aceita a entrada se a soma for 0, mdulo 3, ou em outras palavras, se a soma um mltiplo de 3. Exemplo 1.6 Em alguns casos, descrever um autmato finito por um diagrama de estados no possvel. Isto poder acontecer quando o diagrama for grande demais para desenhar, ou se como no exemplo, a descrio depender de algum parmetro no

especificado. Nestes casos, ns partimos para uma descrio formal para especificar a mquina. Considere uma generalizao do Exemplo 1.5, usando o mesmo alfabeto de quatro smbolos. Para cada i 1, seja Ai a linguagem de todas as cadeias onde a soma dos nmeros um mltiplo de i , exceto que a soma modificada para 0 toda vez que o smbolo <RESET> aparece. Ns mostramos que cada Ai regular, dando um autmato finito Bi aceitando Ai. Ns ento descrevemos formalmente a mquina Bi, como segue : B i = ( Qi, , i, q0, {q0} ), onde Qi o conjunto de i estados { q0, q1, q2, . . . , qi-1 }, e ns projetamos a funo de transio i de forma que, para cada j , se Bi est em qj , a soma corrente j , mdulo i. Para cada qj temos: i ( qj, 0 ) = qj, i ( qj, 1 ) = qk onde k = j + 1 mdulo i , i ( qj, 2 ) = qk onde k = j + 2 mdulo i , e i ( qj, <RESET> ) = q0 .

Você também pode gostar