Você está na página 1de 86

AUTARQUIA EDUCACIONAL DO VALE DO SO FRANCISCO AEVSF FACULDADE DE CINCIAS APLICADAS E SOCIAIS DE PETROLINA FACAPE CINCIAS DA COMPUTAO

APOSTILA DE LINGUAGENS FORMAIS


VERSO 3.0

bel. lea. Roberto Tenorio Figueiredo

PETROLINA, 2009

APOSTILA DE LINGUAGENS FORMAIS

Prof. TENORIO

SUMRIO

PREFCIO ........................................................................................................................................ 4 INTRODUO ................................................................................................................................. 5 1. HISTRICO ....................................................................................................................... 5 2. 3. 4. 5. 6. CONCEITOS BSICOS .................................................................................................... 6 CADEIA (C) ....................................................................................................................... 6 LINGUAGENS (L) ............................................................................................................. 8 EXPRESSES REGULARES ......................................................................................... 10 EXERCCIOS ................................................................................................................... 11

AUTMATO FINITO .................................................................................................................... 12 1. CONCEITO ...................................................................................................................... 13 2. 3. 4. 5. 6. 7. CONVENES ................................................................................................................ 14 DETERMINISMO ............................................................................................................ 14 AUTMATO FINITO DETERMINSTICO ................................................................... 15 AUTMATO FINITO NO-DETERMINSTICO ......................................................... 21 EQUIVALNCIA DOS AUTMATOS FINITOS ......................................................... 22 LINGUAGENS NO-REGULARES .............................................................................. 26

GRAMTICAS ............................................................................................................................... 27 1. CONCEITO ...................................................................................................................... 27 2. 3. 4. 5. 6. CLASSES DE GRAMTICAS ........................................................................................ 27 GRAMTICAS COM ESTRUTURA DE FRASE .......................................................... 28 GRAMTICAS LIVRES-DE-CONTEXTO .................................................................... 30 GRAMTICAS REGULARES ........................................................................................ 38 GRAMTICAS SENSVEIS-AO-CONTEXTO ............................................................. 43

AUTMATOS A PILHA ............................................................................................................... 46 1. CONCEITO ...................................................................................................................... 46 2. 3. 4. 5. CONVENES ................................................................................................................ 47 DETERMINISMO ............................................................................................................ 48 CONSTRUO DOS AUTMATOS A PILHA ............................................................ 48
TRANSFORMAO DE GRAMTICAS LIVRES-DE-CONTEXTO EM AUTMATOS A PILHA .. 54

APOSTILA DE LINGUAGENS FORMAIS

Prof. TENORIO

MQUINAS DE TURING ............................................................................................................. 56 1. HISTRICO ..................................................................................................................... 56 2. 3. 4. 5. 6. 7. 8. 9. CONCEITO ...................................................................................................................... 57 CARACTERSTICAS DA MQUINA DE TURING PADRO ................................... 58 CONVENES ................................................................................................................ 58 TESE DE CHURCH-TURING ......................................................................................... 59 O PROBLEMA DA PARADA ......................................................................................... 60 CONSTRUO DA MQUINA DE TURING .............................................................. 61 VARIAES DA MQUINA DE TURING PADRO ................................................. 71 MQUINA DE TURING UNIVERSAL ......................................................................... 73

10. BINARIZAO DAS MQUINAS DE TURING ......................................................... 74 REFERNCIAS BIBLIOGRFICAS .......................................................................................... 76 ANEXOS........................................................................................................................................... 77 1. TABELA ASCII ............................................................................................................... 77 2. 3. 4. 5. OS MESTRES................................................................................................................... 79 ATIVIDADE SOBRE AUTMATOS FINITOS ............................................................ 81 ATIVIDADE SOBRE MQUINAS DE TURING .......................................................... 82 BINRIO REDUZIDO DA MQUINA DE TURING UNIVERSAL ........................... 85

APOSTILA DE LINGUAGENS FORMAIS

Prof. TENORIO

PREFCIO
Os textos existentes nesta apostila so de minha autoria e de vrios autores renomados na rea de linguagens formais, como Noam Chomsky, John Hopcroft, Benedito Acily, entre outros. Alguns exemplos e analogias foram adicionados aos textos originais para facilitar a compreenso do assunto. Este material no se prope a substituir a riqueza presente nos livros publicados pelos autores mencionados, mas sim, servir como apoio s aulas da disciplina de Linguagens Formais e Teoria da Computao do Curso de Cincia da Computao da Facape. Dada a grande quantidade de trechos extrados praticamente na ntegra de alguns livros, fica impraticvel referenciar todos eles. Em compensao, os livros citados na bibliografia, ao final desta apostila, constituem as fontes principais do texto que a partir daqui se inicia. Espero que realmente este grande resumo possa ser til para que os alunos da disciplina compreendam os aspectos mais importantes das Linguagens Formais e da Teoria da Computao.

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

INTRODUO
A teoria da computao um estudo terico do funcionamento interno de um computador. Visa permitir o surgimento de novas tecnologias e auxilia a repassar o conhecimento, tornando-o livre de ambigidades. As linguagens formais compem a Teoria da Computao e so modelos matemticos relacionados com as linguagens naturais, que possibilitam validar ou no uma determinada seqncia de informaes. A importncia dessa teoria na Cincia da Computao dupla: tanto apia diversos aspectos tericos da Cincia da Computao, como a decidibilidade, computabilidade, complexidade computacional, entre outros, como fundamenta diversas aplicaes computacionais tais como processamento de linguagens de programao, reconhecimento de padres, modelagem de sistemas, etc. 1. HISTRICO O homem sempre tentou explicar a natureza utilizando a matemtica. Na antiga Grcia, pode-se ver isso em desenhos de algoritmos feitos por Euclides, no sculo III a.C., muitos antes do termo algoritmo ser criado. Na antiga Babilnia, existem estudos sobre a complexidade de problemas e como reduzi-los, em problemas menores e mais fceis de serem resolvidos, porm a Teoria da Computao, como ns a conhecemos, teve incio nos primeiros anos do sculo XX, antes da inveno dos modernos computadores eletrnicos. Um marco inicial da Teoria da Computao o problema proposto por David Hilbert, o qual consistia em encontrar um procedimento para demonstrar se uma dada frmula no clculo de preposies de primeira ordem era vlida ou no. (Frmula do clculo de predicados no qual a quantificao restrita s variveis individuais). Em 1931, Kurt Gdel, em seu teorema da no completude, demonstrou que o problema da mecanizao do processo de prova de teoremas no tinha soluo. A classe de funes usada por Gdel foi classe das funes primitivas recursivas definidas anteriormente por Dedekind em 1888. Embora no tenha sido proposital, Gdel foi (aparentemente) o primeiro a identificar um formalismo para definir a noo de procedimento efetivo. Em 1936, Alonzo Church usou dois formalismos para mostrar que o problema de Hilbert no tem soluo: -calculus (Church, 1936) e funes recursivas (Kleene, 1936). Tambm em 1936, Alan Turing props um formalismo para a representao de procedimentos efetivos. Esse foi o primeiro trabalho a identificar programas escritos para uma mquina computacional automtica, como noes intuitivas de efetividade. Desde ento, muitos outros formalismos foram propostos, os quais possuem o mesmo poder computacional que as funes recursivas ou Clculo Lambda: Mquina de Turing (1936); Sistema Cannico de Post (1943); Algoritmo de Markov e a Linguagem Snobol (1954); Mquinas de Registradores (1963); RASP (Random Acess Stored Programs - 1964). Em resumo, os estudiosos estavam tentando descobrir quais problemas matemticos poderiam ser resolvidos por um mtodo simples, e quais no poderiam. O primeiro passo estava em definir o significado de um "mtodo simples" para resolver o problema. Em outras palavras, eles precisavam de um modelo formal de computao. Diversos modelos foram propostos e so alguns destes modelos que iremos estudar ao longo desta apostila.
5

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

2. CONCEITOS BSICOS Na computao, todos os dados que voc v na tela de seu monitor so gerados a partir da presena (1) ou ausncia (0) de energia nos circuitos lgicos. Essa energia convertida em unidades, que sero utilizadas pelo hardware para permitir a execuo de softwares. Tudo que pode ser projetado via hardware, pode ser projetado via software, utilizando-se apenas quatro comandos bsicos: a atribuio, a soma, a condio (if) e o deslocamento (jump), que altera a seqncia corrente de execuo dos comandos. Para facilitar a programao, essas unidades deveriam representar smbolos conhecidos, da vem o conceito de Caractere. Caractere: uma entidade abstrata bsica que no definida formalmente; Um exemplo de caracteres so as letras e os dgitos. Como existem infinitos caracteres (smbolos) no universo, foi necessrio limitar sua quantidade a fim de permitir seu uso nos computadores. Para isso, foram criadas tabelas de smbolos, dito vlidos, que poderiam ser utilizados. A tabela mais usada e conhecida chamada de tabela ASCII (American Standard Code for Information Interchange Cdigo Americano Padro para o Intercambio de Informaes), que contm 256 caracteres e associa um nmero seqencial a cada caractere que pode ser utilizado no computador (vlidos). Na tabela ASCII, os caracteres correspondentes a valores de 0 a 31 so cdigos de controle, de 32 a 127 so caracteres padres e de 128 a 255, podem variar de S.O. (Sistema Operacional) para S.O. A tabela ASCII completa pode ser conferida no final desta apostila. Para o computador, trabalhar com 256 caracteres perfeito, porm, nas atividades do dia-a-dia, no interessante para o ser humano trabalhar com essa quantidade, at porque o computador precisa reservar alguns caracteres para uso prprio, da vem o conceito de alfabeto. Alfabeto (): o conjunto finito de smbolos distintos e indivisveis de qualquer natureza. Na Teoria da Computao, podemos afirmar que alfabeto um subconjunto da tabela ASCII. Um alfabeto denotado pelo smbolo . Um exemplo clssico o alfabeto romano composto pelos smbolos que chamamos de letras {a, b, c, d, e,..., z}. Um alfabeto em particular, pertinente teoria dos conjuntos o Alfabeto Binrio {0,1}. Um conjunto vazio tambm considerado um alfabeto.

Exemplos: = {0, 1, 2, , 9}, = {a, b, , z}, = {0,1}, = {A, a, E, e, I, i, O, o, U, u}

3. CADEIA (C) Uma Cadeia, sobre um alfabeto, uma seqncia qualquer de smbolos que pertena a este alfabeto, ou seja, uma seqncia de zero ou mais smbolos do alfabeto justapostos. Uma Cadeia de Smbolos Finita usualmente denominada de Palavra. Uma cadeia denotada pelo smbolo C.

Ateno: Caso uma cadeia seja formada por algum smbolo que no faa parte do alfabeto corrente, dizemos que trata-se de uma cadeia invlida.

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

Exemplo 01: Exemplos de cadeia no alfabeto = {a, b, c}

C1 = aab

C2 = bacb

C3 = b

C4 = aaaccaab

C5 = ccaa

Ateno: Por exemplo, a cadeia C6 = acacadaa uma cadeia invlida, ou seja, no uma aceita no alfabeto do exemplo, por possuir um caractere que no existe no alfabeto da questo, no caso a letra d. 3.1. PROPRIEDADES DA CADEIA 3.1.1. Tamanho ou Comprimento: a quantidade de caracteres que compem uma cadeia sejam eles repetidos ou no. denotado por |x|. Exemplo 02: Exemplos (baseados no Exemplo 01) de tamanho de cadeia: | C1 | = 3 | C2 | = 4 | C3 | = 1 | C4 | = 8 | C5 | = 4 | C6 | =

Ateno: Caso se queira a quantidade de um determinado smbolo dentro a cadeia devemos nos referir a ocorrncia. No exemplo 02, a ocorrncia de a em C1 2 e em C4 5. 3.1.2. Concatenao: ocorre quando construmos uma nova cadeia a partir de duas ou mais cadeias, uma seguida da outra. denotado por //, ou simplesmente o smbolo pode ser omitido, ou seja, a // b = ab. Exemplo 03: Exemplos de concatenao de cadeias: C1 // C2 = aabbacb

C4 // C3 = aaaccaabb

C5 // C1 = ccaaaab

3.1.3. Associatividade: significa que no importar a seqncia com que a concatenao feita, ou seja: (C1 // C2 ) // C3 = C1 // (C2 // C3). Ateno: A cadeia no tem a propriedade Comutativa, ou seja, (C1 // C2) (C2 // C1) 3.1.4. Elemento Neutro: Tambm camada de Cadeia Vazia, ou simplesmente Vazio, a cadeia vlida formada pela ausncia de caracteres e denotado por . Neste caso temos que || = 0, e C1 // = // C1 = C1. Por default, o est presente em todos os alfabetos. Ateno: cuidado para no confundir a cadeia vazia, com uma cadeia invlida, com o conjunto vazio ou com a cadeia vlida, no vazia, que possui apenas o caractere espao (ASCII = 32). Ateno 2: alguns autores denotam a cadeia vazia com o smbolo . 3.1.5. Cadeia Reversa: Tambm chamada de Inversa, a inverso dos elementos da cadeia, onde o primeiro elemento passa a ser o ltimo, o segundo o penltimo e assim por diante at o ltimo se tornar o primeiro. Denotado por X. Exemplo 04: Exemplos de cadeias reversas:

C1 = baa C2 = bcab

C3 = b

C4 = baaccaaa

C5 = aacc
7

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

3.1.6. Fecho: o conjunto formado pelas cadeias geradas a partir da concatenao da cadeia com ela mesma n vezes, aonde n ir at o infinito. Tambm pode ser encontrado com o nome de Concatenao Sucessiva. Existem dois tipos de fecho, que veremos a seguir: 3.1.6.1. Fecho Positivo: a concatenao da cadeia n vezes, aonde n vai de 1 (um) at o infinito e denotado por x+. Exemplo 05: Exemplos de fechos positivos no alfabeto {a, b}: 1) 2) 3) 4) 5) 6) a+ = {a, aa, aaa, aaaa, aaaaa, aaaaaa, aaaaaaa, ...} b+ = {b, bb, bbb, bbbb, bbbbb, bbbbbb, ...} (ab)+ = {ab, abab, ababab, abababab, ababababab, ...} a+b+ = {ab, aab, aaab, aaaab, abb, abbb, abbbb, aabb, aabbb, aabbbb, aaabb, ...} a+b = {ab, aab, aaab, aaaab, aaaaab, aaaaaab, aaaaaaab, ...} a+ba+ = {aba, aaba, abaa, aabaa, aaaba, abaaa, aaabaa, aabaaa, aaabaaa, ...}

Ateno: No exemplo 05.3, a cadeia aba, no faz parte do fecho por que no compe a concatenao da cadeia inteira com ela mesma inteira; Ateno: No exemplo 05.6, o primeiro a totalmente independente do segundo a, cujos mesmos variam livremente um do outro. O b uma constante; 3.1.6.2. Fecho Estrela: tambm chamado de Estrela de Kleene, semelhante ao fecho positivo, porm permite a cadeia vazia dentro do conjunto formado. Exemplo 06: Exemplos de fechos estrela no alfabeto {a, b}: 1) 2) 3) 4) 5) 6) a* = {, a, aa, aaa, aaaa, aaaaa, aaaaaa, aaaaaaa, ...} b* = {, b, bb, bbb, bbbb, bbbbb, bbbbbb, ...} (ab)* = {, ab, abab, ababab, abababab, ababababab, ...} a*b* = {, a, b, aa, bb, ab, aab, aaab, aaaab, abb, abbb, abbbb, aabb, ...} a*b = {b, ab, aab, aaab, aaaab, aaaaab, aaaaaab, aaaaaaab, ...} a*ba* = {b, ab, ba, aba, aaba, abaa, aabaa, aaaba, abaaa, aaabaa, aabaaa, aaabaaa, ...}

4. LINGUAGENS (L) Uma linguagem, denotada por L, um meio de comunicao, formada por um conjunto de palavras e de regras gramaticais que permitem combinar as palavras em sentenas sintaticamente corretas. Uma linguagem dita formal quando pode ser representada atravs de um sistema com sustentao matemtica, ou seja, uma linguagem um conjunto de palavras qualquer, que possuem uma regra em comum, com elementos pertencentes a um alfabeto. Com este conceito, podemos afirmar que qualquer subconjunto de cadeias formadas a partir de um alfabeto uma linguagem, o prprio conjunto formado por todas as palavras do alfabeto tambm uma linguagem, alm de existir a linguagem vazia, composta apenas pela cadeia vazia (). Exemplo 07: Um exemplo de linguagem, dentro do alfabeto {a, b}, a linguagem formada por todas as palavras de tamanho igual a dois: L = {aa, ab, ba, bb}. Exemplo 08: Linguagem de todas as cadeias iniciadas em a, dentro do alfabeto {a, b}: L = {a, ab, aa, aba, abb, abbb, aaa, abbabab, aabba, ...}.
8

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

4.1. O PODER DAS LINGUAGENS: O poder de uma linguagem nada mais do que a quantidade de cadeias que a mesma possui. No exemplo 07, o poder da linguagem gerada 04 (quatro), j no caso do exemplo 8, esse poder tende ao infinito. 4.2. PROPRIEDADES DAS LINGUAGENS Como uma linguagem definida como sendo simplesmente um conjunto de palavras sobre smbolos de um alfabeto, todas as operaes sobre conjuntos podem ser aplicadas sobre linguagens. Em particular, podem-se aplicar sobre linguagens as operaes de unio, interseco, diferena e complemento (No). O significado destas operaes sobre linguagens bastante intuitivo. 4.2.1. Unio (U): A unio de duas linguagens L1 e L2 linguagem L, que contm todas as palavras que pertencem a qualquer uma das linguagens. Definido formalmente: L = L1 U L2 = {w * / w L1 ou w L2 } Exemplo 09: L1 = {a, ab, abb, abbb, abbbb, ...} e L2 = {b, ab, aab, aaab, aaaab, ...} L = L1 U L2 = {a, b, ab, abb, aab, abbb, aaab, aaaab, abbbb, ...} 4.2.2. Interseco (): A interseco de duas linguagens L1 e L2 a linguagem L, que contm todas as palavras que pertencem simultaneamente s duas linguagens. Definido formalmente como: L = L1 L2 = {w * / w L1 e w L2} Exemplo 10 (usando as linguagens do exemplo 09): L = L1 L2 = {ab}

Ateno: Caso no existisse nenhuma cadeia presente em ambas as linguagens, a interseco seria o conjunto vazio, denotado por O. Neste caso jamais a resposta poderia ser o vazio (), pois o vazio no est presente em nenhuma as linguagens do exemplo. 4.2.3. No (~): Tambm chamado de complemento. uma linguagem que contm todas as cadeias que no pertencem a L. Uma vez que * o conjunto de todas as palavras que podem ser formadas sobre um alfabeto , ento o complemento da linguagem L, construda sobre a linguagem * ~ L, ou ainda, definido formalmente: *~L = {w */ w L} Exemplo 11 (usando as linguagens do exemplo 09): ~L1 = {, b, bb, bbb, ba, baa, bab, aaba, ababa, ...} 4.2.4. Diferena: A diferena de duas linguagens L1 e L2 a linguagem L, que contm todas as palavras que pertencem linguagem L1, mas no pertencem linguagem L2. Definido formalmente: L = L1 L2 = {w * / w L1 e w L2 } Exemplo 12 (usando o exemplo 09): L = L1 L2 = {a, abb, abbb, abbbb, abbbbb, ...}
9

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

5. EXPRESSES REGULARES Um dos grandes propsitos da Teoria da Computao conseguir representar de maneira finita, um subconjunto de linguagens de um alfabeto. Para as linguagens finitas, a enumerao exaustiva de todas as palavras resolve a questo, o grande desafio so as linguagens infinitas. Essa representao finita deve ser formada por um conjunto de smbolos finitos, dentre eles os smbolos do alfabeto da linguagem a ser representada. Como o conjunto de todas as palavras que pertenam a um alfabeto infinito podemos dizer que o conjunto de todas as possveis linguagens dentro de um alfabeto tambm infinito. Por ser infinito, no possvel representar todas as linguagens de um alfabeto com um nmero finito de smbolos, porm podemos encontrar representaes finitas para a maioria das linguagens ditas interessantes. Existem vrios modelos de representaes propostos para descrever uma linguagem, alguns mais poderosos (reconhecem mais linguagens) que outros. O modelo mais simples de ser utilizado chamado de Expresso. Uma expresso a representao da linguagem atravs de smbolos matemticos. Quando a expresso formada apenas pelos elementos do alfabeto, parnteses e as propriedades da cadeia e da linguagem, dizemos que a expresso Regular. Toda expresso Regular representa uma linguagem pela interpretao de seus smbolos. Uma linguagem dita regular se existir alguma expresso regular que a defina. Toda linguagem regular pode ser descrita por uma expresso regular que nada mais do que um formalismo gerador, pois expressa como construir (gerar) as palavras de uma linguagem. Exemplo 13: Exemplos de Expresses Regulares no alfabeto {a, b}.
Expresso Regular Linguagem Gerada/Geradora

aa ba* (a)* a* b* a* U (ab)+ (a (a U b)*) (ab U aab U abb) (ab) ~ (a*) a+ba*

Contm somente a palavra aa todas as cadeias que iniciam por b, seguido de zero ou mais as {, a, aa, aaa, ... } {, a, b, aa, ab, bb, aaab, aaa, ... } {, aa, ab, aaaa, abab, ababab, ... } {a, aa, ab, aaa, aba, aab, ... } { aab, abb} {b, bb, bbb, bbbb, ...} {ab, aba, aabaa, abaa, aaba, aaaba, aaab, ...}

Pergunta importante: Qual a Expresso Regular que representa todas as possveis cadeias do alfabeto {a, b}?

10

APOSTILA DE LINGUAGENS FORMAIS INTRODUO _______

Prof. TENORIO

Lema do bombeamento O lema do bombeamento (em ingls: pumping lemma) diz que, em linguagens regulares infinitas, todas as cadeias vlida maiores que n, onde n depende da linguagem, podem ser quebradas em trs pedaos diferentes de zero, sendo que um deles, de tamanho menor que n, colocado em fecho estrela, sempre resultar em cadeias vlidas. Formalmente falando temos: Se L uma Linguagem Regular, ento existe uma constante n tal que, para qualquer palavra w de L onde | w | n, w pode ser definida como w = uvz onde | uv | n, | v | 1 e, para todo i 0, uviz palavra de L. 6. EXERCCIOS Ateno: Este exerccio no tem valor quantitativo (para a nota), serve apenas para desenvolver o aprendizado e ganhar experincia para as avaliaes. Construa linguagens regulares que reconheam as seqncias abaixo (Considere = {0, 1}): a) b) c) d) e) f) g) h) i) j) k) l) Terminadas em 00 00 01 e iniciadas por 11; Terminadas por 00, mas que tenham, ao menos um 1; Iniciadas por x; Que no terminem em 10 e possuam, ao menos, dois elementos; Que no iniciem com 00 e terminem com 1; Que aceite somente {0,1,01,10}; Iniciados por 0 e que aceite 1 00 00 00; Que possuam apenas uma dupla de zeros; Que no possua zeros; Que tenha 000 e 111; Um nmero par de zeros; Um nmero mpar de zeros;

11

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

AUTMATO FINITO
Como j foi dito, existem vrios modelos de representaes propostos para descrever uma linguagem, alguns mais poderosos (reconhecem mais linguagens) que outros. Alguns modelos, alm de linguagens, so capazes de representar todo um sistema. Imaginem uma agenda eletrnica. Agora, na posio de analistas de sistemas, vamos apresentar aos programadores essa mesma agenda de duas formas diferentes. Forma 01: O sistema consiste em uma agncia eletrnica com uma tela principal, e as opes de Inserir, Alterar, Remover, Buscar e Sair. Ao teclar 01 o usurio vai para a tela de insero que pede um nome e depois a tecla Enter. Na tela seguinte pedir o telefone e novamente a tecla Enter, retornando ao menu principal. Teclando 2 no menu principal, o sistema ir para a tela de Alterar. Nesta tela ser pedido o nome de uma pessoa e a tecla Enter. Na tela seguinte o telefone desta pessoa e novamente a tecla Enter. Por fim, uma mensagem de Atualizada com sucesso! Tecle Enter., aps pressionar a tecla Enter, o sistema retorna ao menu principal. Teclando 3 no menu principal, o sistema ir para a tela de remover. Nela ser solicitado um nome. Caso esse nome esteja cadastrado, vai aparecer a mensagem: Removido com sucesso. Caso o nome no esteja cadastrado, aparece a mensagem Nome no existe, tecle Enter e teclando Enter, o sistema retorna ao menu principal. Teclando 4 no menu principal, o sistema ir para a tela de buscar. Esta tela ira pedir o nome da pessoa que se quer buscar. Caso o nome exista, ir aparecer em tela seguinte o nome e o telefone da pessoa cadastrada. Caso no exista, aparece a mensagem Nome no existe. Tecle Enter. Retornando ao menu principal. Teclando 5 no menu principal, o sistema vai para a tela de confirmao de sada, com a mensagem: Tem certeza que deseja sair [s/n]?. Caso o usurio tecle S, o programa ser encerrado, caso tecle N, o sistema retorna ao menu principal. Tambm existe a opo de que se tiver transcorrido muito tempo sem que o usurio tecle algo o sistema ir para uma proteo de tela que s ser liberada quando o usurio teclar Enter. Forma 02:

12

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Qual das duas formas mais legvel, ou seja, mais fcil de entender? Claro que o diagrama, pois o texto chato e deixa margem para ambigidades e interpretaes diferentes. Isso no acontece no diagrama. A esse diagrama damos o nome de Diagrama de Estados, esse o nome mais utilizado, porm, seu nome formal Autmato Finito. E a construo desse diagrama que iremos aprender daqui para frente. Uma mquina de estados finitos ou Autmato Finito uma modelagem restrita de um comportamento, composto por estados e transies. Estado: a descrio do sistema em um determinado instante. Transio: uma mudana de Estado. Um estado reflete a posio do sistema em um determinado instante. como se fosse uma fotografia do sistema que o mostra naquele exato momento em que a fotografia foi tirada e uma transio indica uma mudana de estado e descrita por uma nica1 condio que precisa ser realizada para que a transio ocorra. Existem trs tipos de transies: 1. De usurio: provocada por uma ao do usurio; 2. Espontneas: provocada por uma ao mecnica, do sistema; 3. Instantneas: provocada apenas uma vez e acontece na inicializao do sistema; Essa mquina de estados recebe uma entrada de dados, porm no gera nenhuma sada em seu processamento, exceto a indicao informando se a entrada ou no aceitvel naquela mquina. O que torna o Autmato Finito restrito a falta de memria externa, que possa ser expandida ou utilizada para gravar dados, assim como a memria RAM encontrada nos computadores atuais. 1. CONCEITO O conceito de Autmato Finito, formalmente falando, uma quntupla, formada por:

Para facilitar o estudo e a construo dos autmatos, no sero utilizados exemplos de sistemas reais, como a agenda apresentada no incio deste captulo, sero feitos diagramas genricos que servem para quaisquer situaes, pois nosso objetivo aprender a montar o diagrama e no sua aplicabilidade, que ser vista em outra disciplina. Para tanto vamos conhecer algumas convenes adotados pelos mais diversos autores para a construo de autmatos. Ateno: Vale lembrar que o principal objetivo dos autmatos a validao de cadeias. Para uma cadeia ser vlida, ela precisa fazer transies que iniciem no estado inicial do autmato e terminem em algum estado final do mesmo. Caso a cadeia termine em um estado dito no-final, a cadeia considerada invlida.

nica, neste caso, significa que cada transio s possui um nico elemento do alfabeto em questo.
13

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

2. CONVENES 1) O nome dos estados ser sempre a letra q, e sero diferenciados por um ndice. Exemplo: q0, q1, q2, q3, q4, q5, q6, q7, q8, q9 ,q10, ..., qN 2) q0 ser sempre o estado inicial; 3) Os estados sero representados por um crculo, com seu nome no interior. Exemplo: q2 4) As transies sero representadas por uma seta com um nico elemento do alfabeto rotulando-a. Exemplo: a

5) O estado inicial ser demarcado com uma seta que vem do nada e apontando para o mesmo. Exemplo: q0 6) Os estados finais sero demarcados com um crculo em seu interior. Exemplo: qN

7) Duas transies diferentes, partindo de uma mesma origem e chegando a um mesmo destino, podero ser representados, com uma seta nica, e seus nomes sero separados por vrgula. Exemplo: qX a b a, b qN equivale a: qX qN

3. DETERMINISMO O autmato finito dito Determinstico se, e somente se, para cada elemento do alfabeto exista uma, e apenas uma transio de sada, de cada estado pertencente ao autmato, ou seja, um mesmo elemento do alfabeto no pode ter duas ou mais transies de sada de um mesmo estado e obrigatoriamente, deve ter uma sada do mesmo. Isto significa que, estando o processamento em um estado qualquer, e obtendo um valor qualquer do alfabeto como entrada, sempre existir um nico caminho a percorrer dentro do autmato. O autmato que no seguir esta regra denominado de Autmato Finito No Determinstico. Uma entrada ser vlida em um autmato finito no determinstico se houver pelo menos uma seqncia correta de passos que leve o processamento a um estado final. Ateno: O autmato finito Determinstico possui apenas transies de usurio e a transio instantnea, no possuindo transies espontneas (vazias).
14

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

4. AUTMATO FINITO DETERMINSTICO Para melhor representar um autmato, utilizaremos a forma mais conveniente chamada de Diagrama de Estados. um grafo dirigido onde os vrtices so os estados e as arestas so as transies. Existem duas formas de se construir um autmato finito determinstico: 1 A Regra da Cadeia Mnima, que veremos a seguir; 2 A Regra da Transformao, que veremos mais adiante; Ateno: Nem sempre possvel escrever um autmato pela regra da cadeia mnima, nestes casos, deve-se utilizar obrigatoriamente a regra da transformao que serve para qualquer linguagem regular; Importante pra caramba: No importa a regra que se use para criar um autmato, o que devemos ter em mente que sempre uma cadeia vlida deve chegar a um estado final e uma cadeia invlida NO pode chegar a um estado final.

REGRA DA CADEIA MNIMA: Nesta regra deve-se seguir rigorosamente os seguintes passos: Passo 1 Verificar se os elementos que compem a linguagem fazem parte do alfabeto; Passo 2 Isolar a chamada Cadeia Mnima. A cadeia mnima ser formada pelos elementos do alfabeto, que aparecem na linguagem, na mesma ordem em que aparecem, excluindo-se as propriedades e os elementos dentro da Estrela de Kleene (Fecho Estrela); Passo 3 Escrever uma seqncia do estado inicial a um estado final, com a cadeia mnima, utilizando-se das convenes, lembrando que cada transio s poder conter um nico elemento do alfabeto. A essa seqncia daremos o nome de Esqueleto; Passo 4 Tornar o autmato determinstico, ou seja, incluir as sadas no criadas pelo item anterior. Essas sadas devem corresponder aos elementos das propriedades presentes na linguagem (excludas no passo 02);

Ateno: Caso no se tenha encontrado o destino de alguma sada pelo passo 4, esta sada deve ser direcionada para um estado chamado de Estado Morto. Esse estado nunca ser um estado final e suas sadas sempre retornaro para si mesmo. Este estado ser representado da seguinte forma: M

Exemplo 01: Construir um Autmato Finito Determinstico para a linguagem: L = 10+ no = {0,1} Passo 01: Os elementos da linguagem 10+ fazem parte do = {0,1}? Neste caso sim, pois a linguagem composta apenas de elementos do alfabeto e de propriedades. Esta linguagem formada pelas seguintes cadeias: {10, 100, 1000, 10000, 100000, 1000000, ...} Passo 2: A cadeia mnima ser 10, ou seja, a linguagem sem as propriedades e sem os elementos que esto na Estrela de Kleene (Neste exemplo no existe nenhum elemento na Estrela de Kleene Fecho Estrela);
15

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Passo 3: Com a cadeia mnima 10 temos:

Passo 4: Adicionando as propriedades da cadeia presentes na linguagem e o Estado Morto temos:

Agora sim terminamos o nosso primeiro autmato finito determinstico. Exemplo 02: Construir um AFD para a linguagem: L = 1+001* no = {0,1} Passo 01: Os elementos da linguagem 1+001* fazem parte do = {0,1}? Neste caso sim, pois a linguagem composta apenas de elementos do alfabeto e de propriedades. Esta linguagem formada pelas seguintes cadeias: {100, 1100, 1001, 10011, 11001, 110011, ...} Ateno: o elemento 1+ no depende do 1* em termos de quantidade. Passo 2: A cadeia mnima ser 100, ou seja, a linguagem sem as propriedades e sem os elementos que esto na Estrela de Kleene (Neste exemplo o elemento 1* foi omitido da cadeia mnima por estar na Estrela de Kleene Fecho Estrela); Passo 3: Com a cadeia mnima 100 temos:

Passo 4: Adicionando as propriedades da cadeia presentes na linguagem e o Estado Morto temos:

Neste exemplo verificamos a Estrela de Kleene e a simplificao do Estado Morto com a 7 conveno. Agora hora do aluno fazer o teste de validao das cadeias encontradas no passo 01.
16

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

MANDAMENTOS DA REGRA DA CADEIA MNIMA Na regra da cadeia mnima, alguns detalhes devem ser observados. Esses detalhes visam auxiliar o aluno na construo dos autmatos, impedindo que cadeias invlidas cheguem ao estado final e permitindo que cadeias vlidas sempre cheguem ao estado final. So particularidades na construo do autmato que devem sempre ser respeitados. Essas particularidades sero mostradas a partir de exemplos sempre no = {0,1, 2} Ateno: Nos exemplos deste sub-tpico o estado morto foi omitido a fim de simplificar os desenhos. Lembre-se sempre da regra do determinismo. Lema 01: Fecho Positivo com um nico elemento. O fecho positivo com um nico elemento geralmente formado por um loop no estado que seu elemento obrigatrio o aponta. Exemplo: L = 21+2. Neste exemplo o 1 do positivo aponta para o q2, assim o loop ficar no q2

Lema 02: Fecho Estrela (Estrela de Kleene) com um nico elemento. O fecho estrela com um nico elemento geralmente formado por um loop simples na sua devia posio. Neste caso NO se deve criar estados. Exemplo: L = 21*2. Neste exemplo o loop do 1 ficar no q1

Lema 03: Fecho Positivo com dois ou mais elementos. O fecho positivo com dois ou mais elementos representado retornando uma transio para o mesmo local para onde aponta o primeiro elemento do fecho. Importante: As transies que representam um mesmo elemento devem apontar sempre para o mesmo lugar. Exemplo: L = 2(021)+2. Neste exemplo aps o elemento 1 ter uma transio 0 apontando para o mesmo estado que aponta a transio 0 do incio do fecho, no caso, o q2.

17

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Lema 04: Fecho Estrela com dois ou mais elementos. O fecho estrela com dois ou mais elementos representado com a criao de x novos estados, onde x a quantidade de elementos constantes/positivos que se encontram dentro do fecho menos um. Esses novos estados fecharo um loop no estado onde se encontra o fecho na linguagem. Exemplo: L = 2(001)*2. Neste exemplo, sero criados dois novos estados (quantidade de elementos constantes/positivos dentro do fecho menos um) que fecharo loop no estado que fica entre os dois elementos 2, no exemplo, o q1

Lema 05: Fechos estrelas sucessivos. Dois ou mais fechos sucessivos caracterizam elementos diferentes que precisam de loop. Neste caso, apenas o primeiro elemento recebe um loop simples, para os demais criado um novo estado para suprir a necessidade do loop. Devemos lembrar sempre do aviso importante abaixo: Importante: Loops que representam elementos diferentes no podem ficar no mesmo estado. Exemplo: L = 20*1*2. Neste caso ser criado um estado para o 1* e NO ser criado estado para o 0*

Errado

Certo

Lema 06: Regra obriga duas sadas. Quando as regras so aplicadas corretamente e um loop gera duas ou mais sadas iguais, o loop causador do no-determinismo deve seguir para o prximo estado. Exemplo: L = 21+12.

Errado

Certo
18

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Lema 07: Cadeia mnima vazia. Quando a cadeia mnima vazia, o estado inicial um dos finais. Deve-se resolver a linguagem desprezando o fecho e, no final, usar a regra do lema 03. Exemplo: L = (2012)*

Ateno: o retorno do loop estrela (transio 2 do q4) jamais deve retornar ao q0, pois permitiria que uma cadeia invlida chegasse ao estado final ex: 201222012. Lembre-se que as transies que representam um mesmo elemento devem apontar sempre para o mesmo lugar. Neste exemplo, as transies 2 do q0 e do q4 representam o mesmo elemento na linguagem.

Lema 08: Todas as cadeias Qualquer coisa. Todas as vezes que aparecer na linguagem a estrutura que representa todas as suas cadeias (No = 0,1 temos (0*1*)*, por exemplo), esta resolvida colocando-se loops simples no estado correto (na seqncia da linguagem), porm, devese observar que nenhuma transio deve seguir para o estado morto a partir do estado onde se localiza a estrutura. As transies que deveria seguir para o estado morto seguiro para os loops que compe a estrutura. Exemplo: 20 (0*1*2*)* 10. Neste exemplo, o estado q2 o estado onde o qualquer coisa deve ser resolvido, portanto, a partir dele ningum vai para o morto. As transies que iriam para o morto, retornam para os loops criados para o qualquer coisa. No exemplo, todos as transies 0 e 2 que iriam para o morto vo para o estado q2 e as transies 1 vo para o estado q3.

Ateno Pergunta: Por que o loop 1 do qualquer coisa no est tambm no q2, juntamente com os demais? Resposta: Para no infringir o lema 06. Importante: Depois do qualquer coisa, ningum vai para o estado Morto.

19

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Lema 09: Unio. Na Unio, cada lado deve comear no estado inicial, porm, os elementos que fazem parte de uma estrutura, NO podem, de forma alguma, estarem ligados as estruturas do outro lado da unio. Exemplo: 0*21 U 110*. Neste exemplo, o loop do elemento 0* do primeiro lado da unio, no poder ficar no estado q0, pois isso permitiria que cadeias, iniciadas em 0*, pudessem terminar com 110*, validando cadeias como 000011, que so invlidas na linguagem, ou seja, colocando o loop 0* no q0, como saber a qual lado ele pertence apenas olhando para o desenho? No autmato, no pode haver ambigidades. Ateno: Na unio, no poder haver loops no q0, exceto se a estrutura do loop estiver em todos os lados da unio.

Errado

Certo

Lema 10: No. Quando a linguagem vier com um no, basta simplesmente inverter o tipo do estado. Se o estado no for final ele passar a ser, inclusive o estado Morto e se caso ele seja final, passar a no+ ser. Exemplo: ~ (001)

Sem o ~ (no)

Com o ~ (no)

Ateno: Estes lemas no funcionam para qualquer linguagem, mas so eficientes para a maioria delas. S preciso ter em mente que nenhuma cadeia invlida deve terminar em um dos estados finais e nenhuma cadeia vlida deve terminar em um estado dito no-final.

20

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

5. AUTMATO FINITO NO-DETERMINSTICO Como j foi dito, a Regra da cadeia mnima no funciona para todas as linguagens. Para as linguagens que a cadeia mnima no resolve, faz-se o autmato em duas etapas: 1 Cria sua verso no-determinstica; 2 Transforma a verso no-determinstica em determinstica; Este procedimento funciona para qualquer linguagem regular. Um autmato finito no-determinstico possui as mesmas caractersticas de um AFD, porm o prximo estado no necessariamente unicamente determinado pelo estado atual e pelo . O AFND permite que se tenha zero, uma ou mais transies de estado com o mesmo elemento do , alm de permitir transies vazias (), ou seja, permite que se mude de estado sem nenhuma leitura de elementos do . A forma de construo de um AFND similar a construo de um AFD, porm no se precisa seguir a regra do determinismo, nem os lemas 06 e 10. Os demais lemas continuam valendo. Ateno: sempre bom lembrar que no s existe uma nica forma de se fazer um AF. Vrios autmatos, feitos de maneiras diferentes, podem chegar a um mesmo resultado, o que vale sempre que uma cadeia vlida precisa terminar em um dos estados finais e uma cadeia invlida no pode terminar em um desses estados finais. Ateno: O AFND no precisa de estado Morto. Exemplo 01: L = 10*1*0*2*0

Exemplo 02: (00 (0*1*2*)* 210*)*

21

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

6. EQUIVALNCIA DOS AUTMATOS FINITOS Todas as vezes que o poder de duas estruturas forem o mesmo possvel converter uma estrutura na outra, ou seja, uma relao de equivalncia existe apenas quando dois ou mais autmatos aceitam a mesma linguagem. 6.1. TRANSFORMAO DE AUTMATO FINITO NO-DETERMINSTICO EM AUTMATO FINITO DETERMINSTICO Apesar de aparente fora e generalidade do autmato finito No-Determinstico, eles no so mais poderosos que os determinsticos, ou seja, para cada autmato finito No-Determinstico, h um autmato finito Determinstico equivalente. Formalmente, dizemos que os dois autmatos so equivalentes entre si, pois no h nenhuma linguagem que possa ser representada por um autmato finito No-Determinstico, que no possa ser representada por um autmato finito determinstico. O algoritmo de transformao de um autmato no-determinstico em determinstico compe a regra de criao dos autmatos finitos que no podem ser feitos pela regra da Cadeia Mnima e consiste em quatro etapas. 1 A primeira diz respeito criao do conjunto de cada estado que formado pelo prprio estado e todos os estados alcanveis com a leitura de elementos vazios (), inclusive seqenciados; 2 A segunda etapa diz respeito identificao do estado inicial do autmato determinstico a que se quer chegar. O estado inicial do AFD formado pelo conjunto do estado inicial do AFND; 3 A terceira etapa especifica o destino correto de uma nica sada para cada elemento do alfabeto, em funo recursiva, partindo das possveis sadas do estado inicial encontradas na etapa anterior. Deve-se perguntar para qual estado ir cada um dos elementos do alfabeto envolvido e criar o estado caso ele no exista. Essa operao deve ser repetida at que o autmato j esteja seguindo a regra do determinismo; Ateno: Nesta etapa devemos ter em mente que os estados do AFD so os conjuntos dos estados do AFND e no simplesmente os estados do AFND. 4 A ltima etapa trata da deteco dos estados finais. Os estados finais do AFD sero todos aqueles que possuem, em seu conjunto, algum estado final do AFND. Para um melhor entendimento, vamos a um exemplo. Transformar o AFND abaixo em AFD no = {0, 1}.

22

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Resposta: Etapa 01: Criar o conjunto de cada estado. q0 = {q0, q1} q1 = {q1} q3 = {q3, q4, q5} q4 = {q4, q5}

q2 = {q2} q5 = {q5}

Etapa 02: Identificao do estado inicial. No exemplo, o q0 do AFD ser formado pelos estados q0 e q1, que compe o conjunto do q0 do AFND. Etapa 03: Verificar os destinos para os elementos 0 e 1 a partir do estado inicial. O AFD poder ter at 2N estados, onde N a quantidade de estados do AFND.

Etapa 04: Demarcar os estados finais. No exemplo, todos os estados que possuem o q4 sero finais, pois o q4 final no AFND.

23

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

6.2. MINIMIZAO DE ESTADOS Em muitos casos, um autmato finito, seja ele determinstico ou no, pode ser escrito de maneira mais simples, com menos estados, sem que seja alterada a linguagem reconhecida por este autmato. Esse o processo conhecido como minimizao de estados. um processo bastante simples, baseado apenas em apenas duas fases. A primeira fase diz respeito eliminao de estados inalcanveis. Um estado dito inalcanvel se, e somente se, partindo do estado inicial no haja nenhuma possibilidade de entrada no autmato que leve a este estado, ou seja, se o autmato no pode utilizar um determinado estado, ento esse estado pode ser removido sem nenhum prejuzo linguagem reconhecida por ele. A segunda fase diz respeito funo de cada estado. Quando dois ou mais estados possuem a mesma funo, possvel fazer a fuso deles em um estado nico. Dizemos que dois ou mais estados possuem a mesma funo quando, a partir de qualquer um deles, as mesmas entradas conduzem o autmato a uma situao nica, de aceitao ou rejeio. Para comprovar matematicamente que dois ou mais estados possuem a mesma funo, deve-se seguir os seguintes passos: 1 Construir a pirmide (matriz) de marcao, que nada mais do que uma matriz triangular, sem a diagonal principal, que confronta um a um todos os estados do autmato. Nela, os estados so dispostos de cima para baixo e da esquerda para a direita. Deve-se tentar verificar, na matriz, com os passos seguintes, a possibilidade de um par qualquer de estados serem iguais. Caso seja provado que um par de estados diferente entre si, sua posio na pirmide ser marcada, caso no se garanta a diferena, a posio no ser marcada. No final, os estados no marcados na pirmide sero colapsados em um estado nico entre si e os demais (marcados) ficaram isolados no novo autmato; 2 Marcar estados finais com os estados no-finais. Pela simples funo de aceitao e rejeio, os estados finais so diferentes dos estados no-finais e por isso precisam ser marcados na pirmide; 3 Devem ser marcados na pirmide tambm, os estados cujos destinos com a leitura de qualquer um dos elementos do alfabeto sejam diferentes, ou seja, um elemento qualquer do alfabeto deve encaminhar os estados para uma mesma posio, s assim, poderemos garantir que esses estados so iguais; Para um melhor entendimento, vamos a um exemplo: Gerar o autmato mnimo, ou seja, minimizar o autmato finito a seguir, no = {0, 1}.

24

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Primeira fase: eliminar os estados inalcanveis. Com essa eliminao o autmato fica assim:

Segunda fase: colapsar os estados equivalentes.

25

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS FINITOS

Prof. TENORIO

Resposta Final Autmato Mnimo

Ateno: No resultado da minimizao no pode haver, de forma alguma, incluso de outros estados que no sejam os estados presentes na pirmide de marcao, inclusive estado morto.

7. LINGUAGENS NO-REGULARES Como j vimos, o poder os autmatos finitos so restritos as linguagens regulares. Uma linguagem regular se e somente se, em processando qualquer cadeia, a informao a ser armazenada em qualquer estgio estritamente limitada quele estgio, ou seja, a leitura de qualquer smbolo de uma cadeia totalmente independente da leitura dos demais smbolos da cadeia. Em algumas linguagens, essa independncia no acontece, ou seja, necessrio armazenar informaes de leituras anteriores para possibilitar a leitura de caracteres seguintes. Vejamos o exemplo. Ateno: Um caractere X elevado a um expoente N significa uma cadeia formada de N vezes o caractere X. Ex.: 05 = 00000, 17 = 1111111, (10)3 = 101010, 1N / N 3 = {111, 1111, 11111, ...} Na linguagem L = 0N1N / N 1, temos as seguintes cadeias vlidas: C = {01, 0011, 000111, 00001111, 0000011111, 000000111111, 00000001111111, ...} Neste exemplo, para que possa saber a quantidade de caracteres 1s a serem lidos necessrio armazenar a quantidade de elementos 0s lidos, pois a linguagem pede que a quantidade de uns seja exatamente igual a quantidade de zeros. Como o autmato finito no possui nenhuma estrutura de memria, no h como guardar este valor, ou seja, no h como saber a quantidade de zeros lidos, impossibilitando assim a leitura correta da quantidade de uns. Assim, chegamos concluso que as linguagens no-regulares precisam de uma estrutura de memria para poderem ser representadas formalmente e como o autmato finito no possui nenhuma estrutura de memria, seu poder no abrange as linguagens no-regulares.

26

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

GRAMTICAS
A Gramtica uma linguagem formal que serve para definir qual o subconjunto de sentenas que faz parte de uma determinada linguagem. Especifica linguagens potencialmente infinitas de uma forma finita. Seu poder superior ao poder dos autmatos finitos, pois abrange as Linguagens Regulares e Linguagens No-Regulares. A principal aplicao das gramticas a construo e descrio de interpretadores e compiladores. 1. CONCEITO Formalmente falando, uma Gramtica uma qudrupla, formada por: V: Conjunto de Variveis; : Alfabeto; S0: Produo Inicial. S0 V. Por conveno usaremos S como S0; : Funo de Produo.

2. CLASSES DE GRAMTICAS Conforme as restries impostas ao formato das produes de uma gramtica, a classe de linguagens que tal gramtica gera varia correspondentemente. Segundo Chomsky (Avram Noam Chomsky Filadlfia, 7 de dezembro de 1928 professor Ctedra do MIT), as Gramticas so organizadas em quatro grandes classes, sendo que cada classe de gramtica capaz de gerar uma classe correspondente de linguagens. Essa teoria denominada Hierarquia de Chomsky (1959). A Hierarquia de Chomsky organiza as classes das Gramticas mediante o seu poder. Uma classe superior engloba todas as classes inferiores e mais um conjunto de gramticas prprias. As quatro classes de gramticas definidas por Chomsky so: 1 Gramticas com Estrutura de Frase; 2 Gramticas Sensveis ao Contexto; 3 Gramticas Livres de Contexto; 4 Gramticas Regulares; Graficamente, a hierarquia de Chomsky mostrada na figura a seguir.

G. com Estrutura de Frase G. Sensveis ao Contexto G. Livres de Contexto G. Regulares

27

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

3. GRAMTICAS COM ESTRUTURA DE FRASE As Gramticas com Estrutura de Frase, tambm chamadas de Gramticas Irrestritas ou TIPO 0, so aquelas s quais nenhuma limitao em sua construo imposta. So capazes de reconhecer quaisquer linguagens recursivamente enumerveis (uma linguagem formal dita recursivamente enumervel se ela computvel, ou seja, se existe um algoritmo que reconhece esta linguagem mas que no necessariamente para qualquer entrada). O universo das linguagens que se podem definir atravs dos mecanismos gerativos definidos pela gramtica corresponde exatamente ao conjunto das linguagens que esta classe de gramtica capaz de gerar. Formalmente falando, toda gramtica Estrutura de Frase se, e somente se:

V &
Construo de uma Gramtica

( U )+ = ()

Para se construir uma gramtica qualquer basta listar sua qudrupla. Vejamos um exemplo de gramtica para a linguagem L = 0N1N / N 1. 1 Variveis: Ainda no sabemos como calcular a quantidade de variveis que a linguagem ir precisar, por isso vamos declarar apenas uma e caso seja necessrio declararemos mais. Por conveno a primeira varivel ser sempre S, portanto, vamos declarar apenas o S. V = S; 2 Alfabeto: Como j sabemos, o alfabeto so os caracteres presentes na linguagem, neste caso, apenas 0 e 1; = 0, 1; 3 Produo Inicial: Por conveno ser sempre S, a primeira varivel declarada na gramtica. S0 = S; 4 Funo de Produo: A funo de produo o mecanismo gerador de todas as cadeias vlidas da linguagem e composto de duas partes. A parte Replicao, onde se localiza a recurso geradora que vai at o infinito e a parte Obrigatria, que a sada da recurso e composto pela cadeia mnima da estrutura que a varivel representa e a prxima varivel, caso exista. Importante pra caramba: A varivel da replicao deve estar sempre do mesmo lado em que se encontra a varivel da cadeia mnima e esta, por sua vez, deve-se orientar sempre pela linguagem. A cadeia mnima, ns j aprendemos a identificar no captulo anterior. A replicao facilmente identificada quando construmos a rvore sinttica da estrutura. Uma rvore de anlise sinttica, ou simplesmente rvore sinttica, uma estrutura de dados em rvore, que representa a estrutura sinttica de uma cadeia de acordo com alguma gramtica formal. Isto significa que cada cadeia vlida ter uma rvore sinttica que a representa e nenhuma cadeia invlida ter essa rvore sinttica.
28

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Para analisarmos melhor as rvores sintticas, primeiramente vamos listar as cadeias vlidas da linguagem: C = {01, 0011, 000111, 00001111, 0000011111, 000000111111, 00000001111111, ...}. Agora vamos construir as rvores sintticas para algumas destas cadeias. Com essa rvore sinttica chegamos concluso que S = 01. E as demais cadeias, como podero ser geradas? A resposta para essa pergunta simples: Recurso. rvore sinttica da cadeia mnima Sabemos que S = 01, agora imagine a segunda cadeia vlida: 0011, assim temos: 0011 = 0S1. No caso da terceira cadeia vlida temos: 000111 = 00S11, e assim por diante. Vejamos as rvores sintticas:

rvore sinttica da segunda cadeia vlida

rvore sinttica da terceira cadeia vlida

Com isso chegamos concluso que S = 0S1, ficando assim a funo de produo:

S=

0S1 Replicao

01 Obrigatria

Assim podemos observar, por exemplo: S = 0S1 = 00S11 = 000S111 = 00001111 Com isso, nossa primeira gramtica fica assim: V = S; = 0, 1; S0 = S; S = 0S1 01

29

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Exemplo 2: Vejamos a gramtica abaixo: V = S, A, B; = 0, 1; S0 = S; o S = 0S AB o AB = BA o A=0 o B=1

Pergunta: Qual a linguagem geradora desta gramtica? Para responder a essa pergunta vamos apelar para as possveis rvores sintticas:

0*

0*01

0*10

Descrevendo todas as possveis rvores sintticas da gramtica, chegamos seguinte linguagem: L = 0* 0*01 0*10

4. GRAMTICAS LIVRES-DE-CONTEXTO Em lingstica e Teoria da Computao, gramticas livres de contexto ou gramticas independentes de contexto, de nvel 2 na hierarquia de Chomsky, tambm chamadas gramticas algbricas so gramticas formais onde levantado o condicionamento das substituies impostas pelas regras definidas pelas produes. Este condicionamento eliminado impondo s produes uma restrio adicional, que restringe as produes forma geral formalmente descrita como:

V &

= ()

Em resumo, toda gramtica classificada como Livre-de-Contexto se, e somente se, no lado esquerdo da igualdade de cada produo existe uma e apenas uma varivel.

30

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Separao de variveis das Gramticas Livres-de-Contexto Antes de iniciarmos os exemplos, vamos a uma pergunta importante pra caramba: possvel saber a quantidade de variveis que se precisa declarar, apenas observando a linguagem? A resposta para essa pergunta SIM! Para cada tipo de Gramtica, com restries, existe uma forma diferente de se saber a quantidade de variveis a serem declaradas. Em todas as gramticas, devemos isolar os elementos independentes de uma linguagem, pois cada um desses elementos ser uma varivel. Exemplo 01: Separando os elementos da linguagem: L= 0* 1+ L = 0*1+(10)+1011*, temos: 0 1 1*

(10)+ 1

Neste exemplo identificamos sete variveis. Nas Gramticas Livre-de-Contexto, as variveis devem ser contadas de fora para dentro. Os elementos variveis (de expoente N, M, etc.) so dependentes entre si, por isso, contam apenas uma nica varivel cada um. Esses elementos variveis s devem ser contados quando todos os elementos a esquerda do primeiro e a direita do segundo j o foram. Exemplo 02: Separando os elementos da linguagem: S 0 1N D 1+ E (110)+ L = 01N1+(110)+010N11*, temos: F 0 G 1 0N B 1 A 1*

L=

C Neste exemplo identificamos oito variveis. Nas Gramticas Livres-de-Contexto, alm do que j foi exposto, a contagem de variveis possui algumas particularidades. 1 Na Unio, o sinal da unio uma varivel e essa varivel representa todas as unies simples da linguagem; 2 Quando todos os elementos da linguagem esto dentro de um fecho, esse fecho ser uma varivel e ser contado antes de seus elementos internos; 3 A estrutura que reconhece todas as cadeias de uma linguagem, o qual chamamos de qualquer coisa, ser uma nica varivel; 4 Quando existir um fecho dentro de outro, o fecho interno uma varivel independente da varivel do fecho externo e no ser contado na seqncia normal da gramtica;

31

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Exemplo 03: Separando os elementos da linguagem: L = (1 0N 1* (01*0)+ 0M 1* 0+ 0M 01N 2*)* (0*1*2*)* (10)N1 0 1N(2+0)+1* temos:

B E F I J G C A S K R T P L N + M + M N N N + + L = (1 0 1* (01*0) 0 1* 0 0 0 1 2*) * (0*1*2*)* (10) 1 0 1 (2 0) 1* D Neste exemplo identificamos dezenove variveis. Importante pra caramba: Para saber o posicionamento das variveis nas produes, deve-se sempre orientar-se pela linguagem, ou seja, na linguagem, a prxima varivel est na direita ou na esquerda na varivel que est sendo resolvida? Se ela estiver na direita, a varivel deve aparecer direita dos elementos do alfabeto que compe a produo, o mesmo acontece quando a varivel est a esquerda ou dentro da varivel que est sendo resolvida. Numa mesma produo, prefervel que as variveis estejam sempre no mesmo lado. H Q

MANDAMENTOS DAS GRAMTICAS LIVRES-DE-CONTEXTO Ateno: Nos exemplos deste sub-tpico, os trs elementos iniciais da gramtica (V, e S0) foram omitidos a fim de simplificar os exemplos. Lembre-se que nas questes e provas isto no ser tolerado.

Lema 01: Elementos Constantes. Cada constante uma varivel e a produo no possui a parte replicao, pois uma constante esttica.

Exemplo: L = 01

S = 0A A=1

Lema 02: Fecho Positivo. No fecho positivo, a parte replicao e a parte obrigatria so formadas pelo elemento que compe o fecho. Exemplo: L = 0+1

S = 0S 0A A=1

Lema 03: Fecho Estrela. No fecho estrela, a parte replicao se d como no fecho positivo e a parte obrigatria vazia.

Exemplo: L = 0*1

S = 0S A A=1

ou

S = 0S A A=1
32

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Lema 04: Fecho com mais de um elemento constante. Quando existir duas ou mais constantes dentro de um fecho, esse fecho ser uma nica varivel e as constantes tratadas como se fossem apenas uma. Exemplo: L = (0101)+1 S = 0101S 0101A A=1

Lema 05: Expoentes variveis. Este lema tambm chamado de Lema do Tringulo. Em expoentes variveis, a parte replicao formada pelos elementos que esto na primeira varivel em quantidade do coeficiente desta primeira varivel, seguido de V (antes da igualdade), seguido pelos elementos que esto na segunda varivel em quantidade do coeficiente desta segunda varivel. A parte obrigatria formada pelos elementos que esto na primeira varivel em quantidade do coeficiente desta primeira varivel multiplicado pelo valor nominal da varivel, seguido de V (o prximo caso exista), seguido pelos elementos que esto na segunda varivel em quantidade do coeficiente desta segunda varivel tambm multiplicado pelo valor nominal da varivel. Exemplo 01: L = (01)N 1 (10)N / N 2 A S = 01S10 0101A1010 A=1

Detalhamento do exemplo: o coeficiente de ambos os Ns 1 portanto, na parte replicao teremos uma vez os elementos dentro do expoente de cada lado. O valor nominal de N 2, portanto, na parte obrigatria, teremos 2 (valor nominal de N) * 1 (coeficiente de N) elementos dentro do exporte de cada lado. Exemplo 02: L = (21)3N 1 (2)4N / N 3 S = 212121S2222 212121212121212121A222222222222 A=1

Detalhamento do exemplo: o coeficiente do primeiro N 3 e do segundo 4, portanto na parte replicao aparecem trs elementos 21 (que esto na primeira varivel) e quatro elementos 2 que est na segunda varivel. O valor nominal de N 3 (N 3), portanto, na parte obrigatria, aparece nove elementos 21 (trs do coeficiente vezes trs do valor nominal) e doze elementos 2 (quatro do coeficiente vezes trs do valor nominal).

Lema 06: Fecho geral. Quando um fecho engloba toda a linguagem, esse fecho contado como uma varivel e feito antes dos elementos internos. Sua parte replicao composto pela varivel antes da igualdade, seguido da primeira varivel interna ao fecho. Sua parte obrigatria formada por vazio, em caso de fecho estrela ou da primeira varivel interna ao fecho, no caso de fecho positivo.

33

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Exemplo 01: L = (0 2* 0 1+ 0) * ABCDE S S = SA A = 0B B = 2B C C = 0D D = 1D 1E E=0

Exemplo 02: L = (0 2* 0 1+ 0) + ABCDE S S = SA A A = 0B B = 2B C C = 0D D = 1D 1E E=0

Lema 07: Todas as cadeias. A estrutura que representa todas as cadeias representada pela unio de seus elementos em separado, com a varivel antes da igualdade, unido a prxima varivel, ou a vazio, caso a prxima varivel no exista. Exemplo: L = (0*1*2*)* 1 S = 0S 1S 2S A A=1

Lema 08: Fecho dentro de outro fecho. Quando existir um fecho dentro de outro, o fecho interno ser nomeado com uma varivel fora da seqncia normal e resolvido a parte. O fecho externo continua sendo resolvido com os lemas anteriores, sendo usada a varivel do fecho interno ao invs do elemento que compe esse fecho interno. Ateno: O qualquer coisa possui seu lema prprio e no pode ser resolvido com este lema 07. Exemplo: L = 1 (00*1)+ 1 S AB S = 1A A = 01A 01B B=1 = 0

Lema 09: Unio. As unies simples, presentes em uma linguagem, so representadas por uma nica varivel formada pela unio da primeira varivel de cada lado das unies da linguagem. Cada lado da unio totalmente independente dos demais, ou seja, uma varivel de um lado da unio no aparece nas produes de um outro lado qualquer. Exemplo: 0* 1+ (10)*0 A SB S C D S=ABC A = 0A B = 1B 1 C = 10C D D=0

34

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

4.1. FORMAS NORMAIS DAS GRAMTICAS LIVRES-DE-CONTEXTO As Formas Normais so maneiras diferentes de se escrever uma mesma gramtica. Cada pesquisador pode descrever uma Forma Normal, desde que descreva tambm para qual propsito sua Forma Normal est sendo criada. Uma gramtica dita normalizada em relao a um certo padro quando todas as suas produes satisfazem as restries impostas pelo padro em questo. As formas normais estabelecem restries rgidas na definio das produes, sem reduzir o poder de gerao das Gramticas Livres de Contexto, ou seja, todas as cadeias vlidas pela gramtica original, tambm sero vlidas na gramtica em sua Forma Normal, o mesmo acontece com as cadeias invlidas. So usadas principalmente no desenvolvimento de algoritmos (com destaque para reconhecedores de linguagens) e na prova de teoremas. Vamos conhecer agora as trs Formas Normais mais importantes para a Teoria da Computao, seu propsito e sua formao. Para exemplificar essas Formas Normais que iremos apresentar, vamos utilizar a seguinte gramtica: V = S, A, B, C, D, E; = 0, 1; S0 = S; S = 00S11 00A11 A = A10 B B = 0C C = 00C 00D D = 0D 1D E E = 01 111

4.1.1. Forma Normal de Chomsky As gramticas possuem uma funo essencial no projeto de um compilador e as gramticas livresde-contexto so as mais adequadas para este tipo de projeto. Uma gramtica Livre-de-Contexto na Forma Normal de Chomsky a maneira mais legvel de se descrever um compilador. Na Forma Normal de Chomsky, em cada produo, s poder existir variveis ou alfabetos, ou seja, nunca existir um elemento do alfabeto concatenado com uma varivel em alguma produo.

Passos da Construo: 1 Deve-se declarar X variveis, onde X a quantidade de elementos que compe o alfabeto; 2 Cada uma destas novas variveis deve substituir um dos elementos do alfabeto na gramtica; 3 Ao final da gramtica, deve ser acrescentado o significado de cada varivel, ou seja, qual elemento do alfabeto aquela nova varivel representa.

35

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Exemplo: V = S, A, B, C, D, E, F, G; = 0, 1; S0 = S; S = FFSGG FFAGG A = AGF B B = FC C = FFC FFD D = FD GD E E = FG GGG F=0 G=1 { Passo 01}

Passo 02

Passo 03

4.1.2. Forma Normal de Greibach Estruturas com o mesmo poder podem ser transformadas umas nas outras. Para facilitar a transformao de uma gramtica Livre-de-Contexto em um Autmato a Pilha (assunto que veremos no captulo seguinte) necessrio que esta gramtica esteja na Forma Normal de Greibach. Esta Forma Normal foi criada por Sheila A. Greibach (Nova York, 1939 Doutora por Harvard e Professora na Universidade da Califrnia) e criada com os passos a seguir.

Passos da Construo: 1 Deve-se declarar X variveis, onde X a quantidade de elementos que compe o alfabeto; 2 Cada uma destas novas variveis deve substituir um dos elementos do alfabeto na gramtica, exceto o elemento inicial da gramtica, de cada lado da unio, caso este elemento pertena ao alfabeto; 3 Ao final da gramtica, deve ser acrescentado o significado de cada varivel, ou seja, qual elemento do alfabeto aquela nova varivel representa.

Exemplo: V = S, A, B, C, D, E, F, G; = 0, 1; S0 = S; S = 0FSGG 0FAGG A = AGF B B = 0C C = 0FC 0FD D = 0D 1D E E = 0G 1GG F=0 G=1 { Passo 01}

Passo 02

Passo 03

36

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

4.1.3. Forma Normal de Backus Nem sempre fcil de ler uma gramtica, ainda mais com as diferenas de alfabetos em idiomas estrangeiros, como o japons e o rabe. Para facilitar a leitura das gramticas, sejam elas escritas em qualquer idioma, ou qualquer conjunto de ideogramas, foi criado um padro internacional para se escrever uma gramtica, esse padro a Forma Normal de Backus. Tambm chamada de Formalismo de Backus-Naur ou Forma de Panini-Backus, esta Forma Normal foi assumida por comits internacionais e tem seu nome em homenagem a John Backus (Filadlfia, 31 de dezembro de 1924 Ashland, 17 de maro de 2007), um dos criadores do Fortran e contribuinte deste formalismo. A construo desta forma normal bem simples, basta substituir os sinais utilizados, pelos sinais do padro. Passos da Construo: 1 Acrescentar os sinais de <, na esquerda de todas as variveis e > a sua direita 2 Substituir todos os smbolos que representa a unio, por | 3 Substituir as igualdades das produes por ::=

Exemplo: V = <S>, <A>, <B>, <C>, <D>, <E> = 0, 1 S0 = <S> <S> ::= 00<S>11 | 00<A>11 <A> ::= <A>10 | <B> <B> ::= 0<C> <C> ::= 00<C> | 00<D> <D> ::= 0<D> | 1<D> | <E> <E> ::= 01 | 111 |

37

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

5. GRAMTICAS REGULARES As Gramticas Regulares, de nvel 3 na Hierarquia de Chomsky e que possuem as maiores restries sobre a forma de suas produes, so de grande importncia no estudo dos compiladores por possurem propriedades adequadas para a obteno de reconhecedores simples. O Poder das Gramticas Regulares o mesmo dos Autmatos Finitos, ou seja, reconhecem apenas Linguagens Regulares. Toda Gramtica Regular dita Linear. Uma gramtica linear quando suas produes geram resultados com apenas uma ou nenhuma varivel, sendo que esta varivel, caso exista, deve aparecer sempre na extrema direita, neste caso diz-se Gramtica Linear a Direita, ou na extrema esquerda, neste caso diz-se Gramtica Linear Esquerda, no permitindo composies hibridas. Portanto, para que uma gramtica possa ser classificada como regular, a restrio em suas produes formalmente descrita :

, V & , V &

= ou = , para as gramticas regulares lineares direita ou = ou = , para as gramticas regulares lineares esquerda;

Em resumo, toda gramtica regular se, e somente se, exista apenas uma varivel no lado esquerdo da igualdade de cada produo e, em seu lado direito, exista no mximo uma varivel de cada lado da unio, sendo que essa varivel, caso exista, est sempre na extrema direita (gramtica regular linear direita) ou na extrema esquerda (Gramtica Regular linear esquerda). Ateno: Se uma varivel aparece na extrema esquerda e, em outra produo, aparece uma varivel na extrema direita, essa gramtica no regular. Exemplo de produes que no fazem parte de uma gramtica regular: S = 00S 00A A = A0 0 S = 00S00 0000

Separao de variveis das Gramticas Regulares Nas gramticas regulares, a forma de contagem de variveis diferente da forma aprendida para as demais gramticas. Existem duas formas de se contar as variveis de uma linguagem regular. Da esquerda para a direita, seguindo uma linha linear ou Da direita para a esquerda, tambm seguindo uma linha linear. Caso a contagem de variveis seja feita da esquerda para a direita, o resultado ser uma gramtica regular linear direita, caso a contagem seja feita da direita para a esquerda, o resultado ser uma gramtica regular linear esquerda. Ambas as contagens sempre geram resultados corretos em linguagens regulares. Vejamos um exemplo de uma mesma linguagem regular, tendo suas variveis contadas das duas formas. Exemplo: L = 0*103N (100)* 1+ 012M 0* / N 0 e M 2

38

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Contagem da esquerda para a direita L = 0* 1 03N (100)* 1+ 0 12M 0*

Contagem da esquerda para a direita L = 0* 1 03N (100)* 1+ 0 12M 0*

S AB

D E F G

G F E

C B A

V = S, A,B ,C, D, E, F, G = 0, 1 S0 = S S = 0S 0A A = 1B B = 000B C C = 100C D D = 1D 1E E = 0F F = 11F 1111G G = 0G

V = S, A,B ,C, D, E, F, G = 0, 1 S0 = S S = S0 A A = A11 B1111 B = C0 C = C1 D1 D = D100 E E = E000 F F = G1 G = G0

Ateno: Os mandamentos das gramticas regulares so os mesmos das gramticas livres-decontexto, exceto os lemas 5, 6 e 8 que no podem ser usados nas gramticas regulares devido as suas restries de construo das produes. Importante pra caramba: Para saber o posicionamento das variveis nas produes, deve-se sempre orientar-se pela linguagem, ou seja, na linguagem, a prxima varivel est na direita ou na esquerda na varivel que est sendo resolvida? Se ela estiver na direita, a varivel deve aparecer direita dos elementos do alfabeto que compe a produo, o mesmo acontece quando a varivel est a esquerda. Em gramticas regulares as variveis devem estar sempre no mesmo lado.

39

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

5.1. PROPRIEDADES DAS GRAMTICAS REGULARES Algumas propriedades podem ser aplicadas s gramticas regulares. Vejamos a seguir cada uma delas.

5.1.1. CONCATENAO ( // ) Concatenar duas gramticas regulares significa concatenar todas as cadeias vlidas da primeira gramtica, uma a uma, com todas as cadeias vlidas da segunda gramtica, criando um novo conjunto de cadeias vlidas. Ateno: Duas ou mais gramticas regulares s podero ser concatenadas se forem lineares para o mesmo lado. A concatenao de duas gramticas regulares G1 e G2 (G1//G2) se d atravs da seguinte regra: 1 V = VG1 VG2; 2 = G1 G2; 3 S0 = S0G1; 4 4.1 G1; 4.2 Acrescentar S0G2 em todas as produes da etapa 4.1 que no possuam variveis; 4.3 G2; Ateno: No item 4.2, as inseres de S0G2 sero feitas a direita, quando a gramtica regular for linear direita ou a esquerda, quando a gramtica regular for linear a esquerda. A concatenao de duas gramticas regulares gera uma nova gramtica cuja linguagem reconhecida exatamente a concatenao das cadeias vlidas na primeira gramtica, com as cadeias vlidas na segunda gramtica. Exemplo: G1 V = S, A, B, C = 0, 1 S0 = S S = 0S 0A A = 1B B = 000B C 00 C = 10 01 G2 V = S, D, E = 0, 1, 2 S0 = S S = S20 D D = D121 E111 01 E = E10 22 G1 // G2 V = S, S, A, B, C, D, E = 0, 1, 2 S0 = S S = 0S 0A A = 1B S B = 000B C 00 S C = 10 S 01 S S S = S20 D D = D121 E111 01 E = E10 22

40

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

5.1.2

UNIO ( )

Unir duas gramticas regulares significa validar todas as cadeias vlidas da primeira gramtica e todas as cadeias vlidas da segunda gramtica. Ateno: Duas ou mais gramticas regulares s podero ser unidas se forem lineares para o mesmo lado. A unio de duas gramticas regulares G1 e G2 (G1 G2) se d atravs da seguinte regra: // onde N uma nova varivel; 1 V = VG1 VG2 N; 2 = G1 G2; 3 S0 = N; 4 4.1 Acrescentar a produo: N = S0G1 S0G2 4.2 G1 e G2;

A unio de duas ou mais gramticas regulares gera uma nova gramtica que reconhece todas as cadeias vlidas da primeira e da segunda gramtica.

Exemplo: G1 V = S, A, B, C = 0, 1 S0 = S S = 0S 0A A = 1B B = 000B C 00 C = 10 01 G2 V = S, D, E = 0, 1, 2 S0 = S S = S20 D D = D121 E111 01 E = E10 22 G1 G2 V = S, S, A, B, C, D, E, N = 0, 1, 2 S0 = N N = S S S = 0S 0A A = 1B B = 000B C 00 C = 10 01 S = S20 D D = D121 E111 01 E = E10 22

41

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

5.1.3. CONJUNTO CLAUSURA ( * ) O conjunto clausura o fecho estrela (estrela de Kleene) de uma gramtica. Colocar a gramtica em clausura significa validar todas as suas cadeias j vlidas e todas as cadeias formadas pela concatenao sucessivas dessas cadeias vlidas, com elas mesmas, at o infinito, ou seja, se a cadeia 0010 vlida na gramtica original, na gramtica com clausura, sero vlidas, alm da prpria cadeia 0010, as cadeias 00100010, 001000100010, 0010001000100010, ..., alm da cadeia vazia. O Conjunto Clausura de uma gramtica regular G1 (G1*) se d atravs da seguinte regra: 1 V = VG1 N; 2 = G1; 3 S0 = N; 4 4.1 N = S0G1 4.2 G1; 4.3 Acrescentar N em todas as produes da etapa 4.2 que no possuam variveis; O conjunto clausura de uma gramtica gera uma nova gramtica cuja linguagem a estrela de Kleene da gramtica anterior. Exemplo: G1 V = S, A, B, C = 0, 1 S0 = S S = 0S 0A A = 1B B = 000B C 00 C = 10 01 G1* V = S, A, B, C, N = 0, 1 S0 = S N = S S = 0S 0A A = 1B S B = 000B C 00S C = 10S 01S S

// Etapa 4.1

Etapa 4.2 e 4.3

Ateno: Para fazer o chamado Clausura Positivo, ou seja, o fecho positivo de uma gramtica regular, no precisa criar novas variveis, basta repetir o V, e S0 e seguir os passos: 4.1 G1; 4.2 Acrescentar S0G em todas as produes da etapa 4.1 que no possuam variveis; 4.3 G1; G1 V = S, A, B, C = 0, 1 S0 = S S = 0S 0A A = 1B B = 000B C 00 C = 10 01 (G1)+ V = S, A, B, C = 0, 1 S0 = S S = 0S 0A A = 1B S B = 000B C 00S C = 10S 01S S A = 1B B = 000B C 00 C = 10 01

Etapa 4.2

Etapa 4.3

42

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

6. GRAMTICAS SENSVEIS-AO-CONTEXTO As Gramticas Sensveis-ao-Contexto, de nvel 1 na Hierarquia de Chomsky e tambm chamadas de monotnicas ou no-contrteis, so o elo de ligao entre as gramticas livres-de-contexto e as gramticas irrestritas. Se as regras de substituio forem impostas restrio de que nenhuma substituio possa reduzir o comprimento da forma sentencial qual a substituio aplicada, temos uma gramtica Sensvel-ao-Contexto. Formalmente falando, toda gramtica Sensvel-ao-Contexto se, e somente se:

(V )+ & (V )*

= , onde | | | |

Em resumo, toda gramtica Sensvel-ao-Contexto se, e somente se, a quantidade de elementos do lado esquerdo de cada produo for menor ou igual do que a quantidade de elementos do lado direito de cada produo.

Separao de variveis das Gramticas Sensveis-ao-Contexto Nas gramticas Sensveis-ao-Contexto, a forma de contagem de variveis similar a forma aprendida para as demais gramticas. Nelas, cada expoente uma varivel, mesmo os expoentes que so interdependentes, como os expoentes variveis. Devemos isolar todos os elementos da uma linguagem, pois cada um desses elementos ser uma varivel. A forma de contagem continua sendo a mesma usada nas gramticas livres-de-contexto, ou seja, de fora para dentro, porm, os expoentes iguais que tiverem trs ou mais aparies, devem ser contados seqencialmente da esquerda para a direita, como nas gramticas regulares lineares direita. Os expoentes variveis com exatamente duas aparies, mantm a regra de contagem das gramticas livres-de-contexto. Exemplo 01: L = 0* 0N (10)* 0M 1M 22M 0* 0M 1 2N (1 1+ 0 2)* 0 0 1N 0/ N 2 e M 1 A E G H I J K F D C BS L P Q

Para se construir uma gramtica Sensvel-ao-contexto, devemos ter em mente que todas as regras de construo das gramticas livres-de-contexto sero utilizadas em todas as produes, exceto naquelas que fizerem parte da estrutura que possui trs ou mais aparies de um expoente varivel. Nestas estruturas, sero seguidos os trs passos seguintes: Ateno: Essa regra faz referncia sempre parte da linguagem que vai do primeiro expoente varivel ao ltimo expoente varivel que compe a parte dita sensvel da linguagem. A essa parte vamos chamar apenas de estrutura. 1 Replicao & Cadeia Mnima: Ser criada uma produo. Do lado esquerdo da produo ser colocada a primeira varivel da estrutura. Na replicao existir o alfabeto que compe a primeira varivel da estrutura, em quantidade igual ao coeficiente de seu expoente, seguido da varivel antes da igualdade, seguido direto das demais variveis que representam os expoentes variveis da estrutura, na quantidade do coeficiente de seus respectivos expoentes. A cadeia mnima ser
43

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

formada pelo alfabeto que compe a primeira varivel da estrutura, em quantidade igual ao coeficiente de seu expoente, seguido pelas demais variveis que compe a estrutura, em quantidade igual ao seu coeficiente, ou apenas uma apario, caso seja um elemento constante. 2 Ordem Alfabtica: Colocar em ordem alfabtica, pares de dois em dois, de todas as variveis que compe a estrutura. 3 Substituio: Para cada varivel da estrutura, que representa um elemento com expoente varivel, exceto o primeiro, existiro duas produes formadas da seguinte maneira: 3.1. Do lado esquerdo da igualdade existir o elemento do alfabeto que aparece, na linguagem, antes da varivel, seguido da prpria varivel. Do lado direito da igualdade, existir o elemento do alfabeto agora mencionado e o elemento do alfabeto representado pela varivel em questo. 3.2. Do lado esquerdo da igualdade existir o elemento do alfabeto que representa a varivel em questo, seguido da prpria varivel. Do lado direito da igualdade, existir duas vezes o elemento do alfabeto representado pela varivel em questo. Para os elementos constantes, sero criadas produes para cada um deles em separado, onde no existir prxima varivel. Como exemplo destes passos, vamos resolver a linguagem do exemplo 01 deste tpico. V = S, A, B, C, D, E, F, G, H, I, J, K, L, P, Q, = 0, 1, 2 S0 = S S=AL A = 0A B B = C0 C = C102 D D = 0D2 00E22 E = 10E F F = G1 G=0GHIIK 0HIIJK IH=HI JH=HJ KH=HK JI=IJ KI=IK KJ=JK 0H=01 1H=11 1I=12 2I=22 0K=00 2K=20 0K=00 // no necessria a duplicidade J = 0J =11 L=0P P = 1 P 11Q Q=0

// Passo 01

// Passo 02

// Passo 03

44

APOSTILA DE LINGUAGENS FORMAIS GRAMTICAS________

Prof. TENORIO

Importante pra caramba: Pergunta: possvel saber qual gramtica ser construda apenas olhando para a linguagem? A resposta SIM. Tudo depende da quantidade de expoentes variveis iguais, em cada lado da unio, que a linguagem possui. Caso exista apenas uma apario de cada um dos expoentes variveis da linguagem, dever ser construda uma gramtica regular; caso existam duas aparies de um mesmo expoente varivel, dever ser construda uma gramtica Livre-de-Contexto, caso existam trs ou mais expoentes variveis iguais, ento a gramtica Sensvel-ao-Contexto.

45

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

AUTMATOS A PILHA
Vimos que o poder dos Autmatos Finitos limita-se as Linguagens Regulares. Para representar as linguagens no-regulares recorremos a estruturas mais poderosas. Isto se deve ao fato dos autmatos no terem estruturas de memria para auxili-los, como as variveis nas gramticas. Para resolver este problema, pesquisadores da rea foram atrs de uma estrutura de memria, que pudesse ser vinculada aos autmatos finitos, a fim de que estes passassem representar tambm as linguagens no-regulares. Vrias estruturas de dados foram testadas e chegou-se a concluso de que a melhor estrutura para essa tarefa seria a pilha. As pilhas so estruturas baseadas no princpio LIFO (last in, first out), na qual os dados que foram inseridos por ltimo na pilha sero os primeiros a serem removidos. Da fuso dos Autmatos Finitos com a estrutura de dados Pilha, nasceram os Autmatos a Pilha. O poder dos autmatos a pilha engloba as linguagens regulares e tambm as no-regulares. O quadro a seguir mostra um comparativo de poder entre o autmato a pilha e as gramticas da Hierarquia de Chomsky. Gramticas Gramticas Regulares Gramticas Livres-de-Contexto Gramticas Sensveis-ao-Contexto Gramticas com Estrutura de Frase Autmatos Autmatos Finitos Autmatos a pilha, utilizando-se de apenas uma pilha Autmatos a pilha, utilizando-se de duas pilhas Autmatos a pilha, utilizando-se de trs ou mais pilhas

Importante pra caramba: Vale lembrar que o principal objetivo dos autmatos a validao de cadeias. Para uma cadeia ser vlida no autmato a pilha, no suficiente que a cadeia termine em um estado final. Para que uma cadeia possa ser validada em um autmato a pilha, duas condies devem ser obrigatoriamente satisfeitas: sua chegada em um estado final e a pilha estar vazia, no podendo sobrar ou faltar elementos.

1. CONCEITO O conceito de Autmato a Pilha, formalmente falando, uma stupla, formada por:

Esse conceito nos mostra que o autmato a pilha, nada mais do que o autmato finito, unido as estruturas de pilha.
46

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

Explicando os elementos que compe o autmato a pilha: Q um conjunto finito no vazio de estados do autmato pilha. um conjunto finito no vazio de smbolos de entrada ou tomos, denominado alfabeto de entrada do autmato pilha. Os smbolos de entrada so os elementos de que so formadas as cadeias de entrada submetidas ao autmato para aceitao; S0 denominado estado inicial do autmato pilha, e um elemento do conjunto Q. o estado em que se deve encontrar o autmato pilha imediatamente antes do incio do reconhecimento de uma cadeia de entrada (q0 Q); F um subconjunto do conjunto de estados Q do autmato, que contm todos os chamados estados finais ou estados de aceitao do autmato de pilha. Tais estados correspondem queles nos quais o autmato de pilha deve encerrar o reconhecimento de todas as cadeias de entrada que sejam sentenas da linguagem definida pelo autmato pilha. Nenhuma outra cadeia deve finalizar o autmato em qualquer destes estados; a chamada funo de transio do autmato pilha, e composta de um conjunto de produes que definem as regras de movimentao do autmato pilha. Esta funo mapeia o produto cartesiano E X (V {}) X P no produto cartesiano E X P*. Em palavras, dado um estado, um smbolo de entrada e um smbolo de pilha contido no topo da memria auxiliar, esta funo determina um novo estado do autmato e o novo contedo do topo da pilha (de comprimento qualquer); P um conjunto finito no vazio de smbolos da pilha, e forma o alfabeto da pilha. Os smbolos da pilha so os cdigos armazenados pelo autmato em sua memria auxiliar. Esta memria, no caso do autmato pilha, organizada na forma de uma pilha, ou seja, os ltimos dados armazenados so os primeiros a serem lidos da pilha, e vice-versa; Z0 um elemento do conjunto P, distinto dos demais pela conveno de que sua presena, no topo da pilha que implementa a memria do autmato, indica a ausncia de outros elementos na mesma. um marcador de pilha vazia (z0 P); 2. CONVENES Para facilitar o estudo e a construo dos autmatos a pilha, vamos conhecer algumas convenes adotadas pelos mais diversos autores. 1) A funo de produo ser representa em uma tabela, cujas linhas expressam o estado atual e o topo da pilha e as colunas, os elementos do alfabeto. 2) q0 ser sempre o estado inicial; 3) Existir apenas um estado final e este no ser o inicial e nem ter sada alguma; 4) Z0 ser sempre Z e estar sempre na base da pilha. No poder existir outro elemento Z na pilha e o ltimo comando de todo autmato a pilha ser desempilhar este Z;

47

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

3. DETERMINISMO

O conceito do determinismo em um autmato a pilha um pouco diferente do conceito de determinismo em um autmato finito. Um autmato a pilha dito Determinstico se, e somente se, para cada elemento do alfabeto exista, no mximo, uma transio de sada, de cada estado e cada elemento no topo da pilha, pertencente ao autmato, ou seja, um mesmo elemento do alfabeto, com um mesmo elemento no topo da pilha, no pode ter duas ou mais transies de sada de um mesmo estado, porm, no existe a obrigatoriamente dessa sada existir, ou seja, pode no haver sada de alguns estados em um autmato a pilha determinstico. Em relao ao poder, o autmato a pilha no-determinstico mais poderoso do que o autmato a pilha determinstico, ou seja, existem linguagens reconhecidas por um autmato a pilha nodeterminstico, que o autmato a pilha determinstico no capaz de resolver. Devido a essa diferena de poder, no possvel converter um autmato a pilha no-determinstico qualquer em um autmato a pilha determinstico, como feito com os autmatos finitos.

4. CONSTRUO DOS AUTMATOS A PILHA

Construir um Autmato a Pilha escrever toda sua stupla. Ao contrrio do Autmato Finito, a cadeia mnima no uma cadeia interessante para se construir um Autmato a Pilha, pois, as particularidades dos loops no so to simples de se verificar e requerem um pouco mais de cuidados. No existe uma regra para construo dos Autmatos a Pilha, porm, ao se deparar com uma linguagem qualquer que se queira criar um Autmato a Pilha, algumas dicas podem ser seguidas. Essas dicas remontam os seguintes passos: 1 Verificar se os elementos da linguagem esto dentro do alfabeto proposto; 2 Construir o autmato finito da linguagem, considerando os expoentes variveis como fechos. Fecho Estrela, se o valor nominal da varivel for 0; Fecho Positivo, se o valor nominal da varivel for 1; Fecho duplamente positivo (dois obrigatrios e um loop), se o valor da varivel for 2, e assim por diante). Para este passo importante verificar as formas de construo de um autmato finito no captulo 2 desta apostila; 3 Evidenciar uma cadeia no mnima, ou seja, uma cadeia onde os elementos variveis se replicam, ao menos, duas vezes; 4 Montar inicialmente a stupla, exceto a , com as informaes extradas do autmato construdo na fase 2; 5 Construir a , com base nas ligaes do autmato, tomando cuidado com os expoentes variveis da linguagem, pois nestes, e somente nestes, a pilha (memria auxiliar) deve sofrer alteraes;

48

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

A tabela da funo de transio do autmato a pilha constituda da seguinte maneira: Elementos do

Q x P Estado atual e Topo atual da pilha

Em cada cruzamento da tabela ser colocado o estado destino e o novo elemento do topo da pilha. Esse elemento do topo da pilha substituir o elemento da pilha que se encontra na coluna Q x P. Caso no se queira mexer na pilha, basta repetir o elemento a coluna Q x P, pois isso far com que o Autmato a Pilha substitua o elemento por ele mesmo, mantendo assim, a pilha constante. A idia do uso da memria auxiliar (pilha) serve apenas para os elementos que precisam ser contados, por isso, constantes e fechos no a utilizam. No escopo da apostila, s iremos trabalhar com linguagens livres-de-contexto, portanto s existir, na linguagem, o mximo de dois expoentes variveis iguais de cada lado da unio. Esses expoentes so os nicos elementos a usarem a pilha, e este uso se dar da seguinte maneira: o primeiro expoente varivel empilhar N elementos e o segundo expoente varivel, precisar desempilhar exatamente os N elementos empilhados anteriormente, pois, como j vimos, uma cadeia s ser vlida se chegar ao estado final com a sua pilha vazia, sem sobrar, nem faltar elementos.

49

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

MANDAMENTOS DO AUTMATO A PILHA Ateno: Nos exemplos mostrados nos mandamentos, foram omitidos os elementos da stupla, obrigatrios na construo dos autmatos a fim de simplificar as questes. Lembre-se de que na prova no ser tolerado a falta de algum elemento da stupla. Lema 1: Elementos Regulares. Os elementos constantes e fechos estrelas e positivos so tratados como se estivssemos construindo um autmato finito e NO alteram a memria auxiliar. Isto significa que os elementos obrigatrios mudam de estado e os no-obrigatrios no mudam, porm, na pilha, nada se altera; Exemplo: L = 01+01* Q = q0, q1, q2, q3, q4 = 0, 1 S0 = q0 F = q4 P = Z Z0 = Z Q x P 0 1 q0, Z q1, Z q1, Z q2, Z q2, Z q3, Z q2, Z q3, Z q3, Z q4,

Detalhamento: observe o elemento Z destacado na tabela. Como o primeiro zero da linguagem um elemento Regular (no caso, constante), o elemento colocado na coluna 0, apenas uma repetio do elemento da coluna Q x P. Lema 2: Elementos Livres-de-Contexto. No caso de aparecer dois elementos com expoentes variveis iguais, o primeiro empilha e o segundo, desempilha. Exemplo: L = 01N01N0 / N 1 Q = q0, q1, q2, q3, q4, q5, q6 = 0, 1 S0 = q0 F = q6 P = N, Z Z0 = Z Q x P 0 1 q0, Z q1, Z q1, Z q2, NZ q2, N q3, N q2, NN q3, N q4, q4, N q4, q4, Z q5, Z q5, Z q6,

Detalhamento: Para empilhar um elemento, na coluna do em questo, coloque o elemento que se quer empilhar ao lado do elemento que esteja na coluna Q x P. Para desempilhar, basta colocar o elemento na coluna do em questo. Ateno: Caso exista apenas uma apario de um expoente varivel, este deve ser tratado como Elemento Regular.

50

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

Lema 3: Elementos Livres-de-Contexto com valor nominal maior que 1. Neste caso, o valor nominal indicar quantas vezes precisarei mudar de estado nos elementos que alteram a pilha. Exemplo: L = 01N01N0 / N 3 Q x P 0 1 q0, Z q1, Z q1, Z q2, NZ q2, N q3, NN q3, N q4, NN q4, N q5, N q4, NN q5, N q6, q6, N q7, q7, N q8, q8, N q8, q8, Z q9, Z q9, Z q10,

Q = q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10 = 0, 1 S0 = q0 F = q10 P = N, Z Z0 = Z

Lema 4: Elementos Livres-de-Contexto compostos. Quando o expoente varivel englobar mais um elemento, apenas o ltimo elemento obrigatrio altera o valor da pilha, ou demais NO podem alterar a pilha. Exemplo: L = 0(10)N0(01+)N0 / N 1 Q = q0, q1, q2, q3, q4, q5, q6, q7, q8 = 0, 1 S0 = q0 F = q8 P = N, Z Z0 = Z Q x P q0, Z q1, Z q2, Z q3, N q4, N q5, N q6, N q6, Z q7, Z 0 q1, Z 1

q2, Z q3, NZ q4, N q2, N q5, N q6, q5, N q6, N q7, Z q8,

Importante pra caramba: Note bem o que acontece com o q6. Ele possui duas sadas 0 (zero), uma em direo ao q5 e outra em direo ao q7, porm isto no desqualifica o determinismo, ou seja, este autmato a pilha determinstico, pois q6 s ler o zero em direo ao q5, quando o topo da pilha for N e s ler o zero em direo ao q7, quando o topo da pilha for Z.

51

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

Lema 5: Vrios elementos Livres-de-Contexto. Quando existir mais de um o expoente varivel, basta seguir os demais lemas normalmente. Nada muda. Exemplo: L = 01N01M01M01N0 / N 1, M 1 Q x P q0, Z q1, Z q2, N q3, N q4, M q5, M q6, M q6, N q7, N q8, N q8, Z q9, Z

Q = q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10 = 0, 1 S0 = q0 F = q10 P = M, N, Z Z0 = Z

0 q1, Z

q2, NZ q3, N q2, NN q4, MN q5, M q4, MM q6, q6, q7, N q8, q8, q9, Z q10,

Lema 6: Unio. Quando, na linguagem, existir a unio, nada se altera. Basta iniciar todos os elementos do q0, assim como no autmato finito. Lembrando que teremos apenas um estado final. Exemplo: L = 1N01N 2N02N / N 1 Q = q0, q1, q2, q3, q4, q5, q6, q7 = 0, 1, 2 S0 = q0 F = q4 P = N, Z Z0 = Z Q x P 0 q0, Z q1, N q2, N q2, N q3, N q3, Z q5, N q6, N q6, N q7, N q7, Z 1 2 q1, NZ q5, NZ q1, NN q3, q3, q5, NN q7, q7,

q4,

q4,

Ateno: No caso de unio, lembrar sempre do Lema 9 do autmato finito, que tambm vale no autmato a pilha.

52

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

Lema 7: Autmato a Pilha No Determinstico. Caso parta, de algum estado, duas ou mais sadas iguais, tendo o mesmo elemento no topo da pilha, dizemos que o autmato a pilha nodeterminstico. Exemplo: L = (1N01N0)* 2N 0(0*1*2*)*0 2N / N 1 Q x P q0, Z q1, N q2, N q3, N q3, Z q4, Z q6, N q7, N q8, N q9, N q9, Z q5,

Q = q0, q1, q2, q3, q4, q5, q6, q7, q8, q9 = 0, 1, 2 S0 = q0 F = q5 P = N, Z Z0 = Z

0 q2, N

1 2 q1, NZ q6, NZ q1, NN q3, q3, q1, NN

q4, Z q5, q6, NN q7, N q9, q9, q7, N q7, N / q7, N q8, N

q5,

Ateno: Atentar para o fecho estrela geral (no lado esquerdo na unio) e para o qualquer coisa, no lado direito na unio. Esses elementos so feitos exatamente como no autmato finito, por isso, no possuem lemas especficos nos autmatos a pilha.

Lema 8: Elementos Livres-de-Contexto com coeficientes maiores que 1. No caso das variveis dos expoentes livres-de-contexto apresentarem coeficientes, esses coeficientes sero usados apenas no momento do empilhar e do desempilhar, no alternado, em nada, a seqncia dos estados do autmato a pilha. No momento do empilhar, sero empilhados, simultaneamente, C2 elementos na pilha, onde C2 o valor do coeficiente do desempilhar da varivel. E no momento de desempilhar, sero desempilhados, simultaneamente, C1 elementos, onde C1 o valor do coeficiente do empilhar da varivel. Exemplo: L = 015N013N0 / N 1 Q = q0, q1, q2, q3, q4, q5, q6 = 0, 1 S0 = q0 F = q6 P = N, Z Z0 = Z Q x P 0 1 q0, Z q1, Z q1, Z q2, NNNZ q2, N q3, N q2, NNNN q3, NNNNN q4, q4, NNNNN q4, q4, Z q5, Z q5, Z q6,

Detalhamento: Neste exemplo, C1 = 5 e C2 = 3, portanto, sero empilhados os elementos de 3 em 3 e desempilhados de 5 em 5. Atentar para a notao do empilhamento e do desempilhamento. Lembre-se que = .
53

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

Lema 9: Elementos Livres-de-Contexto com valor nominal igual a 0 (ZERO). Quando o valor nominal da varivel for igual a zero, deve-se construir o autmato a pilha considerando duas hipteses: a primeira, de o elemento ser vazio e a segunda, deste elemento no ser vazio. Exemplo: L = 014N01+015N0 / N 0 Q x P q0, Z q1, Z q1, N q2, Z q2, N q3, Z q3, N q4, Z q4, NNNN q5, Z

Q = q0, q1, q2, q3, q4, q5, q6 = 0, 1 S0 = q0 F = q6 P = N, Z Z0 = Z

0 1 q1, Z q2, Z q1, NNNNNZ q2, N q1, NNNNNN q3, Z q3, N q4, Z q3, Z q4, N q3, N q5, Z q4,

q6,

5. TRANSFORMAO DE AUTMATOS A PILHA

GRAMTICAS

LIVRES-DE-CONTEXTO

EM

Sempre que duas ou mais estruturas tiverem o mesmo poder, podemos converter uma na outra. Neste tpico, vamos demonstrar o algoritmo de converso de gramticas livres-de-contexto em autmatos a pilha. Neste algoritmo de transformao, o autmato a pilha resultante baseado na pilha e no na linguagem, como temos aprendido at aqui. Esta forma de descrever um autmato a pilha bem mais complexa, se o ponto de partida for a linguagem, porm, bem mais simples, se o ponto de partida for a gramtica. Esta nova forma de descrever o autmato a pilha s possvel devido a possibilidade de leitura, entre os elementos da cadeia, de elementos vazios. Por exemplo, a cadeia 01011 pode ser lida da seguinte maneira: 01011 sem que a informao contida da mesma seja alterada. Para fazer a converso, devemos seguir os seguintes passos: 1 Transformar a gramtica Livre-de-Contexto na forma normal de Greibach; 2 Os seis elementos iniciais do autmato a pilha sero: 2.1. Q = q0, q1, q2; 2.2. = G 2.3. S0 = q0; 2.4. F = q2; 2.5. P = Z, VG; 2.6. Z0 = Z; // Independente da linguagem, o autmato a pilha s ter trs estados; // Alfabeto do autmato a pilha o mesmo da gramtica; // O estado inicial do autmato a pilha ser sempre q0; // O nico estado final do autmato a pilha ser sempre q2; // O alfabeto de pilha ser sempre o Z e as variveis da gramtica; // Como nas convenes;

54

APOSTILA DE LINGUAGENS FORMAIS AUTMATOS A PILHA

Prof. TENORIO

3 A funo do autmato a pilha ser formada por trs partes: 3.1. (q0, Z, ) = { (q1, SZ) }; 3.2. As produes da gramtica na forma:

& X, Y V temos X = Y
geram transies no autmato a pilha da seguinte forma: (q1, X, ) = { (q1, Y) }; 3.3. (q1, Z, ) = { (q2, ) }; Exemplo: V= S, A, B, C, D = 0, 1, 2 S0 = S; S = 0S0 00A00 A = A1 B1 B = 0B 1B 2B C C = 01C C10 01D D = 01 102 Passo 01: V= S, A, B, C, D, E, F, G = 0, 1, 2 S0 = S; S = 0SE 0EAEE A = AF BF B = 0B 1B 2B C C = 0FC CFE 0FD D = 0F 1EG E = 0; F = 1; G = 2;

Passo 02: Q = q0, q1, q2; = 0, 1, 2 S0 = q0; F = q2; P = Z, S, A, B, C, D, E, F, G Z0 = Z;

Passo 03: Q x P 0 q0, Z q1, S q1, SE q1, EAEE q1, A q1, B q1, C q1, D q1, E q1, F q1, G q1, Z q1, B q1, FC q1, FD q1, F q1, 1 2 q1, SZ

q1, B

q1, AF q1, BF q1, B q1, C q1, CFE q1, q1,

q1, EG q1,

q2,

55

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

MQUINAS DE TURING

1. HISTRICO A computao digital, quando surgiu, um sculo aps Charles Babbage (26/12/1791 18/10/1871) ter projetado o primeiro computador analgico da histria (1837), no se mostrou atravs de uma feira de informtica ou em um laboratrio de algum cientista famoso de alguma universidade consagrada. A possibilidade de se construir um computador digital foi dada ao mundo atravs de um inusitado artigo, em um jornal de matemtica no ano de 1936. No momento, quase ningum percebera que a descoberta descrita naquele obscuro artigo iria conduzir a uma arrancada mundial no campo tecnolgico, embora seu jovem autor, na poca com 24 anos, j estivesse na busca de uma mquina que simulasse os processos humanos de conhecimento desde 1934. Esse autor foi Alan Turing, que se consagrou como um dos maiores matemticos do seu tempo quando fez antever aos seus colegas que era possvel executar operaes computacionais sobre a teoria dos nmeros (leia-se nmero binrios) por meio de uma mquina que tivesse embutidas as regras de um sistema formal. Um sistema formal uma espcie de "jogo" rigorosamente definido, que especifica regras para manipulao de smbolos. Apesar da maquina ser abstrata, por possui memria ilimitada, Turing usou seus conceitos para construir uma mquina fsica, com o objetivo de quebrar os cdigos secretos das comunicaes alems durante a II Guerra Mundial. Essa mquina ficou conhecida como Colossus e certamente salvou a vida de muitos soldados ingleses durante a guerra. Turing tambm responsvel por diversos conceitos que estudamos hoje na Cincia da Computao.

O Colossus

56

APOSTILA DE LINGUAGENS FORMAIS FORM MQUINAS DE TURING

Prof. TENORIO

2. CONCEITO As Mquinas de Turing so os autmatos mais potentes que estudaremos. Elas podem computar qualquer funo computvel, ou seja, executam quaisquer instrues de um computador, por mais moderno que ele seja. Num sentido preciso, uma Mquina de Turing Padro um modelo abstrato de um computador, que se atm apenas aos aspectos lgicos do seu funcionamento e no sua implementao fsica. Uma Mquina de Turing Padro pode simular o funcionamento de qualquer computador digital. Entretanto, mais fcil explicar r o que uma Mquina de Turing Padro apresentando-a apresentando como uma mquina realizada fisicamente. 2.1. Conceito Informal da Mquina de Turing Uma mquina de Turing consiste em: , que dividida em clulas, clula uma Uma fita infinita em ambas as direes (direita e esquerda), adjacente outra. Cada clula contm um smbolo de algum alfabeto finito. O alfabeto contm um smbolo especial branco (aqui escrito como ), , um delimitador (aqui escrito como ) e um ou mais smbolos adicionais. Assume-se Assume se que a fita arbitrariamente arbitrariame extensvel para a esquerda e para a direita, isto , a mquina de Turing possui tanta fita quanto necessrio para a computao. Assume-se Assume se tambm que clulas que ainda no foram escritas esto preenchidas com o smbolo branco. Um cabeote, que pode ler l e escrever smbolos na fita e mover-se se para a esquerda e para a direita. Um operador de estados, que armazena o estado da mquina de Turing. O nmero de estados diferentes sempre finito e h um estado especial denominado estado inicial com o qual o registrador de estado inicializado. Uma tabela de ao (ou funo de transio) que diz mquina que smbolo escrever, como mover o cabeote ('E' para esquerda e 'D' para direita) e qual ser seu novo estado, dados o smbolo que ele acabou acabou de ler na fita e o estado em que se encontra. Se no houver entrada alguma na tabela para a combinao atual de smbolo e estado ento a mquina pra.

Note que cada parte da mquina finita, finita porm, a quantidade de fita potencialmente ilimitada que d uma quantidade ilimitada de espao de armazenamento na mquina.

57

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

2.2. Conceito Formal da Mquina de Turing Formalmente falando, a Mquina de Turing uma nntupla, formada por:

3. CARACTERSTICAS DA MQUINA DE TURING PADRO

1 A mquina de Turing tem uma fita que ilimitada, em ambas as direes, permitindo qualquer nmero de movimentos para a direita (R) ou para a esquerda (L); 2 A mquina de Turing determinstica, no sentido de que define, no mximo, um movimento para cada configurao. O mesmo conceito do autmato a pilha; 3 No existe fita de entrada especial. Assumimos que o incio da fita tem o contedo especial. Alguns destes podem ser considerados entradas. Analogicamente, no existe nenhum dispositivo de sada. Sempre que a mquina pra, algum ou todo o contedo da fita pode ser visto como sada.

4. CONVENES 1) A funo de produo ser representa em uma tabela, cujas linhas expressam o estado atual e as colunas, os elementos do alfabeto. 2) 3) q0 ser sempre o estado inicial; Existir apenas um estado final e este no ser o inicial e nem ter sada alguma;

58

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

5. TESE DE CHURCH-TURING Na teoria da computao, a Tese de Church-Turing ou Tese de Church, assim nomeada em referncia ao seu criador, o professor Alonzo Church e o seu referencial, o matemtico Alan Turing, uma hiptese sobre a natureza de artefatos mecnicos de clculo, como computadores, e sobre que tipo de algoritmos eles podem executar. Geralmente assume-se que um algoritmo deve satisfazer os seguintes requisitos: O algoritmo consiste de um conjunto finito de instrues simples e precisas, que so descritas com um nmero finito de smbolos; O algoritmo sempre produz resultado em um nmero finito de passos; O algoritmo pode, a princpio, ser executado por um ser humano com apenas papel e lpis; A execuo do algoritmo no requer inteligncia do ser humano alm do necessrio para entender e executar as instrues;

Um exemplo de tal mtodo o algoritmo de Euclides para a determinao do mximo divisor comum de dois nmeros naturais. A noo de algoritmo intuitivamente clara mas no definida formalmente, pois no est claro o que quer dizer "instrues simples e precisas", e o que significa "inteligncia necessria para executar as instrues". Informalmente a tese enuncia que nossa noo de algoritmo pode ser formalizada (sob a forma de funes computveis) e que computadores podem executar esses algoritmos. Alm disso, qualquer computador pode, teoricamente, executar qualquer algoritmo, isto , o poder computacional terico de cada computador o mesmo e no possvel construir um artefato de clculo mais poderoso que um computador. A tese, de acordo com as palavras do prprio Turing, pode ser enunciada como: Toda funo que seria naturalmente considerada computvel pode ser computada por uma Mquina de Turing

Devido impreciso do conceito de uma "funo que seria naturalmente considerada computvel", a tese no pode ser nem provada nem refutada formalmente. J que no pode ser matematicamente demonstrada, a tese de Church-Turing pode ser considerada uma lei fsica. A tese, em palavras de Alonzo Church, pode ser enunciada como: Qualquer computao que pode ser efetuada por meios mecnicos, pode ser efetuada por uma Mquina de Turing padro. Em resumo: Qualquer programa de computador pode ser traduzido em uma mquina de Turing, e qualquer mquina de Turing pode ser traduzida para uma linguagem de programao de propsito geral; assim, a tese equivalente a dizer que qualquer linguagem de programao de propsito geral suficiente para expressar qualquer algoritmo.

59

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Argumentos que validam a tese:

5.1. Qualquer algoritmo que pode ser executado em mquina existente, tambm pode ser executado por uma mquina de Turing padro; 5.2. Ningum foi capaz de sugerir um problema solvel, pelo o que intuitivamente entendemos por um algoritmo, para o qual, um programa de mquina de Turing no possa ser escrito para ele; 5.3. Tm sido propostos modelos alternativos de computao mecnica, porm, nenhum deles mais poderosos do que o modelo da mquina de Turing padro;

Desde aquela poca muitos outros formalismos foram propostos para descrever a computabilidade efetiva, incluindo funes recursivas, o clculo lambda, mquinas de registros, sistemas de Post, lgica combinatria e algoritmos de Markov. Foi mostrado que todos esses sistemas computam essencialmente o mesmo conjunto de funes que as mquinas de Turing; sistemas como esses so chamados Turing completos. Como todas as diversas tentativas de formalizar o conceito de algoritmo levaram a resultados equivalentes, geralmente assume-se que a tese de Church-Turing correta. No entanto, a tese uma definio, e no um teorema, e portanto no pode ser provada. Ela poderia, no entanto, ser refutada se algum descobrisse um mtodo que fosse universalmente aceito como um algoritmo efetivo mas que no pudesse ser executado por uma mquina de Turing. No incio do sculo XX, matemticos freqentemente usaram o termo informal efetivamente computvel, ento foi importante achar uma boa formalizao do conceito. Matemticos modernos usam, em seu lugar, o termo bem-definido Turing-computvel (ou apenas computvel). J que a terminologia indefinida caiu em desuso, a questo de como defini-la agora menos importante.

6. O PROBLEMA DA PARADA Na teoria da computabilidade o problema da parada um problema de deciso2 que pode ser declarado informalmente da seguinte forma: Dado uma descrio de um programa e uma entrada finita, decida se o programa termina de rodar ou rodar indefinidamente, dada essa entrada.

Alan Turing provou em 1936 que um algoritmo genrico para resolver o problema da parada para todos pares programa-entrada possveis no pode existir. Dizemos que o problema da parada indecidvel nas Mquinas de Turing.

Um problema de deciso uma questo sobre um sistema formal com uma resposta do tipo sim-ou-no. Por exemplo, o problema: "dados dois nmeros x e y, y divisvel por x?" um problema de deciso. Ou ainda: "Dado um nmero inteiro x, x um nmero primo?". A resposta para esses problemas pode ser 'sim' ou 'no', e depende dos valores que as variveis assumem em cada instncia do problema.
60

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

7. CONSTRUO DA MQUINA DE TURING Como j vimos, as mquinas de Turing so capazes de executar todo e qualquer algoritmo existente. Para cada classe de algoritmo, existem formas diferentes de se construir uma mquina de Turing padro. Lembre-se que, construir uma mquina de Turing, significa descrever toda sua nntupla. A tabela da funo que compe a mquina de Turing composta, em sua primeira linha, pelos elementos do alfabeto de fita e em sua primeira coluna, pelos possveis estados atuais. Cada componente da tabela formado pelo prximo estado, pelo elemento do alfabeto de fita que ser gravado na fita e pelo movimento da mquina. Neste tpico, vamos estudar os dois tipos de mquinas de Turing mais importantes para a Teoria da Computao, so eles: 7.1 Mquinas de Turing como Reconhecedor de Linguagens Neste caso, a funo das mquinas de Turing a validao de cadeias em uma linguagem especfica, na prtica, verifica se um algoritmo est escrito de maneira correta em relao sintaxe da linguagem de programao. Para as linguagens regulares, uma forma simples de se descrever a mquina de Turing construir o autmato finito da linguagem, conforme demonstrado no mdulo 2 desta apostila. Em seguida, montar sua nntupla. Dica: em linguagens regulares, o cabeote de leitura s precisa fazer movimentos para a direita e jamais precisar alterar o contedo da fita. Exemplo: L = (0+1(01)+10)* 1 (0*1*)* 10* Depois de construir o autmato finito para esta linguagem chegamos seguinte mquina de Turing: Q = q0, q1, q2, q3, q4, q5, q6, q7, q8, q9 = 0, 1 S0 = q0 F = q7 F = 0, 1, , R = q0, q1, q2, q3, q4, q5, q6, q8, q9 = = Q \ F q0 q1 q2 q3 q4 q5 q6 q8 q9 0 1 q1, 0, R q8, 1, R q0, , R q1, 0, R q2, 1, R q3, 0, R q4, 1, R q3, 0, R q5, 1, R q6, 0, R q1, 0, R q7, , P q8, 0, R q8, 1, R q9, 1, R q9, 0, R q7, , P

Detalhamento: assim como no autmato a pilha, o elemento que est na tabela, substitui o elemento que est na fita. Neste caso, como j foi dito, nenhum elemento da fita precisou ser alterado, devido linguagem ser regular. Ateno: a mquina de Turing do exemplo No-Determinstica, devido ao estado q8 que possui duas sadas para o elemento 1 do alfabeto. Ateno 02: Toda e qualquer mquina de Turing possui a instruo q0, = q0, , R.
61

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Para as linguagens no-regulares necessrio garantir que a quantidade de elementos nos expoentes variveis esteja de acordo com o descrito na linguagem. Para que essa quantidade seja garantida necessrio que a mquina conte essas quantidades e verifique esse valor resultante da contagem. Uma forma de se contar elementos em uma mquina de Turing a tcnica da marcao dos valores. Marcar significa substituir o valor, presente na mquina de Turing, por um marcador, que ser um caractere qualquer que no faa parte do alfabeto da linguagem e obrigatoriamente, faa arte do alfabeto da fita. Imagine verificar a quantidade de elementos presentes em dois conjuntos A e B, sem usar os nmeros reais. Uma forma seria, por exemplo, pintar os elementos. Iniciamos pintando um elemento de A e logo em seguida, pintamos um elemento de B, ficamos nesse loop at que todos os elementos de A estejam pintados ou que no haja mais correspondentes em B para serem pintados. Da, basta fazer as verificaes: 1 Se foi pintado um elemento em A e no existia nenhum elemento a ser pintado em B, a quantidade de elementos de A maior do que os elementos de B; 2 Se todos os elementos de A j foram pintados e ainda existir, ao final do loop, elementos em B no pintados, significa que a quantidade de elementos de A menor do que a quantidade de elementos de B; 3 Se ao pintarmos o ltimo elemento em A, tambm for pintado o ltimo elemento em B, no mesmo loop, significa que a quantidade de elementos de A e B so iguais. Fazendo uma analogia deste exemplo, vamos construir uma mquina de Turing para a linguagem: L = 0N1N / N 1

Q = q0, q1, q2, q3, q4 = 0, 1 S0 = q0 F = q4 F = 0, 1, X, Y, , R = q0, q1, q2, q3 = =

Q \ F 0 1 X q0 q1, X, R q1 q1, 0, R q2, Y, L q2 q2, 0, L q0, X, R q3

Y q3, Y, R q0, , R q1, Y, R q2, Y, L q3, Y, R q4, , P

Detalhamento: Neste exemplo, fazendo uma analogia ao exemplo das pinturas de A e B, temos que X a cor com que pintamos (marcamos) os elementos 0 e Y a cor com que pintamos (marcamos) os elementos 1. Portanto, se ao final da execuo da mquina, sobrar elementos no marcados na fita, significa que a cadeia no vlida e no chegar ao estado final. O passo-a-passo da fita, com a cadeia 000111 de entrada (escolhida aleatoriamente uma cadeia no mnima) fica da seguinte maneira:

62

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING ... ... ... ... ... ... ... ... 0 X X X X X X X 0 0 0 X X X X X 0 0 0 0 0 X X X 1 1 Y Y Y Y Y Y 1 1 1 1 Y Y Y Y 1 1 1 1 1 1 Y Y

Prof. TENORIO ... ... ... ... ... ... ... ...

Note que, ao final da execuo, no sobrou nenhum elemento sem marcar, portanto a cadeia vlida, como podemos constatar tambm na linguagem.

7.2 Mquinas de Turing como Operador Algbrico Neste caso, a funo das mquinas de Turing a execuo de clculos matemticos. Esse tipo de mquina expressa exatamente o que acontece na U.L.A. (Unidade de Lgica e Aritmtica) em um computador. Para a construo dessas mquinas de Turing importante definir, anteriormente, a funo de cada estado na mquina. Essa funo depende do operador que est sendo usado na equao, da quantidade de variveis e da base dessas variveis (binria, decimal, etc.). Nenhum estado pode acumular funes, ou seja, cada estado ter uma nica funo dentro da mquina. Vamos ao exemplo 01. X2 + 1 / X Note que, neste exemplo, a base de X dois, ou seja, estamos trabalhando com a base binria (nmeros binrios). A soma de uma unidade ao um nmero binrio feita da seguinte forma: 1 Se o ltimo elemento for 0, basta que esse elemento se transforme em 1 para obtermos o resultado.

01101000100 +1 01101000101

2 Se o ltimo elemento for 1, este um passa a ser 0 e verificamos o elemento logo a sua esquerda. Esse passo feito at que se encontre um elemento 0 para que seja aplicado a regra anterior.

01101000111 +1 01101001000

63

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Com isso, verificamos as seguintes funes para cada estado. q0 = Encontrar o ltimo elemento da mquina; Como a maquina sempre inicia no delimitador e o que interessa para equao o ltimo elemento, precisamos de um estado para fazer o cabeote apontar para esse ltimo elemento. Lema 1: Para fazer uma mquina apontar para o ltimo elemento da Importante pra caramba cadeia, basta mover o cabeote de leitura para direita at que se encontre o branco de fita (). Da basta mover o cabeote uma nica vez para a esquerda e pronto, ele estar apontando para o ltimo elemento da cadeia. q1 = Substituir os elementos; Nesta equao, quando o elemento for 0, esse estado vai trocar esse 0 por 1 e desligar a mquina, pois o resultado j estar pronto. Caso encontre o elemento 1, esse estado vai substituir esse 1 por 0 e continuar sua busca por um elemento 0, para poder concluir sua execuo. q2 = Estado Final; Todas as mquinas de Turing tero um estado, cuja nica funo ser um estado final. Q \ F 0 1 q0 q0, 0, R q0, 1, R q0, , R q1, , L q1 q2, 1, P q1, 0, L q2

Q = q0, q1, q2 = 0, 1 S0 = q0 F = q2 F = 0, 1, , R = q0, q1 = =

Ateno: Nas mquinas de Turing como Operador Algbrico, o alfabeto da mquina () exatamente a base das variveis. O alfabeto da fita (F) pode variar bastante. Importante pra caramba de estado. Lema 2: Sempre que um estado conclui sua funo, a mquina troca

O passo-a-passo desta mquina descrito abaixo.


... ... ... ... ... ... 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 1 1 ... ... ... ... ... ...

Para os prximos exemplos, com o objetivo de facilitar a construo das mquinas, vamos trabalhar com a base unria. Base unria: {1, 11, 111, 1111, 11111, 111111, 1111111, 11111111, 111111111, ...}
64

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Exemplo 02: X1 + Y1 / X, Y Antes de definir as funes de cada estado, vamos observar a montagem da fita e o seu passo-apasso. Na fita, dever existir um separador, para que possamos identificar onde termina o X e onde comea o Y. X e Y na fita sem o separador
... 1 1 1 1 1 1 ... ...

X e Y na fita com o separador


1 1 1 1 + 1 1 ...

Sem o separador, impossvel definir os valores de X e de Y. Quando o separador colocado, verificamos que X = 4 e Y = 2. Lembramos que esses valores foram escolhidos de maneira aleatria dentro do universo dos nmeros naturais, pois a mquina deve executar a operao para quaisquer valores de X e Y dentro do conjunto dos nmeros naturais. Tambm foi escolhido o sinal de + como separador apenas como uma forma ilustrativa, podendo ser utilizado qualquer smbolo que se queira. Vejamos o passo a passo da mquina:
... ... ... ... ... ... 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... ... ... ... ... ...

Desse passo-a-passo, podemos definir a funo de cada estado da mquina. q0 = localizar o separador e transformar o mesmo em 1; q1 = apontar para o ltimo elemento da cadeia; q2 = apagar o ltimo elemento da cadeia; q3 = estado final. Importante pra caramba Lema 3: Nas mquinas de Turing como Operador Algbrico, sempre que um estado encontrar um separador, ele deve concluir imediatamente sua funo e trocar de estado. Vamos mquina de Turing resultado do exemplo: Q = q0, q1, q2, q3 =1 S0 = q0 F = q3 F = 1, +, , R = q0, q1, q2 = = Q \ F 1 + q0 q0,1 , R q1, 1, R q0, , R q1 q1, 1, R q2, , L q2 q3, , P q3

Note, base unria, alfabeto da mquina igual a 1.


65

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Exemplo 03: X1 Y1 / X > Y & X, Y Neste exemplo vamos usar o sinal de como separador. Para definir a funo de cada estado, vamos analisar o passo-a-passo da mquina:
... ... ... ... ... ... 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X 1 1 X X X 1 Y Y Y Y 1 1 1 Y Y ... ... ... ... ... ...

Com esse passo-a-passo, definimos as funes de cada estado. q0 = Localiza o separador; a primeira funo da mquina substituir o primeiro 1 depois do separador por Y, porm est no pode ser a funo do q0, pois, como j foi dito, ao encontrar um separador a mquina deve trocar de estado (Lema 3). q1 = Trocar um elemento 1 depois do separador, por Y; q2 = Localizar o separador; q3 = Trocar um elemento 1 antes do separador, por X; q4 = Substituir tudo que no for elemento 1 por branco de fita (); q5 = Estado final; Eis a mquina de Turing: Q = q0, q1, q2, q3, q4, q5 =1 S0 = q0 F = q5 F = 1, , X, Y, , R = q0, q1, q2, q3, q4 = = Q\F q0 q1 q2 q3 q4 q5 1 X Y q0, 1, R q1, , R q0, X, R q0, , R q2, Y, L q1, Y, R q4, , L q3, , L q2, Y, L q0, X, R q3, X, L q5, 1, P q4, , L q4, , L q4, , L

66

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Exemplo 04: 2 X1 / X Neste exemplo, no precisaremos do separador, pois s existe uma varivel a ser executada. Lembre-se que qualquer mquina de Turing pode ser construda de maneiras diferentes. Nesta apostila, estou mostrando exemplos da maneira que julgo ser mais fcil para o aprendizado dos alunos. Vamos ao passo-a-passo:
... ... ... ... ... ... ... ... ... ... ... 1 X X X X X X X 1 1 1 1 X X X X X 1 1 1 1 1 1 X X X 1 1 1 1 1 1 1 1 X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... ... ... ... ... ... ... ... ... ... ...

Desse passo-a-passo, podemos definir a funo de cada estado da mquina. q0 = transformar todos os elementos 1 da fita em X; q1 = transformar um X em 1; q2 = acrescentar um no final; q3 = estado final. Eis a mquina de Turing: Q \ F 1 X q0 q0, X, R q0, , R q1, , L q1 q1, 1, L q2, 1, R q3, , P q2 q2, 1, R q1, 1, L q3

Q = q0, q1, q2, q3 =1 S0 = q0 F = q3 F = 1, X, , R = q0, q1, q2 = =

67

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Exemplo 05: 3 X1 + 2 / X Neste caso, vale a precedncia de operadores, ou seja, primeiro realizamos a multiplicao e somente aps a concluso desta multiplicao, realizaremos a soma. Mais uma vez, no precisaremos de separador, pois existe apenas uma varivel a ser processada. Vamos ao passo-apasso:
... ... ... ... ... ... ... ... ... ... ... ... 1 X X X X 1 1 1 1 1 1 1 1 X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... ... ... ... ... ... ... ... ... ... ... ...

Desse passo-a-passo, podemos definir a funo de cada estado da mquina. q0 = transformar todos os elementos 1 da fita em X; q1 = transformar um X em 1; q2 = acrescentar um no final; q3 = acrescentar um no final; q4 = acrescentar um no final; q5 = acrescentar um no final; q6 = estado final; Importante pra caramba Lema 4: Nas multiplicaes, deve-se acrescentar 1s (uns) no final da fita. A quantidade de uns exatamente igual ao coeficiente de X 1. Importante pra caramba Lema 5: Para acrescentar 1s no final da fita, deve-se saber a quantidade exata destes 1s e declarar um estado para cada 1 que se quer colocar, ou seja, caso queira colocar quatro 1s no final da fita, deve declarar quatro estados diferentes para realizar esta tarefa, um estado para cada 1 a ser acrescentado. Detalhamento: Os estados q0 e q1 possuem as mesmas funes do exemplo anterior, isto por que se trata de uma multiplicao e a regra pode ser aplicada a todos os casos semelhantes. Como o coeficiente de X 3, devemos acrescentar dois elementos no final a fita (Lema 4), para isto utilizaremos os estados q2 e q3 (Lema 5). Os estados q4 e q5 resolvem a soma da equao (neste exemplo a soma de dois elementos) acrescentando dois 1s no final da fita. Essa soma ser iniciada quando a multiplicao estiver resolvida, ou seja, quando o q1 encontrar o delimitador.
68

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Vamos mquina de Turing do exemplo 5, baseando-se nas funes de cada estado: Q \ F q0 q1 q2 q3 q4 q5 q6 1 X q0, X, R q0, , R q1, , L q1, 1, L q2, 1, R q4, , R q2, 1, R q3, 1, R q1, 1, L q4, 1, R q5, 1, R q6, 1, P

Q = q0, q1, q2, q3, q4, q5, q6 =1 S0 = q0 F = q6 F = 1, X, , R = q0, q1, q2, q3, q4, q5 = =

Exemplo 06: 5 X1 3 / X > 0 & X Este exemplo bastante similar ao anterior. Vamos verificar esta afirmao comparando a funo de cada estado de ambos os exemplos, mas antes, vamos verificar o passo-a-passo da mquina:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

1 X X X X X X 1 1 1 1 1 1 1 1 1 1

1 X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

69

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Com base neste passo-a-passo, podemos definir a funo de cada estado da mquina. q0 = transformar todos os elementos 1 da fita em X; q1 = transformar um X em 1; q2 = acrescentar um no final; q3 = acrescentar um no final; q4 = acrescentar um no final; q5 = acrescentar um no final; q6 = aponta para o ltimo elemento da fita; q7 = elimina o ltimo 1 da fita; q8 = elimina o ltimo 1 da fita; q9 = elimina o ltimo 1 da fita; q10 = estado final; Importante pra caramba Lema 6: Para eliminar o ltimo elemento, primeiro devemos localizlo e somente depois elimin-lo. Neste caso, usa-se um estado apenas para localizar e outro para eliminar. Um nico estado NO pode localizar e eliminar o ltimo elemento ao mesmo tempo. Importante pra caramba Lema 7: Para subtrair 1s no final da fita, deve-se saber a quantidade exata destes 1s e declarar um estado para cada 1 que se quer eliminar, ou seja, caso queira eliminar quatro 1s no final da fita, deve declarar quatro estados diferentes para realizar esta tarefa, um estado para cada 1 a ser apagado. Este ltimo lema semelhante ao lema 5. Detalhamento: Os estados q0 e q1 possuem as mesmas funes do exemplo anterior, isto por que se trata de uma multiplicao e a regra pode ser aplicada a todos os casos semelhantes. Como o coeficiente de X 5, devemos acrescentar quatro elementos no final a fita (Lema 4), para isto sero utilizados os estados q2, q3, q4 e q5 (Lema 5). O estado q6, serve apenas para localizar o ltimo 1 da fita (Lema 6) e os estados posteriores iro eliminar a quantidade de 1s necessria, neste exemplo sero trs elementos ( 3 da equao), portanto precisaremos dos estados q7, q8 e q9 (Lema 7). Vamos mquina de Turing deste exemplo, baseando-se nas funes de cada estado:

Q = q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10 =1 S0 = q0 F = q10 F = 1, X, , R = q0, q1, q2, q3, q4, q5, q6, q7, q8, q9 = =

Q \ F q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10

1 q0, X, R q1, 1, L q2, 1, R

q6, 1, R q8, , L q9, , L q10, , P

q0, , R q1, , L q2, 1, R q6, , R q3, 1, R q4, 1, R q5, 1, R q1, 1, L q7, , L X

70

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

8. VARIAES DA MQUINA DE TURING PADRO Com o objetivo de aumentar a velocidade das Mquinas de Turing, algumas variaes em sua construo podem ser propostas. Vejamos as mais comuns:

8.1. Mquina de Turing com opo de permanncia: Nesta variao, a mquina de Turing passa a ter os seguintes movimentos: Direita (R), Esquerda (L), Parada (P) e Imobilidade (S), em relao ao cabeote de leitura, sendo que o S, representa uma mudana de estado e/ou gravao de elementos na fita, sem a necessidade de movimentar o cabeote ou finalizar a execuo da mquina;

8.2. Mquina de Turing com fita semi-infinita: Neste caso, a fita, que ilimitada em ambas as direes na mquina de Turing padro, passa a ter uma fita ilimitada somente direita e a primeira posio o delimitado. Note que no houve reduo no tamanho da fita;

8.3. Mquina de Turing Off-line: uma Mquina de Turing com duas fitas, sendo uma fita de entrada, onde fica a cadeia a ser testada, e onde a informao no pode ser alterada e a outra fita onde so gravadas as modificaes e a sada da execuo da mquina;

71

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

8.4 Mquinas de Turing com fitas Mltiplas: a mquina composta por duas ou mais fitas. Cada fita possui seu prprio cabeote de leitura, porm, todos os cabeotes esto ligados a um mesmo operador de estados (unidade de controle);

8.5. Mquinas de Turing Multidimensional (3D): uma mquina que possui um nico cabeote de leitura, ligado a um nico operador de estados, com uma nica fita, porm, a fita infinita em todas as direes 3D, ou seja, ilimitada para a esquerda, para a direita, para cima, para baixo, para frente e para trs, sendo que o cabeote possui todos estes movimentos de mquina (R, L, U, D, F, A);

8.6. Mquinas de Turing No-Determinsticas: a mquina de Turing, que em algum momento, a funo Q x F resulta em dois ou mais trios Q x F x MM; 8.7. Mquina de Turing Mista: a mquina de Turing, composta por duas ou mais variaes da mquina de Turing padro; Ateno: Nenhuma variao da Mquina de Turing padro aumenta o PODER da mquina, apenas aumenta sua velocidade;
72

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

9. MQUINA DE TURING UNIVERSAL Toda Mquina de Turing processa uma certa funo computvel parcial a partir de uma cadeia formada pelos smbolos do alfabeto. Neste sentido, ela se comporta como um computador com um programa fixo. No entanto, como Alan Turing descreveu, podemos codificar a funo de transio de qualquer mquina de Turing em uma cadeia de smbolos, como veremos no ltimo tpico deste captulo. Portanto, podemos tentar construir uma mquina de Turing que espera em sua fita uma cadeia descrevendo a funes de transio seguida por uma cadeia descrevendo a fita de entrada, e ento computa a fita que a mquina de Turing codificada teria computado. Como Turing mostrou, tal mquina de Turing de fato possvel e, como capaz de simular outras mquinas de Turing, ela chamada de mquina de Turing universal. Com essa codificao de funes de transio como cadeias, torna-se possvel, a princpio, que mquinas de Turing respondam questes sobre o comportamento de outras mquinas de Turing. Muitas dessas questes, no entanto, so indecidveis, o que significa que a funo em questo no pode ser calculada por nenhuma mquina de Turing. Por exemplo, Turing mostrou em seu artigo original que o problema de determinar se uma mquina de Turing em particular vai parar para uma entrada dada (ou para qualquer entrada), conhecido como Problema da parada, indecidvel. O teorema de Rice mostra que qualquer questo no-trivial sobre o comportamento ou sada de uma mquina de Turing indecidvel. Se expandirmos a definio para incluir qualquer mquina de Turing que simule algum modelo computacional Turing-completo (e no apenas mquinas de Turing que simulam diretamente outras mquinas de Turing), ento uma mquina de Turing universal pode ser bem simples, usando apenas alguns estados e alguns smbolos. Por exemplo, apenas 2 estados so necessrios, uma vez que uma mquina universal 218 (com 2 estados e 18 smbolos) conhecida. Uma lista completa das menores mquinas de Turing universais conhecidas : 218, 310, 46, 55, 74, 103, 222. Elas simulam um modelo computacional chamado tag systems. Uma mquina de Turing universal Turing-completa. Ela pode calcular qualquer funo recursiva, decidir qualquer linguagem recursiva e aceitar qualquer linguagem enumeravelmente recursiva. De acordo com a tese de Church-Turing, os problemas solucionveis por uma mquina de Turing universal so exatamente aqueles problemas solucionveis por um algoritmo ou um procedimento efetivo de computao, para qualquer definio razovel destes termos. Em resumo, uma Mquina de Turing Universal a mquina de Turing reprogramvel, ou seja, a Mquina de Turing que gera Mquinas de Turing. A nntupla da Mquina de Turing Universal definida por: Q = q0, q1, q2, ..., qn = ASC II S0 = q0 F = qn R = q0, q1, ..., q(n-1) F = ASC II Delimitador = Branco de Fita = = esquema a seguir:

73

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

10. BINARIZAO DAS MQUINAS DE TURING Como vimos anteriormente, qualquer computao realizada pelas mquinas mais modernas, pode ser processada por uma Mquina de Turing padro. Vejamos agora, como converter uma Mquina de Turing padro em uma seqncia de nmeros binrios, provando definitivamente, que qualquer algoritmo nada mais do que uma seqncia binria (energia sim energia no) dentro do hardware. Para que possamos realizar essa tarefa, vamos seguir os seguintes passos:

1 Completar os espaos vazios da mquina com paradas em um estado no-final (vamos convencionar que esse estado no-final sempre ser o q0);

2 Criar a legenda da seguinte maneira: 2.1 Estados: q0 = 0 q1 = 10 q2 = 110 q3 = 1110 q4 = 11110 q5 = 111110 ... qn = n-uns // 0 2.2 Alfabeto de Fita: F1 = 0 F2 = 10 F3 = 1110 F4 = 11110 F5 = 111110 F6 = 1111110 2.3 Movimentos da mquina (esses elementos so sempre padronizados): R = 110 L = 1110 P = 11110

3 Escrever a quantidade de estados e de alfabeto de fita, em binrio, usando a mesma quantidade de bits, tanto quanto forem necessrios, sempre mltiplos de 2;

4 Converter os comandos da mquina, em binrio, usando a legenda, iniciando pela primeira coluna.

74

APOSTILA DE LINGUAGENS FORMAIS MQUINAS DE TURING

Prof. TENORIO

Para um melhor entendimento, vamos a um exemplo. Binarizar a mquina de Turing abaixo: Q \ F 0 1 q0 q0, 0, R q0, 1, R q0, , R q1, , L q1 q2, 1, P q1, 0, L q2

Q = q0, q1, q2 = 0, 1 S0 = q0 F = q2 F = 0, 1, , R = q0, q1 = = Passo 1: Q = q0, q1, q2 = 0, 1 S0 = q0 F = q2 F = 0, 1, , R = q0, q1 = = Passo 2: Estados: q0 = 0 q1 = 10 q2 = 110

Q \ F 0 1 q0 q0, 0, R q0, 1, R q0, , R q1, , L q1 q2, 1, P q1, 0, L q0, , P q0, , P q2 q0, 0, P q0, 1, P q0, , P q0, , P

Alfabeto de Fita 0=0 1 = 10 = 110 = 1110

Movimentos da Mquina: R = 110 L = 1110 P = 11110

Passo 3: Existem trs estados e quatro alfabetos de fita, em binrio de 8 bits, esses nmeros (3 e 4) ficam assim: 00000011 e 00000100 Passo 4: 00110 1101011110 0011110 010110 1001110 01011110 0110110 011011110 011011110 1011101110 0111011110 0111011110 Resultado final: 00000011000001000011011010111100011110010110100111001011110011011001101111001101 1110101110111001110111100111011110 Ateno: Note que, se desconsiderarmos os elementos iniciais que representam a quantidade de estados e de alfabetos de fita, cada comando da mquina limitado por uma seqncia de trs zeros. E assim, terminamos todo o contedo programado para a disciplina. Aprendeu? Se a resposta for sim, voc est de parabns. Se a resposta for no: Que Pena!
75

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

REFERNCIAS BIBLIOGRFICAS
Livros: ACILY, Benedito Melo e BEDREGAL, Benjamn Ren Callejas. Notas de Aula de Teoria da Computao. UFRN DIMAP, 1999. DIVERIO, Tiaraj Asmuz e MENEZES, Paulo Blauth. Teoria da Computao. Sagra Luzzatto, Porto alegre, 2000. HOPCROFT John E.; MOTWANI, Rajeev e ULLMAN Jeffrey D. Introduo Teoria dos Autmatos, Linguagens e Computao. Campus, So Paulo, 2002. MENEZES, Paulo Blauth. Linguagens Formais e Autmatos. Sagra Luzzatto, Porto alegre, 2002. PAPADIMITRIOU, Christos H. e LEWIS Harry R. Elementos da Teoria da Computao. Bookman, Porto Alegre, 2000. PENROSE, Roger. A Nova Mente do Rei: Computadores, Mentes e as Leis da Fsica. Campus, Rio de Janeiro, 1993. RAMOS, Marcus Vincius Midena; JOS NETO, Joo e VEGA, talo Santiago. Linguagens Formais. Bookman, Porto Alegre, 2009.

Apostilas de professores: UNICAP Universidade Catlica de Pernambuco Prof. Wilson Rosa de Oliveira Junior

Site importante: Software da disciplina: http://www.din.uem.br/yandre/sctmf/

76

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

ANEXOS
1. TABELA ASCII Cd 0 3 Caractere NULL (nulo) ETX (End of TeXt / fim de texto) ACK (ACKnowledge / confirmao, entendido) HT (Horizontal Tab / Tabulao horizontal) FF (Form Feed / Alimentao de formulrio) SI (Serial In / Entrada Serial) (Shift In / deslocamento para dentro) DC2 (Device Control 2 / controle de dispositivo2) NAK (Negative AcKnowledge / confirmao negativa) CAN (Cancel / cancelamento) ESC (ESCape / escape) RS (Request to Send, Record Separator / requisio de envio, separador de registro) Cd 1 4 Caractere Cd Caractere SOH (Start of Heading STX (Start of TeXt / 2 / Incio de cabealho) Incio de Texto) EOT (End Of ENQ (ENQuiry / Transmission / fim de 5 inquirio, consulta) transmisso) BEL (BELL, BEEP / Campainha) 8 BS (Backspace / retorno de 1 caractere) VT (Vertical Tab / Tabulao vertical) SO (Serial Out / Sada Serial) (Shift Out / deslocamento para fora) DC1/XON (Device Control1/controle de dispositivo1) DC4 (Device Control 4 / controle de dispositivo4) ETB (End Transm. Block/bloco de fim de transmisso) SUB (SUBstitute, substituir) GS (Group Separator / separador de grupo)

12

LF (Line Feed / 10 alimentao, mudana de linha) CR (Carriage Return / 13 retorno ao inicio da linha) DLE (Data Link 16 Escape / escape de conexo) DC3/XOFF (Device 19 Control3/controle de dispositivo3) 22 SYN (SYNchronous Idle / espera sncrona)

11

14

15

17

18

20

21

23

24 27

EM (End of Media / 25 Fim do meio ou mdia) FS (File Separator / 28 Separador de arquivo) US (Unit Separator / separador de unidade)

26 29

30

31

77

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

Cd Carac 32 <espao> & 38 , 44 2 50 8 56 > 62 D 68 J 74 P 80 V 86 \ 92 b 98 h 104 n 110 t 116 z 122 128 134 140 146 152 158 164 170 176 182 188 194 200 206 212 218 224 230 236 242 248 254

Cd Carac Cd Carac Cd Carac Cd Carac Cd Carac ! " # $ % 33 34 35 36 37 ' ( ) * + 39 40 41 42 43 . / 0 1 45 46 47 48 49 3 4 5 6 7 51 52 53 54 55 9 : ; < = 57 58 59 60 61 ? @ A B C 63 64 65 66 67 E F G H I 69 70 71 72 73 K L M N O 75 76 77 78 79 Q R S T U 81 82 83 84 85 W X Y Z [ 87 88 89 90 91 ] ^ _ ` a 93 94 95 96 97 c d e f g 99 100 101 102 103 i j k L m 105 106 107 108 109 o p q R s 111 112 113 114 115 u V w X y 117 118 119 120 121 { | } ~ 123 124 125 126 127 <delete> 129 130 131 132 133 135 136 137 138 139 141 142 143 144 145 147 148 149 150 151 153 154 155 156 157 159 160 161 162 163 165 166 167 168 169 171 172 173 174 175 177 178 179 180 181 183 184 185 186 187 189 190 191 192 193 195 196 197 198 199 201 202 203 204 205 207 208 209 210 211 213 214 215 216 217 219 220 221 222 223 225 226 227 228 229 231 232 233 234 235 237 238 239 240 241 , 243 244 245 246 247 . 249 250 251 252 253 255

78

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

2. OS MESTRES Quem so os maiores contribuintes para a formulao da Teoria da Computao? Eis a resposta.

Alan Mathison Turing 23/06/1912 07/06/1954

Alonzo Church 14/06/1903 08/11/1995

Sheila A. Greibach John Backus ? / ? / 1939 31/12/1924 17/03/2007

John Edward Hopcroft 07/10/1939

Peter Naur 25/10/1928

Avram Noam Chomsky 07/12/1928

Stephen Cole Kleene 05/01/1909 25/01/1994

Andrei Andreyevich Markov David Hilbert Emil Leon Post 04/05/1821 26/11/1894 23/01/1862 14/02/1943 11/02/1897 21/04/1954

Kurt Friedrich Gdel 28/04/1906 14/01/1978

79

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

John von Neumann Jacques Herbrand 28/12/1903 08/02/ 1957 12/02/1908 27/07/1931

Euclides de Alexandria 360 a.C. 295 a.C

Charles Babbage 26/12/1791 18/10/1871

Augusta Ada King (Condessa de Lovelace) 10/12/1815 27/11/1852

Pnini (de Gandhara) 520 a.C 460 a.C

Quais alunos da disciplina vo completar esta pgina?

80

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

3. ATIVIDADE SOBRE AUTMATOS FINITOS O aluno deve fazer um programa que leia um autmato (sua quntupla) a partir de um arquivo texto e possibilite ao usurio fornecer entradas a esse autmato de maneira que o programa informe se a cadeia de entrada aceita ou no. O arquivo texto com um autmato qualquer ser levado pelo professor e dever ser utilizado pelo programa. O programa NO deve ter um autmato em seu algoritmo, j que o mesmo ser lido a partir do arquivo. ATENO: O VAZIO DEVE SER CONSIDERADO PELO SEU PROGRAMA. Documentos a serem entregues: 1. Cdigo Fonte; 2. Arquivo Executvel; 3. Folha com o nome da equipe e linguagem de programao utilizada; 4. Compilador utilizado; Avaliao: - Apresentao (Resposta precisa, rpida e correta): 3,0 Pontos - Corretude: 2,0 Pontos - Exerccios entregues: 1,0 Ponto Desenvolvimento do Trabalho: Linha 1: Quantidade de Estados (Mximo de 9) Linha 2: Alfabeto (Mximo de 2) Linha 3: Estado Inicial Linha 4: Estados Finais (Mximo de 9) Linha 5: Funo no formato: Estado_de_Origem Alfabeto Estado_de_Destino O exemplo abaixo de um autmato que aceita todas as cadeias que iniciem em 10: 4 01 0 2 003 011 102 113 202 212 303 313

81

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

4. ATIVIDADE SOBRE MQUINAS DE TURING O aluno deve fazer um programa que leia um nmero binrio a partir de um arquivo texto. Transforme este nmero binrio em uma Mquina de Turing seguindo as regras de converso e execute a Mquina de Turing mediante entradas digitadas pelo usurio do software durante sua execuo. O arquivo texto com um nmero binrio qualquer ser levado pelo professor e dever ser utilizado pelo programa. O programa NO deve ter uma Mquina de Turing em seu algoritmo, j que o mesmo ser gerado a partir do nmero binrio lido do arquivo. ATENO: A FITA BRANCA DEVE SER CONSIDERADA PELO SEU PROJETO. Documentos a serem entregues: 1. Cdigo Fonte; 2. Arquivo Executvel; 3. Folha com o nome da equipe e linguagem de programao utilizada; 4. Compilador utilizado: (apenas caso o aluno no utilize os compiladores constantes neste site). Avaliao: Apresentao (Resposta precisa, rpida e correta): 3,0 Pontos Corretude: 2,0 Pontos Exerccios entregues: 1,0 Ponto

Exemplo de arquivo: 00011001000011011010111100011110010110100111001011110011011001101111001101111010 1110111001110111100111011110

ALGORITMO DA MQUINA DE TURING Type R register: Est : integer; Alf : integer; MM: char; End; Ind : integer; Valor: string Val: integer; Qtdest: integer; Qtdalf: integer; I,j : integer; aux: char Funo : array [15,15] of R; Fita: Array [100] of byte; Pos: integer: {Estados} {Alfabeto da fita} {Movimentos da Mquina}

{Valivel ndice do bit do arquivo} {Valores em binrio} {Valores em Decimal} {Quantidade de estados} {Quantidade de elementos do alfabeto da fita} {Variveis Auxiliares} {Representao da fita} {Posio da fita}
82

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

Estatual, alfatual, mmatual Estfinal;

{Valores atuais da mquina de Turing} {Estado final}

Function lerum; {Funo que l um nico bit do arquivo e aponta ao prximo} Function bindec (binrio); {Funo que converte um binrio em decimal} Function BinEst; {Funo que converte o binrio em um estado use CASE} Function BinAlf; {Funo que converte o binrio em um alfabeto da fita use CASE} Function BinMM; {Funo que converte o binrio num movimento da mquina: R,L,P} Function inifita; {Funo que inicializa a fita} Begin Abrir Arquivo; Valor := ; {Calcula a quantidade de estados} For i:= 1 to 4 do Begin Valor := Concat (Valor, lerum); End; Qtdest := bindec (valor); Valor := ; {Calcula a quantidade do Alfabeto da fita} For i:= 1 to 4 do Begin Valor := Concat (Valor, lerum); End; Qtdalf := bindec (valor);

For I := 0 to Qtdest 1 do For j := 0 to Qtdalf 1 do Begin Valor := ; Repeat Aux := lerum; Valor := Concat (Valor, Aux) Until Aux = 0; Funo [i,j].est := BinEst (valor); Valor := ; Repeat Aux := lerum; Valor := Concat (Valor, Aux) Until Aux = 0; Funo [i,j].alf := BinAlf (valor);

83

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

Valor := ; Repeat Aux := lerum; Valor := Concat (Valor, Aux) Until Aux = 0; Funo [i,j].mm := Binmm (valor); End; End; Inifita; Write (Digite a fita:); Readln (FITA); Estatual := 0; AlfAtual := Delimitador; Mmatual := R; Pos := 1; While mmatual <> P do Begin Alfatual := funo [EstAtual, FITA[pos]].alf; Mmatual := funo [EstAtual, FITA[pos]].mm; EstAtual := funcao [EstAtual, FITA[pos]].est; Fita (pos) := AlfAtual; Case mmatual of R: Pos := pos +1; L: Pos := pos 1; End; EstFinal := Qtdest 1; Write (FITA); If EstAtual = EstFinal then Write (Fita Vlida) Else Write (Fita Invlida); End; End.

{Atualizao da Fita}

CUIDADO}

84

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

5. BINRIO REDUZIDO DA MQUINA DE TURING UNIVERSAL 10000000010111010011010001001010101101000110100010100000110101001101000101 01001011010000110100010100101011010010011101001010010010111010100011101010 10010010101110101010011010001010001010110100000110100100000101011010001001 11010010100001010111010010001110100101010000101110100101001101000010000111 01010000111010100001001001110100010101010010101010111010000100111010010101 01010101011101000010101011101000010100010111010001010011010010000101001101 00101001001101001000101101010001011101001001010111010010100011101010010100 10011101010101000011010010101010111010100100010110101000010110101000100110 10101010100010110100101010010010110101001001011101010100101011101010010100 11010101000011101000100100101011101010100101011101010100000111010100100000 11010101010010111010100101011010001001000111010000000111010010100101010101 11010010100100101011101000001010111010000100011101000001010100111010000101 00111010000010001011101000100001110100001001010011101000100001011010001010 01011101000101001011010010000010110100010101001001101000101010101110100100 00011101001001010101011101010101001101001000101011010010010010110100000001 01101000001000110100000100101101000000000110100101000101110100101010001101 00101001010110100000100111010010101001011010010011101010000001010111010100 00001101010100010101011010010101011010100001010111010100100101011101010001 00101101010010000101110100000011101010010001011010100101001101010100010111 01010010100101110101010000010111010101000001011101000000101010101000010101 11010010101011010101000010111010100010101011101010100100101110101010100001 11010100000001110100100100001101001001000101101010101010011101000000001011 01001000011010101010100101110100100001101001000101010111010000100011101000 10000111010000110100000001011010000010010111010101001010101101000100010010 11101000001001110101010011010000010101011010000100001110100100001000111010 10101010100111010000100100111010001001000011101000010100101101000010100001 11010101010101011101000100100110100010010011010100101001011101110100010101 11010000000111010001001001011101001101001001000010110101010100110100010100 01011101000011010100001000101101010011010101001010010110101010011010010010 10111010011010010000010110100010101010001110100100001010110100000010011010 01000100101110100100001101010000010010111010010010100110100100101010110100 11010010010100101101001101001010000010110100100000111010100100110101010100 00101110100101000010111010010101010111010100010010110100100111010010101000 10111010001001110101000010110100100111010010101010101110100100011101001010 10100101110100100011101010000010101011100110101000001011010010011101010000 00101110100101101010000010101101001010010111010100001001011101000011010100 01000010110101001101010001000101101010101001011101010001010010110100010101 01011101001000010101101010001011101010010010101011101010100100101110101000 11101010001110101001001001011101010001110101001010001011101010001011101010 00010010111010100011101000101000101110100101001011101010010101001011101001 01010101010110101000010101010110100001001110100001010101010111010101000101 01110101010001010111010000001110101010001001011101000000111010101001000101
85

APOSTILA DE LINGUAGENS FORMAIS_____________

Prof. TENORIO

11010100000011010100001011010000001110100100000010111010100011101010010001 01011101010011010101010001010110100000110101010100101010110100000010011010 10101001001110101001101010101001001011010100110100100100111010000011010101 01010010101101010001001101000101001010101110100000110101010101010010110100 01000111010001010101010101101000100011101000010101110100010010000111010011 01000000010011101000000100101110100010001010011101000000100101110100101010 10100101101000010101010111010001001010010111010000010001011101010100101101 00010001001110100000100101011101000000101010110100001000111001111010000100 00011101000010010011101000001010010111010000010100101101000010001010111010 00010001001101000100001110101111010000100100101110100001001001011101000000 01010111010000101010001101000100101110100001000001110100001001110100010000 01011101010100101101000100000101110100001010101011101000000101010111010001 00001010111010001000010101110100100000111010100100100110100000010101110100 01000100101110101010000111010100101011010010101010000110100000101001110100 00001110100000100100111010010110100100010100101101010100110100010100100101 10101010011010001010100010110011010100100101110101010011010001010101010110 01101011001010101100110100100010101010111010001000111010010010101010101101 00101001010001101001000000101110100000110101010010101010110100101010100100 10001000101110100010101011010100000101011010001000001101001000101011010000 10011101010010101010101110100101101001001000101011001101001001001010101110 10011010010010010101101001011010010010010010110100101101001001010001011001 10100100101001010111010001010111010010010111001101001001010100101110011010 01010001010101110100010001110100001010010110100101000101110100101000101011 01000100111010010100010010111010001001110100101001000101110011010010001000 11101000100111010010100101010111001101001010000011100110101010101011010000 00011101001010100101010111010010001110100101010010101110011010000101001001 10011010100000110100000001110100101010100101011100110101000100001101000000 01110100010010101010111010001000111010101010101010101101000010011101001000 10010101110100101010001001101010000000101101001001110101000010101110100100 00110101000000010110100100011101010010010111010000110101000010101011010100 01011101010000101001011101010001011101010001010101011100110101000101011010 0001101010001001010

86

Você também pode gostar