apostila lfa

Upload: gustavo-baleia

Post on 09-Jul-2015

675 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE ESTADUAL DO MATO GROSSO DO SUL CURSO DE CINCIA DA COMPUTAO

APOSTILA DE AULA DISCIPLINA DE LINGUAGENS FORMAIS E AUTMATOS

Professora Viviane Duarte Bonfim

Lages, Agosto de 2009.

UEMS - Professora Viviane Duarte Bonfim

SUMRIO1. SISTEMAS FORMAIS, GRAMTICAS E MODELOS ABSTRATOS DO COMPUTADOR ........... 5 1.1 1.2 1.3 1.4 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.6 1.7 2. Sistemas Formais ................................................................................................................................ 5 Origem Sistemas Formais ................................................................................................................... 5 Mtodos Formais ................................................................................................................................. 6 Linguagens Formais ........................................................................................................................... 6 Gramticas ......................................................................................................................................... 10 Definio Formal de Gramtica .................................................................................................. 11 Derivao e Reduo .................................................................................................................... 12 Notao ......................................................................................................................................... 13 Linguagens Definidas por Gramticas ........................................................................................ 13 Sentena, Forma Sentencial e Linguagem .................................................................................. 14 Tipos deLinguagens/ Gramticas ..................................................................................................... 14 Tipos de Linguagens Representao grfica ................................................................................. 15

LINGUAGENS REGULARES ................................................................................................................. 16 2.1 Operaes de Concatenao e Fechamento ..................................................................................... 16 2.1.1. Definio de Expresses Regulares ............................................................................................. 17 2.2. AUTMATOS FINITOS ........................................................................................................................ 18 2.2.1. Autmatos Finitos Determinsticos .............................................................................................. 18 2.2.2. Autmatos Finitos No-Determnisticos ...................................................................................... 20 2.2.3. Transformao de A.F.N.D. para A.F.D. .................................................................................... 21 2.2.4. Relao entre G.R. e A.F. ............................................................................................................. 22 2.2.5. Minimizao de Autmatos Finitos: ............................................................................................ 25 2.2.6. Aplicaes de A.F. e E.R. ............................................................................................................. 27 3. GRAMTICAS LIVRES DE CONTEXTO .................................................................................................... 29 3.1. SIMPLIFICAES DE GRAMTICAS LIVRES DE CONTEXTO ............................................................. 29 3.1.1. Smbolos Inteis ........................................................................................................................... 29 3.1.2. Eliminao de -produes .......................................................................................................... 30 3.1.3. Produes Unitrias ..................................................................................................................... 30 3.1.4. Eliminao de Recurso Esquerda ........................................................................................... 31 3.1.5. Fatorao Esquerda .................................................................................................................. 31 3.2. CONJUNTOS FIRST E FOLLOW .......................................................................................................... 32 3.2.1. Conjunto First............................................................................................................................... 32 3.2.2. Conjunto Follow ........................................................................................................................... 33 3.3. AUTMATOS COM PILHA .................................................................................................................. 33 3.3.1. Modelagem de MEFs como SDs ................................................................................................ 35

4. TEORIA DA COMPUTAO - TEORIA DE PROBLEMAS: DECIDIBILIDADE, COMPUTABILIDADE E COMPLEXIDADE ................................................................................................. 37 4.1. INTRODUO ..................................................................................................................................... 37 4.1.1. Conceitos e Propsitos Fundamentais da Teoria da Computao .............................................. 38 4.2. TEORIA DE PROBLEMAS .................................................................................................................... 41 4.2.1. Solucionabilidade de Problemas .................................................................................................. 41 4.2.2. Decidibilidade ............................................................................................................................... 41 4.2.3. Princpio da Resoluo de Problemas.......................................................................................... 42 4.2.4. Classes de Solucionabilidade de Problemas ................................................................................ 42 4.2.5. Definio Formal de Problema .................................................................................................... 43 4.2.6. Modos de Definir uma Funo .................................................................................................... 45 4.3. COMPUTABILIDADE ........................................................................................................................... 46 4.3.1. Origem da Computabilidade......................................................................................................... 46 4.3.2. Computabilidade de Funes ....................................................................................................... 49 4.3.3. Problema da Parada ..................................................................................................................... 50 4.3.4. Exemplo Problemas No Computveis ........................................................................................ 54 4.3.5. Computabilidade Parcial .............................................................................................................. 55 4.3.6. Complexidade................................................................................................................................ 56 4.3.7. Recursos Computacionais ............................................................................................................ 56 4.3.8. Problemas Tratveis e Intratveis ................................................................................................ 58

2

UEMS - Professora Viviane Duarte Bonfim

4.3.9.

Modelo Formal de Algoritmo: Mquina de Turing .................................................................... 59

REFERNCIAS BIBLIOGRFICAS............................................................................................................... 60

3

UEMS - Professora Viviane Duarte Bonfim

INTRODUO

Teoria de Linguagens Formais e Teoria de Mquina so prticas abrangentes que se inserem no estudo da Teoria da Computao em geral. A teoria da Computao uma cincia que procura organizar o conhecimento formal relativo aos processos de computao, como complexidade de algoritmos, linguagens formais, problemas intratveis. Atualmente, o termo computar est associado ao conceito de fazer clculos ou aritmtica, usando para isso mquinas computadoras. Entretanto, a noo de computabilidade pode ser dissociada da implementao fsica da mquina. Originalmente a palavra latina putare significa pensar, mas no caso da teoria da computao o sentido mais adequado seria algo como manipulao de smbolos, o que no necessariamente, pensamento. Essa manipulao de smbolos envolvendo, principalmente letras, nmeros e proposies algbricas permitiriam s mquinas computadoras, segundo Alan Turing (1939) realizar qualquer operao formal de que o ser humano seria capaz. Mesmo assim, alguns filsofos sustentavam que os computadores no poderiam computar (fazer aritmtica), porque no compreende a noo de nmero (apenas manipulam sinais eltricos). Todavia, pode-se falar, sem entrar no mrito da questo, que os computadores realizam uma computao perceptvel, j que transforma uma entrada em sada como se estivessem realmente computando. Neste caso, o que importa o efeito final do processo e no a maneira como ele realizado.

4

UEMS - Professora Viviane Duarte Bonfim

1. Sistemas Formais, Gramticas e Modelos Abstratos do Computador1.1 Sistemas Formais

So Sistemas de manipulao de formas, sem preocupao de que estas formas significam no mundo real. A essncia de um Sistema Formal a Sintaxe. Semntica escrever de maneira correta lexicograficamente. Sintaxe: escrita na ordem correta. Manipula smbolos. Ex. 15::=Resultado+10 (erro) passaria pelo bloco lxico pois os tokens esto escritos de maneira correta. Mas no passaria no bloco sinttico.

1.2

Origem Sistemas Formais

A primeira notcia de que se tem de um sistema formal so os trabalhos de Euclides (300A.C.). Estes trabalhos organizam e sistematizam todo o conhecimento da poca com relao Geometria e so conhecidos sob nome de Elementos. Pela primeira vez, a apresentao feita atravs de axiomas, definies, postulados, teoremas e demonstraes. O arcabouo bsico dos Sistemas Formais devido a Ren Descartes (1596-1650) e de Leibniz (1646-1716) sobre linguagens e alfabetos. Frege (1848-1925), Peano (1858-1932), Whitehead (1861-1947), Bertran Russel (1872-1970) e Wittgenstein (1889-1951) criaram a formalizao como se costuma apresentar. Na construo de um Sistema Formal deve-se concentrar ateno na forma com que se trabalha. As Linguagens Naturais, aquelas usadas entre seus seres humanos para se comunicarem possuem ambigidades que impedem seu uso para este propsito. Portanto, torna-se necessrio, dar um passo na direo de evitar estas ambigidades o que feito usando uma linguagem constituda por um conjunto bem definido de smbolos e de regras de derivao, permitindo construir novos objetos a partir daqueles disponveis.

5

UEMS - Professora Viviane Duarte Bonfim

1.3

Mtodos Formais

Podem ser aplicados em diversos domnios, dependendo do contexto. So tcnicas com fundamentos matemticos usados para descrever e analisar propriedades de Sistemas. Um dos motivos de usar mtodos formais avaliar ou eliminar as ambigidades e inconsistncias na especificao. Normalmente cada mtodo formal est associado a uma linguagem formal. A Linguagem formal possui sua sintaxe e sua semntica bem definidas. possvel provar que um programa, ou parte dele, sempre termina em um tempo finito.

1.4

Linguagens Formais

O que a Teoria das Linguagens Formais? Para responder esta questo precisa-se primeiro responder o que Linguagem Formal, e para isto precisamos antes responder o que Linguagem. Inicialmente, de maneira bastante informal, podemos definir uma linguagem como sendo uma forma de comunicao. Elaborando um pouco mais esta definio, podemos definir uma linguagem como sendo um conjunto de elementos (smbolos) e um conjunto de mtodos (regras) para combinar estes elementos, usado e entendido por uma determinada comunidade. Exemplos: 1 - Linguagens Naturais (ou idiomticas) 2 - Linguagens de Programao, de Controle, de Consulta 3 Protocolos de Comunicao Contudo, apesar de intuitiva, esta definio no nos permite responder satisfatoriamente as duas primeiras questes; precisamos antes dar um sentido formal para a definio de linguagem. Faremos isto nas duas prximas sees. O estudo dos diversos tipos de linguagens aplica-se a diversas reas de informtica, sempre que for necessrio analisar o formato e o significado de uma seqncia de entrada. O estudo das linguagens formais, sob a forma de gramticas a base da teoria da interpretao e compilao. A deciso de uma seqncia constitui uma unidade vlida para a linguagem baseada em regras definidas. O nome Teoria de Linguagens Formais devido a que regras para uma linguagem devem ser explicitamente definidas em termos de quais seqncias ou cadeias (strings) podem ocorrer. O estudo de linguagens formais objetiva como especificar um conjunto de cadeias para uma determinada linguagem.

6

UEMS - Professora Viviane Duarte Bonfim

Conceitos Bsicos:Linguagem Formal: o conjunto de palavras sobre um alfabeto. Um Alfabeto definido simplesmente como um conjunto finito de smbolos. Por exemplo, o alfabeto da lngua portuguesa V = {a, b, c, d..., z}. O alfabeto utilizado para expressar os nmeros naturais V = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}. Um Smbolo uma entidade abstrata que no precisa ser definida formalmente, assim como ponto e linha no so definidos na geometria. Letras e dgitos so exemplos de smbolos freqentemente usados. Smbolos so ordenveis lexicograficamente e, portanto, podem ser comparados quanto sua igualdade. Por exemplo, tomando as letras do alfabeto, pode-se Ter a ordenao a < b < c < ...< z. A utilidade dos smbolos est na possibilidade de us-los como elementos atmicos em definies de linguagens. Uma sentena sobre um alfabeto V, uma seqncia (ou cadeia) finita de smbolos do alfabeto. Exemplo de sentenas sobre V = { a , b }: a, b, aa, ab, bb, aaa, aab, aba, baa, ... Tamanho de uma sentena: Seja w uma sentena . O tamanho da sentena w, denotado por |w|, definido pelo nmero de smbolos (elementos do alfabeto) que compem w.

Exemplos: Seja V = { a , b , c } se x = aba, ento |x| = 3 se x = c, ento |x| = 1

Sentena vazia uma sentena constituda de nenhum smbolo; isto , uma sentena de tamanho 0 (zero). Observaes: Representa-se a sentena vazia por (psolon). - Por definio, || = 0

7

UEMS - Professora Viviane Duarte Bonfim

Uma Cadeia uma seqncia finita de smbolos justapostos (sem vrgula separando os caracteres). Por exemplo, se a, b e c so smbolos, ento abcb um exemplo de cadeia utilizando estes smbolos. O tamanho de uma cadeia o comprimento da seqncia se smbolos que a forma. O tamanho de uma cadeia w denotado por |w|. Por exemplo, |abcb| = 4. A cadeia vazia denotada por ., e tem tamanho igual a 0; assim || = 0. Um prefixo de uma cadeia um nmero qualquer de smbolos tomados de seu incio, e um sufixo um nmero qualquer de smbolos tomados de seu fim. Por exemplo, a cadeia abc tem prefixo a, ab e abc. Seus sufixos prprios so , c, bd, abc. Um prefixo ou sufixo que no so a prpria cadeia so chamados de prefixo prprio e sufixo prprio. No exemplo anterior, os prefixos prprios so , a e ab; e os sufixos prprios so , c e bc. Potncia de uma sentena: Seja w uma sentena . A n-sima potncia de w, representada por wn, significa w repetido n vezes. Exemplos: se x = ab, ento x3 = ababab Para x, x0 = A Concatenao de duas cadeias a cadeia formada pela escrita da primeira cadeia seguida da Segunda, sem nenhum espao no meio. Por exemplo, a concatenao de compila e dores compiladores. O operador de concatenao a justaposio. Isto , se w e x so variveis que denotam cadeias, ento wx a cadeia formada pela concatenao de w e x. No exemplo acima, se tornarmos w=compila e x=dores, tem-se compiladores. O Fechamento de um Alfabeto V, representado por V*, o conjunto de todas as cadeias que podem ser formadas com smbolos de V, inclusive a cadeia vazia. O Fechamento Positivo de V, denotado por V+ definido como V* - {}. Ou seja, todas as cadeias formadas com os smbolos de V, exceto a cadeia vazia.

Linguagens e suas representaes:Uma Linguagem (formal) um conjunto de cadeias de smbolos tomados de algum alfabeto. Isto , uma linguagem sobre o alfabeto V um subconjunto de V*. Esta definio no considera-se mecanismos formadores da linguagem, mas apenas a sua extenso. 8

UEMS - Professora Viviane Duarte Bonfim

Assim, por exemplo, o conjunto de sentenas vlidas da lngua portuguesa poderia ser definido como um subconjunto de {a, b, c,.., z}+. Representaes de Linguagens: O estudo de linguagens est intimamente relacionado ao estudo das formas de representao dessas linguagens. O problema de representao de uma linguagem, por sua vez, est relacionado com o fato dela ser finita ou infinita: Linguagem Finita: uma Linguagem que pode ser representada por enumerao. Exemplo: A linguagem definida como sendo o conjunto dos inteiros positivos pares maiores que 0 e menores que 20, pode ser representado por: L = {2, 4, 6, 8, 10, 12, 14, 16, 18}. Linguagem Infinita: Neste caso, na impossibilidade de usarmos enumerao, precisamos encontrar uma representao finita para estas linguagens. Exemplo: A linguagem definida como sendo o conjunto dos inteiros pares poderia ser representada por V ={2, 4, 6, 8, 10,...} que, que apesar de intuitiva, no finita e nem precisa. As representaes finitas de linguagens classificam-se em Reconhecedores e Sistemas Geradores: Um Reconhecedor para uma linguagem um dispositivo formal usado para verificar se uma determinada sentena pertence ou no a uma determinada linguagem. So exemplos de reconheceres de linguagens, as Mquinas de Turing, o Autmato de pilha e o Autmato Finito. Cada um destes mecanismos reconhece um conjunto bastante particular de linguagens. Entretanto, os modelos so inclusivos: todas as linguagens reconhecveis por um Autmato Finito podem ser reconhecidas por um Autmato de Pilha e todas as linguagens reconhecveis por um autmato de pilha so reconhecveis por Mquinas de Turing. Um Sistema Gerador um dispositivo formal atravs do qual sentenas de uma linguagem podem ser sistematicamente geradas. Exemplos de sistemas geradores so as gramticas gerativas, definidas pela primeira vez por Noam Chomsky, em seus estudos para sistematizar a gramtica da lngua inglesa.

Todo Reconhecedor e todo sistema gerador pode ser representado por algoritmos e/ou procedimentos. Pode-se garantir que linguagens reconhecidas por autmatos so reconhecidas algoritmicamente. J o conjunto das linguagens reconhecidas por Mquinas de Turing, que mais

9

UEMS - Professora Viviane Duarte Bonfim

abrangente, inclui linguagens reconhecveis algoritmicamente e linguagens indecidveis, que no possuem algoritmos para reconhecimento. Linguagens Formais: So linguagens que podem ser representadas de maneira finita e precisa atravs de sistemas com sustentao matemtica (dispositivos formais ou modelos matemticos).

Obs: Entende-se por Teoria das Linguagens Formais e dos Autmatos o estudo de modelos matemticos que possibilitam a especificao e o reconhecimento de linguagens (no sentido amplo da palavra), suas classificaes, estruturas, propriedades, caractersticas e inter-relacionamentos.

A importncia desta Teoria na Cincia da Computao dupla: Ela tanto apia outros aspectos tericos da Cincia da Computao (decidibilidade, computabilidade, complexidade computacional, por exemplo), como fundamenta diversas aplicaes computacionais tais como processamento de linguagens, reconhecimento de padres, modelagem de sistemas.

1.5

Gramticas

Sabe-se que uma linguagem qualquer conjunto ou subconjunto de sentenas sobre um alfabeto, ou seja: dado um alfabeto V, uma linguagem L sobre esse alfabeto, um subconjunto de V* L V*. Assim sendo, devemos nos preocupar em definir que subconjunto esse. A finalidade de uma gramtica definir o subconjunto de V* que forma (define) uma determinada linguagem. Uma gramtica define uma estrutura sobre um alfabeto de forma a permitir que apenas determinadas combinaes sejam vlidas, isto , sejam consideradas sentenas (definindo assim a linguagem que ela representa). O que Gramtica? Uma gramtica, de maneira informal, pode ser definida como sendo: a) Um sistema gerador de linguagens; b) Um sistema de reescrita; c) Uma maneira finita de descrever (representar) uma linguagem; d) Um dispositivo formal usado para especificar de maneira finita e precisa uma linguagem potencialmente infinita. 10

UEMS - Professora Viviane Duarte Bonfim

Uma gramtica gerativa um instrumento formal capaz de construir (gerar) conjuntos de cadeias de uma determinada linguagem. As gramticas so instrumentos que facilitam muito a definio das caractersticas sintticas das linguagens. So instrumentos que permitem definir, de forma formal e sistemtica, uma representao finita para linguagens infinitas.

Exemplo intuitivo de uma Gramtica: (um subconjunto da gramtica da lngua portuguesa) :: = :: = | | :: = :: = joo | Maria | cachorro | livro | po :: = o | a :: = pequeno | bom | bela :: = morde | le | olha :: = | | Notao utilizada: < ......... > : categoria sinttica ou gramatical; ::= | ::= : definido por : ou (alternativa) : regra de sintaxe (ou regra gramatical ou regra de produo)

1.5.1 Definio Formal de GramticaUma gramtica possui um conjunto finito de variveis (no-terminais). A linguagem gerada por uma gramtica definida recursivamente em termos de variveis e de smbolos primitivos chamados terminais, que pertencem ao alfabeto da linguagem.

11

UEMS - Professora Viviane Duarte Bonfim

As regras que relacionam variveis e terminais so chamados de produes, que sempre iniciam num ponto, o smbolo inicial. Uma regra de produo tpica estabelece como uma determinada configurao de variveis e terminais pode ser reescrita, gerando uma nova configurao. Uma Gramtica especificada por uma qudrupla (N,T,P,S), onde: N o conjunto de no-terminais, ou variveis. T o conjunto de terminais, ou alfabeto, sendo que N e T so conjuntos disjuntos (no se misturam) P um conjunto finito de produes, ou regras, sendo que P(NT)+ X (NT)* S o smbolo no terminal inicial, sendo SN. a partir dele so geradas todas as sentenas da linguagem. Uma produo (n,p) pode ser escrita n::=p, para facilitar a leitura. No caso de existir mais de uma alternativa para uma mesma configurao e smbolos do lado esquerdo da regra, como exemplo: ::= coisa ::= co ::= pedra pode-se escrever as opes em uma nica produo, separada por |. O mesmo ex. ficaria: ::= coisa | co | pedra O smbolo ::= pode ser lido como definido por e o smbolo | pode ser lido como ou.

1.5.2 Derivao e ReduoSo operaes de substituio que formalizam a utilizao de gramticas, sendo que: Derivao: a operao que consiste em substituir em string (ou parte dele) por outro, de acordo com as produes das gramticas em questo, no sentido smbolo inicial sentena; Uma gramtica pode ser usada para gerar um linguagem atravs de reescrita ou derivao. Ex. dada uma sentena aba; se existir uma regra da forma b::=c, ento a sentena inicial pode ser reescrita como acd. Denotada por: abd -> acd Na sentena aaaDbbB e existe a produo D ::= ab na gramtica. Ento a derivao aaaDbbb -> aaaabbbb Reduo: a operao que consiste na substituio de um string (ou parte dele) por outro, de acordo com as produes da gramtica, no sentido sentena smbolo inicial.

12

UEMS - Professora Viviane Duarte Bonfim

Observao: derivao a operao adequada para gerao de sentenas; enquanto que a operao de reduo adequada ao reconhecimento de sentenas.

1.5.3 NotaoComo converso notacional, pode-se admitir que smbolos no-terminais sero sempre representados por letras maisculas, e terminais por letras minsculas. Assim, uma regra como ::= b | b poderia ser escrita como A::= Ab | b. Alm disso, os conjuntos T e N podem ficar subentendidos e no precisam ser expressos sempre. Pode-se ainda arbitrar que o smbolo inicial S ser o no-terminal que aparecer primeiro do lado esquerdo da primeira produo da gramtica. Assim, bastaria listar as regras de produo para se Ter a definio completa da gramtica. Por exemplo, a gramtica: S ::= ABSc | BA ::= AB Bc ::= bc Ab ::= ab Bb ::= bb Aa ::= aa

Tem como smbolo inicial S, o conjunto de terminais {a, b, c} e o conjunto dos no-terminais (variveis) {A, B, C}. As produes esto detalhadas. Tem-se assim a definio completa da gramtica.

1.5.4 Linguagens Definidas por GramticasA linguagem definida por uma gramtica consiste no conjunto de cadeias de terminais que esta gramtica pode gerar. Este conjunto ser denotado por L(G). A linguagem definida por uma gramtica G=(N,T,P,S) dada por: L(G) = { | T* S * } Uma cadeia pertence a L(G) se e somente se ela consiste somente de terminais (pode ser a cadeia vazia ), e pode ser produzida a partir de S em 0 ou mais derivaes. Forma sentencial se ela pode ser reproduzida a partir de S mas ainda contm no terminais, aaaBbbC. J aabb j uma sentena pois possui apenas terminais.

13

UEMS - Professora Viviane Duarte Bonfim

1.5.5 Sentena, Forma Sentencial e LinguagemSentena uma seqncia s de terminais produzida (gerada) a partir do smbolo inicial de + uma gramtica; isto , se G = (Vn, Vt, P, S) S x, ento x uma sentena pertencente linguagem representada por G. Forma Sentencial uma seqncia qualquer (composta por terminais e no-terminais) produzida (gerada) a partir do smbolo inicial de uma gramtica; isto , se G = (Vn, Vt, P, S) S ento , , ,, so formas sentenciais de G. Linguagem Formalmente definimos a linguagem gerada por G = (Vn, Vt, P, S), denotada por + L(G), como sendo: L(G) = {x | x Vt* S x}; ou seja, uma linguagem definida pelo conjunto de sentenas que podem ser derivadas a partir do smbolo inicial da gramtica que a representa. Gramticas Equivalentes Duas gramticas G1 e G2 so equivalentes entre si, se e somente se L(G1) = L(G2). Formalmente: G1 G2 L(G1) = L(G2). Exemplos:

1.6

Tipos deLinguagens/ Gramticas

Impondo restries na forma das produes, pode-se identificar quatro tipos diferentes de gramticas. Essa classificao foi feita por Chomsky e conhecida como hierarquia de Chomsky. Os tipos de gramticas definidos nesta hierarquia so: a) Tipo 0: No h restrio na forma de das produes. o tipo mais geral. Exemplo: S ::= ABS | ab Ba ::= aB | a Aa ::= aa | a |

b) Tipo 1: Seja G=(N,T,P,S). Se: O smbolo Inicial S no aparece no lado direito de nenhuma produo, e Para cada produo 1 ::= 2 ( o n de smbolos da direita tem que ser igual ou maior o da esquerda) ento se diz que G uma gramtica do tipo 1, ou Gramtica Sensvel ao Contexto. Exemplo: S ::= aBC | aABC aB ::= ab bB ::= bb A ::= AABC | aBC bC ::= bc CB cC ::= cc ::= BC

14

UEMS - Professora Viviane Duarte Bonfim

c) Tipo 2: Uma Gramtica G=(N,T,P,S) do tipo 2, ou Gramtica Livre de Contexto, se cada produo livre de contexto, ou seja, cada produo da forma: (No lado esquerdo tem apenas um smbolo no-terminal. A ::= com A N e (T N)* Exemplo: S ::= aSb | A A ::= cAd | e O Tipo 2 no definido como restrio do tipo 1, porque se permite produes da forma A ::= ; tambm se permite que o smbolo S aparea no lado direito das produes.

d) Tipo 3: Uma gramtica G do tipo 3, ou regular, se cada produo da forma A::= aB, A ::= a, A ::= , onde A e B so no-terminais e a um terminal. (Do lado esquerdo apenas um no terminal, e do lado direito, pode ter o epson, um terminal e um no-terminal). Exemplo: S ::= aS | bB B ::= bB | bC C ::= cC |

1.7

Tipos de Linguagens Representao grfica

Uma Linguagem L do tipo i se existe uma gramtica G de tipi i tal que L = L(G), para i igual 0, 1, 2, 3. Pode-se relacionar cada tipo de gramtica com uma mquina reconhecedora da seguinte maneira: a gramtica do tipo 0 e 1 gera linguagens reconhecveis por Mquinas de Turing; a gramtica do tipo 2 gera linguagens reconhecveis por autmatos de pilha; a gramtica do tipo 3 gera linguagens reconhecveis por autmatos finitos. Representao:

Figura 1: Tipos de Linguagens.

15

UEMS - Professora Viviane Duarte Bonfim

2. Linguagens RegularesAs Linguagens Regulares constituem um conjunto de linguagens decideis bastante simples e com propriedades bem definidas e compreendidas. Essas linguagens podem ser reconhecidas por autmatos finitos e so facilmente descritas por expresses simples, chamadas expresses regulares (E.). Antes de introduzir o mecanismo das E.R.s, ser feito uma reviso sobre operaes de concatenao e fechamento de conjuntos, operaes bsicas para E.R.s.

2.1

Operaes de Concatenao e Fechamento

Seja C um conjunto finito de smbolos (alfabeto), e sejam L, L1 e L2 subconjuntos de C* (linguagens sobre o alfabeto C). A concatenao de L1 e L2, denotada por L1L2 o conjunto { xy | x L1 e y L2}. Em outras palavras, as cadeias da linguagem L1L2 so formadas por uma cadeia de L1 concatenada a uma cadeia de L2, nesta ordem, incluindo a todas as combinaes possveis. Defini-se L0 = {} e Ln = LL n-1 para n 1. O fecho de Kleene ( ou simplesmente fecho) de uma linguagem L, denotado por L*, o conjunto:

L* = U Lii=0

e o fecho positivo da linguagem L, denotado por L+, o conjunto:

L+ = U Lii=1

Em outras palavras, L* denota as cadeias construdas pela concatenao de qualquer nmero de cadeias tomadas de L. O conjunto L+ semelhante, mas neste caso, as cadeias de zero palavras, cuja concatenao definida como , so excludas. Nota-se, porm, que L+ contm se e somente se L contm. Esta definio difere da definio do fechamento de alfabetos, onde A+ era definido como A* - {}. No caso da linguagem, pode ocorrer dois casos: Se L, ento L+ = L*; Se L, ento L+ = L* - {}. Exemplo: 16

UEMS - Professora Viviane Duarte Bonfim

1. Seja L1 = {10, 1} e L2 = {0011, 11}. Ento L1L2 = {100011, 1011, 10011, 111}

2. {10, 11}* = {, 10, 11, 1010, 1011, 1110, 1111,...} 2.1.1. Definio de Expresses RegularesSeja A um alfabeto. As expresses regulares sobre o alfabeto A e os conjuntos (linguagens) que elas denotam so definidas indutivamente como segue: uma expresso que denota o conjunto vazio; uma expresso regular que denota o conjunto {}; Para cada smbolo em a em A, a uma expresso regular que denota o conjunto {a}; Se r e s so expresses regulares que denotam os conjuntos R e S, respectivamente, ento (r+s), (rs), e (r*) so expresses regulares que denotam os conjuntos RS, RS e R*, respectivamente. Quando se escreve E.R.s, pode-se omitir muitos parnteses se for assumido que o smbolo * tem precedncia maior que a concatenao e +, e que a concatenao tem precedncia maior que +. Por exemplo: ((0(1*))+0) pode ser escrita como )!* + ). Alm disso, pode-se aplicar simplificaes abreviando expresses como rr* para r+. As E.R.s possuem as seguintes propriedades algbricas:

AXIOMA r+ s=s+ r r + (s + t) = (r + s) + t (rs)t = r(st) r(s + t) = rs + RT (s + t)r = sr + tr r = r r = r r* = (r + )

DESCRIO + comutativo + associativo a concatenao associativa

a concatenao distributiva sobre + o elemento neutro (identidade) da concatenao relao entre e *Tabela 1: Propriedades Algbricas.

Exemplo; Exerccios; 17

UEMS - Professora Viviane Duarte Bonfim

2.2.

Autmatos Finitos

Autmato Finito um reconhecedor de Linguagens Regulares. Estende-se por reconhecedor de uma Linguagem L um dispositivo que tomado uma seqncia w como entrada, responde sim se w L e no caso contrrio. Os autmatos Finitos classificam-se em: Autmatos Finitos Determinsticos (A.F.D) Autmatos Finitos No-Determinsticos (A.F.N.D)

2.2.1. Autmatos Finitos DeterminsticosFormalmente defini-se um A.F.D como sendo um sistema formal M = (, , , q0, F), onde: o conjunto finito no-vazio de ESTADOS; um ALFABETO, finto, de entrada; FUNO DE MAPEAMENTO ( ou funo de transio), definida em x ; q0 , o ESTADO INICIAL; F , o conjunto de ESTADOS FINAIS;

2.2.1.1.

Interpretao de

A interpretao de (q, a) = p, onde {q, p} K e a , de que se o controle de M est no estado q e o prximo smbolo de entrada . Ento "a" deve ser reconhecido e o controle passa para o prximo estado (no caso p). Nota-se que a funo de mapeamento definida por x , ou seja, de um estado, atravs do reconhecimento de um smbolo, o controle passa para UM NICO outro estado. Por esse motivo, este autmato chamado de DETERMINSTICO. Logicamente um estado uma situao particular no processo de reconhecimento de uma sentena. Uma sentena x aceita (reconhecida) por um A.F.M. = (, , , q0, F) se, e somente se, (q0, x) = p p F. Uma Linguagem Aceita por Mapeamento um conjunto de todas as sentenas aceitas por M. Formalmente, defini-se por: L(M) = {x | (q0, x) = p p F}

18

UEMS - Professora Viviane Duarte Bonfim

2.2.1.2.

Diagrama de Transio

Um Diagrama de Transio para um A.F.M. um grafo direcionado e rotulado. Os vrtices representam os estados e fisicamente so representados por crculos, sendo que o estado inicial diferenciado por uma seta com rtulo inicio e os estados finais so representados por crculos duplos. As arestas representam as transies, sendo que entre dois estados p e q existir uma aresta direcionada de p para q com rtulo a( a ) (p, a) = q em M. 2.2.1.3. Tabela de Transio

uma representao tabular de um A.F. Nesta tabela as linhas representam os estados (o inicial por uma seta e os finais por asteriscos). As colunas representam os smbolos de entrada e o contedo da posio (q, a) ser igual a p se existir (q, a) = p, seno ser indefinida. Exemplos: Abaixo so apresentados dois exemplos de A.F.D nas formas grficas e tabulares: Exemplo1: A.F.D que reconhea as sentenas da linguagem L = { (a, b)+, onde o nmero de as impar}. Forma Grfica:

Incio q0

a b q1

Forma Tabular:

b q0 a q1 b q0

b

q1 q0 q1 * * Exemplo2: A.F.D. que reconhea as sentenas da Linguagem l = { (0,1)*, onde todos os 1,s apaream consecutivos}. Forma Grfica:

Incio

q0

1

q1

0

q2

0

1

0

19

UEMS - Professora Viviane Duarte Bonfim

Forma Tabular: * * * q0 q1 q2

0 q0 q2 q2

1 q1 q1 ___

2.2.2. Autmatos Finitos No-DetermnisticosUm A.F.N.D. um sistema formal M = (, , , q0, F), onde: , , q0, F possuem a mesma definio de A.F.D. uma funo de mapeamento, definida em K x = (K) (um conjunto de estados), sendo que (K) um subconjunto de K. Isto equivale dizer que (p, a) = p1, p2,..., pn. A interpretao de que M no estado q, com smbolo a na entrada pode ir tanto para o estado p1, como para o estado p2,..., como para o estado pn. Exemplo: Seja a Linguagem L = { (a, b)* abb} O A.F.N.D. seria: Forma Grfica:

a q0 q1

b q2

b q3

a, b Forma Tabular: q0 q1 q2 * q3

0 q0, q1 ___ ___ ___

1 q0 q2 q3 ___

20

UEMS - Professora Viviane Duarte Bonfim

2.2.2.1.

Comparao entre A.F.D. e A.F.N.D

A tabela abaixo mostra as principais diferenas entre A.F.D e A.F.N.D. :

Vantagens A.F.D. Implementao Trivial

Desvantagens No apresenta adequadamente algumas L. R.

A.F.N.D.

Representa mais adequadamente as L. R.

Implementao Complexa

2.2.3. Transformao de A.F.N.D. para A.F.D.Teorema 4.1: Seja L um conjunto aceito por um A.F.N.D. , ento um A.F.D. que aceita L. Prova: Seja M = (, , , q0, F) um A.F.N.D. Construa um A.F.N.M. = (K, , , q0, F) como segue: K = {(K)} isto , cada estado M formado por um conjunto de estados de M. q0 = [q0] obs: representa-se um estado q K por [q]. F = {(K) | (K) F . = . Para cada (K) K, ((K), a) = (K) = {p | para algum q (K), (q, a) = p}, ou seja: SE (K) = [q1, q2,..., qr K e Se ( q1, a) = p1, p2, ..., pj ( q2, a) = pj+1, pj+2, ..., pK ... ( qr, a) = pi, pi+1, ..., pn so as transies de M, ento (K) = [p1, p2, ..., pj,..., pj, pj+1, , ..., pK, pi, pi+1, pn] ser um estado de M e M conter a transio: ((K), a) = (K). Para concluir a prova do teorema acima, basta provar que a Linguagem M igual a Linguagem M(L(M) = L(M)). Esta prova no ser apresentada nesta seo. Exemplo: Tendo por exemplo o A.F.N.D. j apresentado anteriormente: q0

0 q0, q1

1 q0 21

UEMS - Professora Viviane Duarte Bonfim

q1 q2 * q3

___ ___ ___

q2 q3 ___

Define M = (K, , , q0, F), onde

[q0] [q0, q1] [q0, q2] [q0, q3]

0 [q0, q1] [q0, q1] [q0, q1] [q0, q1]

1 [q0] [q0, q2] [q0, q3] [q0]

K = {[q0], [q0, q1], [q0, q2], [q0, q3]} = {a, b}q0 = [q0] F = [q0, q3]

2.2.4. Relao entre G.R. e A.F.Teorema 4.2: Seja G = (N, T, P, S) uma Gramtica Regular, ento um A.F.M. = ((K, , , q0, F) | L(M) = L(G). Prova: a) Mostrar que M existe; b) Mostrar que L(M) = L(G). a) Define-se M como segue: 1. K = N {A}, onde A um novo smbolo no-terminal; 2. = T; 3. q0 = S;

4. F = {B | B P} {A}, ou seja, todos os estados que produzem , juntamente com o novoestado.

5. Construa de acordo com as regras a, b, c:a) Para cada produo da forma B a P, cria-se a transio (B, a) = A; b) Para cada produo da forma B aC P, cria-se a transio (B, a) = C; c) Para produes B , no criada nenhuma transio; d) Para todo a T, (A, a) = -(indefinida)

22

UEMS - Professora Viviane Duarte Bonfim

b) Para mostrar que L(M) = L(G), deve-se mostrar que (1) L(G) L(M) e (2) L(M) L(G). esta demonstrao fcil, considerando-se as produes as produes da G.R. e a definio das transies de M, sendo omitida neste texto.

Exemplo: Dada a gramtica regular abaixo, que gera as sentenas da linguagem {(anbm), com n par e m > 0}, iremos definir um A.F. que reconhea as sentenas desta linguagem.

Gramtica:

S ::= aA | bB A ::= aS B ::= bB |

Autmato: Primeiramente deve-se definir os estados do autmato, com um estado novo, denominado aqui C. assim, tem-se que K = {S, A, B, C}. O alfabeto o mesmo, assim = {a, b}, o estado inicial S, e F = {B, C}, pela definio acima. Na forma tabular o autmato fica o seguinte: S A * * B C a A S ___ ___ b B ___ B ___

Nota-se que pode ser gerado um estado inalcanvel (o novo estado, quando no houverem produes da forma B a, B N e a T). Na forma grfica o autmato fica: a b

A

Incio

Sb

C B

b 23

UEMS - Professora Viviane Duarte Bonfim

Teorema 4.3: Seja um A.F.M. = (K, , , q0, F). Ento uma G.R. G = (N, T, P, S) | L(G) = L(M). Prova: a) Mostrar que G existe; b) Mostrar que L(G) = L(M). a) Seja M = (K, , , q0, F) um A.F. Construir uma G.R. G = (N, T, P, S), como segue: 1. N = K; 2. T = ; 3. S = q0; 4. Define-se P como segue: Se (B, a) = C, ento adiciona-se B ::= aC em P; Se (B, a) = C e C F, ento adiciona-se B ::= a em P; Se q0 F, ento L(M). Assim a gramtica deve ser transformada, encontrando uma outra G.R., G1, tal que L(G1) = L(G) {}, e L(G1) = L(M). Seno L(M). b) Para mostrar que L(G) = L(M), deve-se mostrar que (1) L(M) L(G) e (2) L(G) L(M). Esta prova tambm no ser expressa aqui neste texto. Exemplo: Tem-se o seguinte A.F.: a a b b a

A

Incio

Sb

b

C

B

a

Na forma tabular:

S * A B C

a A S C B

b B C S A

24

UEMS - Professora Viviane Duarte Bonfim

A G.R. definida pelo exemplo (algoritmo) acima resulta em: S ::= aA | bB | a A ::= aS | bC B :: aC | bS C ::= aB | bA | b

2.2.5. Minimizao de Autmatos Finitos:Definio: Um A.F.N.D. = (, , , q0, F) MNIMO se: 1. No possuir estados INACESSVEIS; 2. No possui estados MORTOS; 3. No possui estados EQUIVALENTES;

Estados Inacessveis: Um estado q K inacessvel quando no existe w tal que a partir de q0, seja alcanado, ou seja, ~ w | (q0, w) = q, onde w uma sentena ou parte dela. Estados Mortos: Um estado q K morto se ele F e ~ w | (q, w) = p, onde p F e w uma sentena ou parte dela. Ou seja, q morto se ele no final. E, a partir dele nenhum estado final alcanado. Estados Equivalentes: Um conjunto de estados q1, q2,..., qj so equivalentes entre s, se eles pertencem a uma mesma CLASSE DE EQUIVALNCIA. Classe de Equivalncia: Um conjunto de estados q1, q2,..., qj esto em uma mesma C.E. se (q1, a), (q2, a),..., (qj, a), para cada a , resultam respectivamente nos estados qi, qi+1 ,..., qn e estes pertencem a uma mesma C.E. 2.2.5.1. Mtodo para Construo do Autmato Finito Mnimo

1. Eliminar os estados inacessveis; 2. Eliminar os estados mortos; 3. Construir todas as classes de equivalncia; 4. Construir M como segue: 25

UEMS - Professora Viviane Duarte Bonfim

a) K o conjunto de C.E. obtidas; b) q0 ser a C.E. que contiver q0; c) F ser o conjunto das C.E. que contenham pelo menos um elemento F, isto , {[q] | p [q] e p F, onde [q] um C.E.}; d) ([p], a) = [q] (p, a) = q uma transio de M e p e q so elementos de [p] e [q], respectivamente. Exemplo: Minimizar o A.F.D. definido na seguinte tabela de transio: A B C * D E F * G H a G F C A E B G H b B E G H A C F D

Tem-se que os estados acessveis so: {A, G, B, F, E, C}. Portanto, pode-se eliminar os estados D e H. Assim, o novo A.F.D. : * A B C E F * G

a G F C E B G

b B E G A C F

Nenhum dos estados do A.F.D. morto. Assim, pode-se construir as classes de equivalncia. No primeiro passo, duas classes de equivalncia so construdas: F e K-F. Cada passo do algoritmo representado numa linha da tabela abaixo:

26

UEMS - Professora Viviane Duarte Bonfim

F {A, G} {A, G} {A, G}

K-F {B, C, E, F} {B, F} {C, E} {B, F} {C, E}

Denominando {A, G} = q0, {B, F} = q1 e {C, E} = q2 , tem-se o seguinte A.F.D. Mnimo: * q0 q1 q2 a q0 q1 q2 b q1 q2 q0

2.2.6. Aplicaes de A.F. e E.R.Apesar da simplicidade destas ferramentas, existe uma grande variedade de software cuja especificao e/ou implementao pode ser bastante simplificada se realizada em termos de A.F. e E.R., resultando em softwares mais eficientes. Dentre as diversas aplicaes que fazem uso de A.F. e E.R. podemos citar:

a) Analisador Lxico: Os tokens (smbolos bsicos) de uma linguagem de programao geralmente podem ser especificados eficientemente atravs de E.R., as quais podem ser automaticamente convertidas para A.F.D. equivalentes, cuja implementao (o analisador lxico propriamente dito) trivial. Isto permite inclusive, a gerao automtica de um analisador lxico a partir da especificao formal dos tokens de uma linguagem de programao. b) Editores de Texto: As operaes de busca e substituio de cadeias de caracteres em um texto, podem ser eficientemente realizadas, se a cadeia for expressa em termos de E.R. e a operao realizada em termos de um A.F. usufruindo da possibilidade da converso automtica de E.R. para A.F., de forma transparente ao usurio. c) Alm das aplicaes acima (tidas como as principais) podemos tambm destacar o uso destas ferramentas nas seguintes reas: 27

UEMS - Professora Viviane Duarte Bonfim

c.1) Protocolos de comunicao c.2) Projeto (modelagem) de sistemas operacionais c.3) Path Expression c.4) Problemas especfico tais como: segurana de arquivos, desorientao em sistemas de hipertexto, modelagem de redes neurais, compresso de dados, etc...

28

UEMS - Professora Viviane Duarte Bonfim

3. Gramticas Livres de ContextoUma gramtica livre de Contexto (GLC) denotada por G = (N, T, P, S), onde N e T so conjuntos disjuntos de varveis e terminais, respectivamente. P um conjunto finito de produes, cada uma da forma A::= onde A uma varivel do conjunto N e uma cadeia de smbolos (N T)*. S uma varivel especial pelo fato de ser o Smbolo Inicial.

3.1.

Simplificaes de Gramticas Livres de Contexto

Existem vrias maneiras de restringir as produes de uma gramtica livre de contexto sem reduzir seu poder expressivo. Se L uma linguagem livre de contexto no-vazia, ento L pode ser por uma gramtica livre de contexto G com as seguintes propriedades: a) Cada varivel e cada terminal de G aparecem na derivao de alguma palavra de L. b) No h produes da forma A::= B, onde A e B so variveis. Alm disso, se L, ento h necessidade de produes da forma A::= .

3.1.1. Smbolos InteisPode-se eliminar os smbolos inteis de uma gramtica sem prejudicar seu potencial expressivo. Um smbolo X til se existe uma derivao S* X * w, para algum w, e , onde w uma cadeia de T* e e so cadeias quaisquer de variveis e terminais. Caso contrrio, o smbolo X intil. Tanto terminais quanto no-terminais podem ser teis ou inteis. Se o smbolo inicial for intil, ento a linguagem definida pela gramtica vazia. H dois tipos de smbolos inteis. Aqueles que no geram nenhuma cadeia de terminais e aqueles que jamais so gerados a partir de S. O primeiro caso corresponde aos smbolos improdutivos (ou mortos), e o segundo caso corresponde aos smbolos inalcanveis. Um terminal sempre produtivo, mas pode ser inalcanvel. J o no-terminal pode ser tanto improdutivo como inalcanvel. O algoritmo para eliminao dos smbolos improdutivos baseado na idia de que se um noterminal A tem uma produo consistindo apenas de smbolos produtivos, ento o prprio A produtivo. Exemplo; Exerccios;

29

UEMS - Professora Viviane Duarte Bonfim

3.1.2. Eliminao de -produesConforme dito, uma GLC pode ter produes do tipo A::= . Mas toda GLC pode ser transformada em uma GLC equivalente sem este tipo de produes (chamadas -produes), com exceo da produo S::= , se esta existir (ou seja, a cadeia vazia pertence linguagem). Assim, procedendo, possvel mostrar que toda GLC pode obedecer restrio das GSC (tipo 1). o mtodo da eliminao de -produes, a qual se tratar. O mtodo consiste em determinar, para cada varivel A em N, se A * . Se isso for verdade, se diz que a varivel A anulvel. Pode-se assim substituir cada produo da forma B::= X1X2...Xn por todas as produes formadas pela retirada de uma ou mais variveis Xi anulveis. Exemplo; Exerccios; Os no-terminais que derivam a sentena so chamados de -no-terminais. Um no terminal A um -no-terminal se existir uma derivao A* em G. Note que est em L(G) se e somente se S um -no-terminal. Se G no tem -no-terminais, ela dita -livre. Exemplo;

3.1.3. Produes UnitriasUma produo da forma A::= em uma GLC = (N, T, P, S) chamada de produo unitria se um no terminal. Um caso especial de produo unitria a produo A := A, tambm chamada produo circular. Tal produo pode ser removida imediatamente sem afetar a capacidade da gerao da gramtica. O algoritmo para eliminar produes unitrias assume que as produes circulares j tenham sido eliminadas anteriormente. Podem surgir smbolos inalcanveis depois da aplicao do algoritmo. Isso se deve ao fato de que o smbolo substitudo por suas produes, e se o mesmo aparecer somente em produes unitrias, o mesmo ir desaparecer ao lado direito das produes. Para exemplificar, o algoritmo aplicado na seguinte gramtica: S ::= aB | aA | A A ::= C | aaa B ::= aA | B | A C ::= | cBc Nb = {B, A, C} Na = {A, C} Nc = {C}

Primeiramente necessrio determinar o conjunto de Nk para cada no terminal K: Ns = {S, A, B, C}

30

UEMS - Professora Viviane Duarte Bonfim

As produes de cada smbolo K so as produes R ::= , onde R um elemento de Nk e uma produo no unitria. No exemplo, as produes de S so as produes unitrias de S, A, B e C. Exemplo; Exerccios;

3.1.4. Eliminao de Recurso EsquerdaUm no-terminal A, em uma GLC G=(N, T, P, S) recursivo se A A, para e (N T)*. Se = , ento A =e recursivo esquerda; se = , ento A recursivo direita. Esta recursividade pode ser indireta ou direta. Uma gramtica com pelo menos um no-terminal recursivo esquerda ou direita uma gramtica recursiva esquerda ou a direita, respectivamente. Uma GLC G=(N, T, P, S) possui recurso esquerda direta se P contm pelo menos uma produo da forma A :: = A. Uma GLC G=(N, T, P, S) possui recurso esquerda indireta se existe em G uma derivao da forma A n A, para algum n2. Para eliminar recurso diretas esquerda nas produes: A ::= A1 | A2 | ... | An | ... | 1 | 2 | ... | m Onde nenhum i comea com A, deve-se substituir estas produes pelas seguintes: A ::= 1A | 2A | ... | mA A ::= 1A | 2A| ... | nA | Onde A um novo no-terminal. Exemplo; Exerccios;

3.1.5. Fatorao EsquerdaA fatorao esquerda uma transformao til para a criao de uma gramtica adequada analise sinttica preditiva. A idia bsica est em, quando no estiver claro qual das duas produes alternativas usar para expandir um no-termimal A, estamos capacitados a reescrever as produes- A e adiar a deciso at que tenhamos visto o suficiente da entrada para realizarmos a escolha certa. Por exemplo, se tivermos as duas produes ao enxergarmos o token de entrada if, podemos imediatamente dizer qual produo escolher a fim de expandir cmd. Em geral, se A 1, 2 So duas produes -A, e a entrada comea por uma cadeia no vazia derivada a partir de , no sabe-se 31

UEMS - Professora Viviane Duarte Bonfim

se vamos expandir A em , ou 2. Entretanto, pode-se postergar a deciso expandido A para A. Ento, aps enxergarmos a entrada derivada a partir de , expandiremos A em 1 ou em 2. Isto , as produes originais, fatoradas esquerda, tornam-se: A A A 1, 2 Entrada: Gramtica G Sada: Uma gramtica equivalente fatorada esquerda Mtodo: Para cada no-terminal A, encontrar o mais longo prefixo comum a mais de duas ou mais alternativas. Se , isto , existe um prefixo comum no-trivial, substituir todas as produes de A, A 1 | 2 | ... | n | , onde representa todas as alternativas que no comeam com , por A A | A 1 | 2 | ... | n Aqui, A um novo no-terminal. Aplicar repetidamente esta transformao at que no haja duas alternativas com um mesmo prefixo comum. Exemplo; Exerccios;

3.2.

Conjuntos First e Follow

3.2.1. Conjunto FirstSeja uma forma sentencial qualquer gerada por G. FIRST() ser o conjunto de smbolos terminais que podem iniciar (que podem aparecer na posio mais esquerda das sentenas derivadas desta forma sentencial) ou seqncias derivadas (direta ou indiretamente) de . Alm disso, se = ou ento FIRST (). Para calcular FIRST(X) para todo X (N T)*, considera-se os seguintes aspectos especiais: a) X = . Neste caso, FIRST(X) = {}; b) X T. Neste caso, FIRST(X) = {X}; c) X N. Neste caso, se X ::= 1 | 2 | ... | n| so todas as produes com lado esquerdo X, ento FIRST(X) = FIRST(1) FIRST(2) ... FIRST(n).

32

UEMS - Professora Viviane Duarte Bonfim

Para determinar o conjunto FIRST de cada um dos no-terminais de uma gramtica, procedese como: 1. Cria-se uma tabela TABFIRST cujas linhas so rotuladas com os no-terminais da gramtica e com uma coluna rotulada como FIRST, que ir conter os smbolos pertencentes ao FIRST de cada no-terminal. Inicializa-se cada uma das posies desta tabela com (conjunto vazio); 2. Para cada um dos no-terminais, calcula-se o seu conjunto FIRST; 3. Repete-se o passo 2 at que no ocorra mais nenhuma modificao na tabela; Exemplo; Exerccios;

3.2.2. Conjunto FollowFOLLOW(A) definido para todo A N como sendo o conjunto de smbolos terminais que podem aparecer imediatamente aps A em alguma forma sentencial de G. definido um algoritmo que constri o FOLLOW de todo os no-terminais simultaneamente. Duas observaes importantes: a) A funo FIRST definida para as cadeias de smbolos, FOLLOW s definida para no-terminais; b) Os elementos de um conjunto FIRST pertencem ao conjunto T {}; os elementos de um conjunto FOLLOW pertencem ao conjunto T {$}. Exemplo; Exerccios;

3.3.

Autmatos com Pilha

Assim como as expresses regulares possuem seu Autmato equivalente o Autmato Finito, as gramticas livres de contexto tambm possuem sua mquina equivalente o Autmato com Pilha ( pushdown automata). A equivalncia algo satisfatrio desde que o autmato com pilha seja no determinstico, pois sua verso determinstica aceita somente os subconjuntos das linguagens livres de contexto. Ou seja, nem toda linguagem livre de contexto pode ser reconhecida por um autmato com pilha. Sendo assim, necessrio adicionar um aspecto que permita que ele reconhea qualquer linguagem livre de contexto. Neste caso, uma pilha adicionada ao Autmato lhe confere a facilidade de no-determinismo. 33

UEMS - Professora Viviane Duarte Bonfim

O Autmato com Pilha anlogo ao Autmato Finito, incluindo uma pilha como memria auxiliar. A pilha independente da fita de entrada e no possui limite mximo de tamanho (memria infinita). O A.P. essencialmente um A.F. com controle da fita de entrada e da pilha. Sua principal caracterstica que o ltimo smbolo gravado o primeiro a ser lido (first in last out), como mostra a figura abaixo:

Gravao

Leitura

Topo

Sentido do Crescimento Base Figura 2: Estrutura do Tipo Pilha. A base uma pilha fixa e define o seu incio. O Autmato de Pilha composta por quatro partes: a) Fita: Anloga do Autmato Finito; b) Pilha: Memria auxiliar que pode ser usada livremente para leitura e gravao. dividida em clulas, armazenando cada uma,, um smbolo do alfabeto auxiliar (pode ser igual ao alfabeto de entrada). Em uma estrutura do tipo pilha, a leitura ou gravao sempre na mesma extremidade denominada topo. O topo varivel e define a posio do ltimo smbolo gravado. No possui tamanho fixo e nem mximo, sendo seu tamanho atual, igual ao tamanho da palavra armazenada. Seu valor inicial zero. c) Unidade de Controle: Reflete o estado corrente da mquina. A unidade de controle possui um nmero finito e pr-definido de estados. Possui uma cabea de fita e uma cabea de pilha: Cabea de Fita: unidade de leitura a qual acessa uma clula da fita de cada vez e movimenta-se exclusivamente para a direita. possvel testar se a entrada foi completamente lida. Cabea da Pilha: unidade de leitura e gravao a qual move para a esquerda (ou para cima) ao gravar e para direita (ou para baixo), ao ler um smbolo. Acessa um smbolo 34

UEMS - Professora Viviane Duarte Bonfim

de cada vez, estando sempre posicionada no topo. A leitura exclui o smbolo lido. possvel testar se a pilha est vazia. Em uma operao de gravao, possvel armazenar uma palavra composta por mais de um smbolo. Neste caso, o smbolo do topo o mais esquerda da palavra gravada. d) Programa ou Funo de Transio: Comanda a leitura da fita, leitura de gravao da pilha e define o estado da mquina. uma funo parcial que dependendo do estado atual, smbolo lido na fita e smbolo lido na pilha, determina o novo estado e a palavra a ser gravada na pilha. Pode mudar de estado sem ler a fita (movimento vazio). Um Autmato com Pilha No-Determinstico (A.P.N) ou simplesmente Autmato com Pilha (A.P) M uma 6-upla: M = (, Q, , q0, F, V) onde: alfabeto de entrada; Q conjunto de estados possveis do autmato o qual finito; funo programa ou funo de transio: : Q x ( {, ?}) x (V {, ?}) 2QxV q0 estado inicial do autmato, tal que q0 elemento de Q; F conjunto de estados finais tal que F Q; V alfabeto auxiliar ou alfabeto da pilha. Algumas consideraes devem ser feitas em relao a funo programa: O smbolo na. Ieitura indica que o A.P. no l e nem move a cabea da fita ou da pilha (movimento vazio) e na gravao indica que nenhuma gravao realizada na pilha (e no move a cabea); ? significa que a funo pode no ser total, ou seja, indefinida para alguns argumentos do conjunto da partida. A omisso do parmetro de leitura denotada por ?. Isto indica que toda palavra de entrada foi lida na fita e na leitura faz o teste de pilha vazia.

3.3.1. Modelagem de MEFs como SDsA modelagem de sistemas como autmatos no se limita ao estudo de reconhecimento de linguagens formais. Muitos modelos tm sido propostos para resoluo de vrios problemas. Os autmatos podem ser utilizados nas mais diversas aplicaes, como por exemplo, modelos de redes neurais artificiais e modelos de agentes, modelos de sistemas hipermdia. Aqui ser restrito ao estudo das linguagens formais. Uma Mquina de Estados Finitos um Sistema Dinmico, onde o conjunto dos tempos o conjunto dos inteiros, e a entrada, a sada e os estados so conjuntos finitos. Neste caso, os valores 35

UEMS - Professora Viviane Duarte Bonfim

possveis de entrada e da sada so requeridos como alfabetos de entrada e sada. Sob estas simplificaes, basta declarar explicitamente um estado inicial correspondente ao tempo zero. Um autmato (ou uma mquina) descrito como uma 6-upla: At = {U, Y, X, x0, , }, onde: U um conjunto finito de entradas; Y um conjunto finito de sadas; X um conjunto de estados ou espao de estados; x0 X o estado inicial; : U x X a funo de prximo estado ou funo de transio; : U x X Y a funo de prxima sada. Ento um autmato um sistema dinmico invariante e discreto no tempo. Quando o espao de estado um conjunto finito, o autmato chamado de autmato finito. Assim, esta sxtupla formal pode ser interpretada como sendo uma descrio matemtica de uma mquina qual, se no tempo t0, estiver no estado x0 e receber um segmento de entrada u do tempo t0 ao tempo t estar no tempo t no estado (x, u) e emitir a sada (x, u).

36

UEMS - Professora Viviane Duarte Bonfim

4. Teoria da Computao - Teoria de Problemas: Decidibilidade, Computabilidade e Complexidade4.1. IntroduoA Teoria da Computao pode ser vista como um guia (um roteiro) que nos orienta no sentido de informar o que pode e o que no pode ser efetivamente computvel, explicando porque, de que forma e com que complexidade. Neste sentido, a Teoria da Computao classifica os problemas computacionais em trs classes: a) Problemas Indecidveis (ou impossveis de serem solucionados); b) Problemas Intratveis (possveis com recursos ilimitados, porm impossveis com recursos limitados); c) Problemas Tratveis (possveis de serem solucionadas com recursos limitados).

Esta classificao engloba problemas de toda a natureza, envolvendo desde problemas clssicos que fundamentam a teoria da computao at problemas (ou instncias de problemas) prticos da cincia da computao, tais como:

1 Existe programa para solucionar um determinado problema? 2 Qual o poder de expresso de um determinado modelo de especificao? 3 Dado um programa qualquer, ele sempre tem parada garantida? 4 Dois programas P1 e P2 so equivalentes entre si? 5 Uma determinada soluo a melhor soluo para um dado problema? 6 Qual o significado de um determinado programa? 7 Dado um programa qualquer, este programa est correto?

Esta lista poderia ser expandida e detalhada, contudo, seu objetivo enfatizar a abrangncia da teoria da computao. Dos tpicos aqui listados, complexidade (5), semntica (6) e correo/construo (7), costumam ser tratados como disciplinas especficas e independentes, enquanto que os demais se classificam como problemas bsicos da teoria da computao. Todos os problemas computacionais podem ser tratados (estudados) sob a tica da Teoria das Linguagens Formais e Autmatos. 37

UEMS - Professora Viviane Duarte Bonfim

Segundo esta tica, a teoria da computao pode ser vista como um conjunto de modelos formais (juntamente com suas propriedades) que fundamentam a cincia da computao. Tais modelos incluem Autmatos (Finitos, de Pilha e Mquinas de Turing) e Gramticas, enquanto que as

propriedades de interesse envolvem questes de decidibilidade, Inter-relacionamento entre modelos (abrangncia, equivalncia, etc...) e complexidade computacional. Nesta apostila, abordaremos a Teoria da Computao segundo a tica da Teoria das Linguagens Formais e Autmatos.

4.1.1.

Conceitos e Propsitos Fundamentais da Teoria da Computao

Com o objetivo de melhor fundamentar as questes cobertas pela teoria da computao e de identificar claramente a possibilidade de reduzir tais questes a problemas pertinentes a Teoria das Linguagens Formais, apresentaremos nesta seo alguns conceitos fundamentais e comentamos alguns dos principais propsitos que sustentam a teoria da computao.

Procedures e AlgortmosO conceito de algoritmo fundamental dentro da cincia da computao e pode ser definido formalmente segundo vrios propsitos da teoria da computao (como ser visto no final desta seo) ou informalmente em funo da definio de procedure (como veremos a seguir). Procedure: m conjunto finito de passos (instrues), os quais podem ser executados mecanicamente em uma quantidade fixa de tempo e com uma quantidade fixa de esforo. Um bom exemplo de uma procedure um programa de computador escrito em linguagem de mquina, pois tal programa possui um nmero finito de passos, todos executveis mecanicamente com uma quantidade fixa de recursos. Algoritmo: uma procedure que sempre pra; ou seja, uma procedure cuja execuo chegar ao final, independentemente de quais sejam suas entradas. Adicionalmente, dizemos que uma procedure termina para uma determinada entrada, se existe um nmero finito t, tal que aps a execuo de t instrues (no necessariamente distintas), ou no existem mais instrues a serem executadas, ou a ltima instruo executada foi uma instruo halt.

Exemplos: 38

UEMS - Professora Viviane Duarte Bonfim

1 Dado um nmero inteiro positivo I, determinar se I ou no um nmero primo. 2 Dado um inteiro I, determinar se existe um nmero perfeito maior que I (obs: um nmero perfeito se a soma de seus divisores (exceto ele mesmo) igual ao prprio nmero). 3 Dado um programa escrito em uma determinada linguagem de programao, determinar se esse programa est sintaticamente correto. Este problema uma instncia do seguinte problema genrico: dada uma cadeia de caracteres x determinar se essa cadeia gerada por uma Gramtica Livre de Contexto (ou reconhecida por um Autmato de Pilha). 4 Dado um programa qualquer, determinar se existe alguma entrada para a qual o programa entrar em loop.

Os problemas enunciados nos exemplos 1 e 3 possuem representao algortmica enquanto que os problemas dos exemplos 2 e 4 s so representveis via procedures.

Conjuntos Recursivos e Conjuntos Recursivamente EnumerveisUm conjunto dito Recursivamente Enumervel se ele pode ser representado (solucionado) por uma procedure, e Recursivo se ele pode ser representado (solucionado) por um algoritmo. Como procedures e algoritmos podem ser definidos formalmente atravs de vrios modelos (gramticas e autmatos, por exemplo), podemos tambm definir conjuntos recursivos e recursivamente enumerveis em funo de tais modelos.

Problemas Decidveis e Indecidveis X Algoritmos e ProceduresUm problema decidvel (tratvel ou no) se e somente se ele resolvvel por um algoritmo, para qualquer entrada pertencente ao seu domnio; caso contrrio ele um problema indecidvel.

A partir das definies acima, podemos notar claramente a relao entre problemas decidveis e indecidveis com conjuntos recursivos e recursivamente enumerveis; ou seja, um problema decidvel se o conjunto de solues das diversas instncias deste problema um conjunto recursivo, e indecidvel caso tal conjunto seja recursivamente enumervel. Assim sendo, torna-se evidente que a questo da decidibilidade pode ser tratada formalmente atravs dos modelos que compem a Teoria das Linguagens e Autmatos.

39

UEMS - Professora Viviane Duarte Bonfim

A classe dos problemas indecidveis significativamente representada pelo HALTING PROBLEM (problema da parada) que consiste em: Dado uma procedure Z e uma entrada X, decidir (determinar) se Z termina quando aplicado a X. A indecidibilidade deste problema extremamente til para demonstrar a indecidibilidade de outros problemas atravs da reduo destes para o halting problem.

Propsitos da Teoria da ComputaoAt aqui definimos procedures e algoritmos de maneira intuitiva e informal. Contudo eles podem ser definidos rigorosamente (precisamente) atravs de vrios formalismos conhecidos como propsitos (ou princpios) da Teoria da Computao. Tais formalismos tem sido explorados largamente na Cincia da Computao, onde servem como modelos na soluo de diversos problemas prticos. Dentre os formalismos mais importantes, podemos citar:

a) Mquinas de Turing (Turing, 1936); b) Gramticas (Chomsky, 1959); c) Algoritmos de Markov (Markov, 1951); d) Lambda Calculus (Church, 1941); e) Sistemas Post e Sistemas de Produo (Emil Post, 1936); f) Funes Recursivas (Kleene, 1936).

Um ponto importante a ressaltar aqui, que toda procedure (ou algoritmo) descrita por algum destes formalismos, pode tambm ser descrita atravs de qualquer um dos demais; fato este que sugere a equivalncia entre os formalismos. A aceitao destes formalismos dentro da teoria da computao , em grande parte, decorrente da hiptese (conhecida como Tese de Church) de que todo processo computvel passvel de ser descrito por uma procedure pode ser realizado por uma Mquina de Turing. Esta tese, apesar de no ter sido provada formalmente, tambm no foi contradita e continua sendo universalmente aceita. Conseqentemente podemos afirmar que Mquinas de Turing constituem o formalismo mais genrico para a representao de procedure e que qualquer outro formalismo ser significativo se for considerado equivalente s mquinas de Turing. A demonstrao formal da equivalncia entre os diversos formalismos citados e mquinas de Turing, refora a tese de Church.

40

UEMS - Professora Viviane Duarte Bonfim

4.2. Teoria de ProblemasPode-se dizer que computadores servem para resolver problemas. A resoluo de um problema envolve o conhecimento do domnio do problema e a tcnica de busca da soluo. Caso o conhecimento a cerca do problema for total no necessrio a utilizao de tcnica de busca da soluo, mas se no existir nenhum conhecimento a cerca do problema, ele insolvel. Ento para a soluo de um problema devem ser considerado os seguintes aspectos: Conhecimento sobre o problema; Mtodos de busca da soluo; H uma autora que sugere antes de tentar buscar a soluo de um problema tente responder primeiro as seguintes questes: Quais so os dados? Quais so as solues possveis? O que caracteriza uma soluo satisfatria?

4.2.1. Solucionabilidade de ProblemasO objetivo do estudo de problemas investigar a existncia ou no de algoritmos que solucionem determinada classe de problemas. Em particular, este estudo evita a pesquisa de algoritmos inexistentes. Em 1901, Hilbert formulou uma lista de problemas a serem resolvidos pelas futuras geraes de matemticos. Contudo, o dcimo problema desta lista (o desenvolvimento de um algoritmo que determine se uma equao polinomial qualquer, com coeficientes inteiros, possui soluo neste mesmo conjunto) foi aprovado, por Matijasevic, em 1970, ser insolvel.

4.2.2. DecidibilidadeNeste estudo, concentra-se nos problemas com respostas binrias sendo sim ou no, os quais sero referidos simplesmente como problemas sim/no ou problemas de deciso. Na prtica, qualquer problema pode ser tratado equivalentemente como um problema (ou classe de problema) sim/ no. Os problemas solucionveis so chamados computveis. Alguns problemas no-solucionveis so parcialmente solucionveis, ou seja, existe um algoritmo capaz de responder sim, embora, eventualmente possa ficar em lao infinito para uma resposta que deveria ser no. Neste caso, diz-se que o problema parcialmente solucionvel. 41

UEMS - Professora Viviane Duarte Bonfim

4.2.3. Princpio da Resoluo de ProblemasPode-se afirmar que existem mais problemas no computveis do que problemas computveis. O estudo da solucionabilidade de um problema feito, em geral, usando o princpio da Reduo. Este princpio consiste em reduzir o problema que se est investigando a solucionabilidade em outro problema que j se conhea que seja insolvel. Desta forma implicaria em resolver o insolvel. Sendo assim, o princpio resumido como segue: a) Sendo A e B dois problemas de deciso. Suponha-se que seja possvel modificar (reduzir) o problema A de forma que ele se comporte como um caso do problema B. b) Se A insolvel, no computvel, e como A um caso de B, conclui-se que B tambm no solucionvel. c) Se B solucionvel ( parcialmente computvel), como A um caso de B, conclui-se que A, agora tambm seja solucionvel.

4.2.4. Classes de Solucionabilidade de ProblemasDe acordo com a possibilidade de estabelecimentos de algoritmos de soluo, os problemas podem ser agrupados nas seguintes classes:

Problema Solucionvel ou Totalmente Solucionvel: Um problema tido como solucionvel se existe algum algoritmo que resolva o problema, sempre pra para qualquer que seja entrada, devolvendo uma resposta afirmativa (Aceita) ou negativa(Rejeita).

Problema Parcialmente Solucionvel: Um problema Parcialmente Solucionvel se existe um algoritmo que resolva o problema, parando quando a resposta for afirmativa. No caso da resposta for negativa, o algoritmo pode parar ou permanecer indefinidamente (LOOP). Ou seja, para qualquer algoritmo que processe esse problema, existe pelo menos uma palavra de entrada que resulta em loop.

Problema No-Solucionvel ou Insolvel: Quando no existe um algoritmo que resolva o problema tal que pra para qualquer entrada, com uma resposta afirmativa ou negativa. Alguns problemas No-Solucionveis podem ser Parcialmente Solucionveis. 42

UEMS - Professora Viviane Duarte Bonfim

A unio dos conjuntos de problemas solucionveis e no-solucionveis o universo de todos os problemas. Entretanto, existem problemas parcialmente solucionveis. O conjunto dos problemas parcialmente solucionveis contm todos os problemas solucionveis e alguns no-solucionveis. Com isso, pode-se afirmar trs coisas: a) Todo problema solucionvel parcialmente solucionvel; b) Existem problemas no-solucionveis que possuem soluo parcial; c) Existem problemas sem soluo total ou parcial tido como insolveis.

4.2.5. Definio Formal de ProblemaUm problema o objeto matemtico P = {D, R, q}, consistindo de dois conjuntos no vazios, dados (D) e possveis resultados (R) e uma relao binria q D x R como uma condio que caracteriza uma soluo satisfatria, associando a cada elemento do conjunto de dados a nica soluo desejada. A soluo do problema uma relao (subconjunto de um conjunto cartesiano) ou uma funo ( caso considerar os subconjuntos de dados), ver figura 2.1. Com isso, resolver um problema implementar funes atravs de mecanismos de implementaes de funes. Funes () : 1, 2, 3, ..., n Mecanismos de implementaes (M): M1, M2, M3, ..., Mn Dados X X Resultados

Figura 2: Demonstrao de um problema como uma funo.

43

UEMS - Professora Viviane Duarte BonfimDados X f1 X Resultados

f2

f3

fn

Figura 3: Resoluo do problema: implementaes de funes.

Denomina-se, ento a soluo de um problema como funo. : D R d D Tem-se: (d, (d)) q Sendo assim, um problema pode ser representado matematicamente por uma funo. Solucionar o problema, encontrar uma maneira de implementar esta funo ou de aproxim-la ao conhecimento que dispe. Abaixo, apresenta-se um exemplo do autor Barreto. O conjunto de dados disponveis d D, no qual d so dados (observao da amnese, sintomas, resultados laboratoriais) que pertencem, ao conjunto D de dados disponveis. R o conjunto de doenas possveis. A condio que caracteriza uma soluo satisfatria consiste em encontrar o par (d, r), onde r R o diagnstico desejado. Caso o diagnstico for nico, pode-se dizer que a relao q torna-se uma funo e, pode-se dizer que a soluo do problema ser poder associar a cada elemento de D o elemento correspondente de R, de modo que (d, (d)) q (onde (d) = r) e uma funo. Formular um problema diferente de encontrar a soluo. A definio de um problema possibilita testar se um determinado elemento ou no a soluo, mas no auxilia na busca deste elemento. Verificar se um elemento a soluo, verifica-se se o par (dado, elemento e candidato soluo) satisfaz ou no a condio. Testar se um par (dado, elemento e candidato soluo) satisfaz a soluo de um problema, nem sempre permitido. Isto depende do modo de definir a funo associada ao problema em questo.

44

UEMS - Professora Viviane Duarte Bonfim

4.2.6. Modos de Definir uma FunoPor enumerao exaustiva: Neste mtodo, fornece-se todos os conjuntos de pares, dados, resultado. S aplicado no caso do conjunto de dados ser finito. Exemplo: Numa agenda de telefones pode ser considerada como uma funo que associa a cada nome de pessoa seu telefone. Calcular o valor da funo simples e sempre possvel, neste caso, se o nome da pessoa pertencer ao conjunto de dados representado na agenda. Saber se um par (nome, nmero de telefone) est na agenda tambm fcil e sempre possvel: basta olhar na agenda.

Declarativa: Definir um problema desta maneira atribuir propriedades que devem ser satisfeitas pela soluo do problema. Da mesma forma que um conjunto pode ser definido por uma propriedade (ex: conjunto dos objetos de madeira de uma sala), uma funo pode ser definida por uma propriedade. Exemplo: Seja a propriedade de pertencer a um conjunto. Neste caso, trata-se da definio da funo caracterstica de um conjunto. Normalmente costuma-se considerar o conceito de um elemento pertencer a um conjunto como conceito primitivo, explicado, mas no definido. Entretanto, este, conceito pode ser substitudo pelo de uma funo caracterstica de um conjunto. Pertencer passar a ser um conceito definido e a funo caracterstica do conjunto A ser: FA : U Verdadeiro, Falso, significa que se a imagem do elemento for Verdade, ele pertence ao conjunto e Falso se no pertencer.

Por um Programa: Um programa de computador define a correspondncia entre dados e resultados sempre ele conseguir chegar a uma soluo. Portanto, um programa pode ser considerado como um modo de definir um problema. Exemplo: Neste modo, o problema no completamente definido para todo valor de seus dados. Conhece-se apenas a definio do problema para um subconjunto dos dados possveis e este conhecimento pode ser de qualquer uma das formas citadas: por enumerao, declarativamente ou proceduralmente. Deseja-se conhecer os elementos do conjunto de respostas admissveis para todos os elementos do conjunto de dados, mesmo aquele que no esto includos na definio da funo. Pode-se reconhecer neste caso que a soluo no nica: todas as funes que sejam iguais dentro da regio em que o problema definido so vlidas. Tambm, deve-se considerar que, neste 45

UEMS - Professora Viviane Duarte Bonfim

caso, muitas vezes, melhor Ter uma soluo aproximada quando dados so usados para definir a funo. As maneiras de definir uma funo levam ao conceito de computabilidade.

4.3. ComputabilidadeUma funo computvel se for possvel calcular seu valor para todos os elementos do seu domnio de definio. Caso contrrio considerada no computvel. Uma funo tambm pode ser considerada parcialmente computvel se for possvel calcular seu valor para alguns elementos, pelo menos, de seu domnio de definio.

4.3.1. Origem da ComputabilidadeA idia de Ter um algoritmo, ou passos para desenvolver uma determinada tarefa, existe por muitos anos. Durante anos, acreditava-se que: se um determinado problema fosse precisamente declarado, com esforo suficiente, uma soluo poderia eventualmente ser encontrada ( ou seno, poderia ser provado que no havia soluo). Ou seja, acredita-se que nenhum problema era intrinsecamente difcil, em princpio, que jamais poderia ser resolvido. Um dos grandes percursores desta idia foi o matemtico David Hilbert (1862 1943). Hilbert acreditava que todos os problemas poderiam ser precisamente formulados, num sistema formal, em termos de declaraes que poderiam ser falas ou verdadeiras. Sua idia era encontrar um algoritmo que, dado um sistema formal, poderia determinar se a declarao a cerca do problema era ou no verdadeira. Se o objetivo de Hilbert fosse atingido, ento qualquer problema bem definido (declarado com preciso) poderia ser resolvido simplesmente pela execuo de um algoritmo. A deciso da verdade sobre uma determinada declarao em um sistema formal ficou conhecida como Entscheidungsproblem. Este problema pode ser considerado o problema aberto fundamental da matemtica. Mas, infelizmente, na dcada de 30, muitas pesquisas constataram que o

Entscheidungsproblem no computvel, no existia nenhum algoritmo do tipo sugerido por Hilbert.

Teorema de Gdel Uma das primeiras descobertas nesta linha, deve-se a Kurt Gdel, que em 1931 sugeriu um Teorema da No-Completude. (Incopleteness Theorem). Entre outras coisas, ele mostrou que no 46

UEMS - Professora Viviane Duarte Bonfim

existe algoritmo cujas entradas declaradas sejam nmeros inteiros e cuja sada mostre se esta declarao verdadeira ou no. No Teorema da No-Completude (ou Incompleteza) de Gdel, um sistema de axiomas dito completo quando todo teorema verdade ou mentira. Se existir um sistema de axiomas consistentes (quando no existirem axiomas que entrem em contradio com outros axiomas) existiro sempre teoremas que poder provar que so mentiras e teoremas que podero provar que so verdades. Outros tambm que no podem provar nada, nem que sejam verdades, nem que sejam mentiras. Neste caso, o sistema dado como incompleto, no sentido de que existem coisas que no pode-se provar, nem verdades, nem mentiras. Este teorema parte da premissa de que existem verdades e mentiras levando a concluso que existem teoremas verdadeiros, falsos e outros que no sabem se so verdades ou mentiras. Alguns outros matemticos como Alonso Church, Stephen Kleene, Emil Post, Alan Turing encontraram vrios problemas que no possuem soluo algortmica.

A Tese de Church Turing Um dos maiores obstculos em saber se existe ou no algoritmo para resolver um determinado problema saber exatamente o significado de algoritmo. Gdel definiu algoritmo como uma seqncia de regras para transformar funes matemticas complexas em funes matemticas simples. Church utilizou um formalismo chamado clculo lambda. Turing imaginou uma mquina hipottica (Mquina de Turing) definindo um algoritmo como sendo qualquer conjunto de instrues para esta mquina. Um algoritmo tambm pode ser definido como operaes bsicas em estruturas de dados controladas por seqncia, seleo e iterao. Uma conjectura, enunciada por Church, diz que todos os modelos razoveis do processo de computao, definidos e por definir, so equivalentes. Essa conjectura conhecida como a Tese de Church. A Tese de Church no admite nenhuma prova formal, mas at hoje todos os modelos propostos se manteram equivalentes. Com concluses: Todas estas definies de algoritmo so equivalentes; Qualquer definio razovel de algoritmo ser equivalente a estas definies; A tese de Church-Turing ( ou Tese de Church), define que se tem uma boa definio de algoritmo se uma seqncia de passos possa ser executada de maneira rotineira (ou mecnica), de maneira formal no desenvolvimento da mesma tarefa.

47

UEMS - Professora Viviane Duarte Bonfim

Procedimento e Algoritmo Um procedimento definido como uma seqncia finita de instrues, e define-se uma instruo como uma operao claramente descrita, que pode ser executada mecanicamente, em tempo finito. mecanicamente significa que deve haver dvidas sobre o que deve ser feito; em tempo finito significa que no h dvidas de que a tarefa correspondente instruo pode, em qualquer caso, ser conduzida at sua concluso. Para se escrever um procedimento pode-se usar uma linguagem natural, uma linguagem de programao, ou uma linguagem usada em matemtica. Na verdade, usa-se uma combinao de todas elas. Sobre a forma de escrever instrues e procedimentos, supe-se apenas que existe uma linguagem, comum a todos, em que instrues e procedimentos podem ser escritos sem ambigidade. Exemplos: o algoritmo Euclides para clculo mximo divisor comum de dois nmeros naturais; um programa em PASCAL que calcula a soma de dois nmeros; a frmula de Bhscara que calcula as razes da equao de segundo grau. Por exemplo, um conjunto A recursivamente enumervel se existe um procedimento que enumera os elementos de A Existe ento um procedimento que emite todos os elementos de A, possivelmente com repeties. Define-se ento algoritmo como sendo um procedimento que sempre pra, quaisquer que sejam os valores de suas entradas. Por exemplo, conjunto A dito recursivo se existe um algoritmo que determina para um valor arbitrrio de sua entrada x, se x A ou se x A. Embora isso no seja estritamente necessrio, pode-se, para fixar as idias, especificar que o algoritmo deve parar e dizer sim ou no, respondendo a pergunte, se x A?. No sentido moderno, pode-se definir um algoritmo como sendo qualquer coisa que possa ser executada no computador. O computador particular escolhido irrelevante para a definio, desde que qualquer algoritmo que possa ser implementado em um computador possa ser implementado em outro. Isto real, porque todos os computadores podem simular um ao outro. Este programa conhecido como interpretador (ou simulador, ou programa universal). A equivalncia entre todos os computadores modernos, e sua equivalncia s Mquinas de Turing e outras definio de algoritmo evidenciam a Tese de Church. A universalidade uma propriedade dos algoritmos, significando que qualquer computador equivalente a todos os outros no sentido de que todos eles podem desenvolver a mesma tarefa. Embora os computadores possam

48

UEMS - Professora Viviane Duarte Bonfim

desenvolver as mesmas tarefas, eles no necessariamente consomem os mesmos recursos computacionais.

4.3.2. Computabilidade de FunesFunes Computveis: Um problema de Deciso o processo de determinao, se um determinado elemento ou no membro de um conjunto. altamente desejvel saber antecipadamente se um determinado problema de deciso pode ser ou no resolvido pelo computador (ser computvel). De modo terico, pode-se dizer que um problema computvel se a funo caracterstica do conjunto for recursiva. De modo prtico, uma funo dita computvel se para qualquer entrada de dados pode ser implementada no computador em tempo finito, ou seja, o programa ir parar para qualquer entrada de dados. A maioria das linguagens de programao oferecem algumas funes intrnsecas e tambm permitem aos programadores definir novas funes. Exemplo: Se desejar usar uma funo que computa a mdia entre valores de trs nmeros reais pode-se utilizar o seguinte cdigo em PASCAL. O qual permite definir tal funo:

function media(x, y, z: real):real; {encontra a mdia dos valores de trs nmeros reais} begin (funo mdia} media := (x + y + z) / 3.0; end;

O cabealho function dentro dos parnteses indica que a funo consiste de todas 3-tuplas de nmeros reais. Para cada uma delas esperado que a funo produza um resultado nico.

Funes Parcialmente Computveis: Na computao, algumas funes no so definidas para algumas entradas. Teoricamente impossvel, dado um programa sem conhecer sua estrutura interna garantir que ele termine com certo tipo de entrada. Pode acontecer de escolher um conjunto de dados de entrada e se o programa tiver laos pode entrar num loop infinito e nunca parar. Com isso, os programas podem gerar funes parcialmente computveis. Exemplo: 49

UEMS - Professora Viviane Duarte Bonfim

function (x:integer): integer; var y:integer; begin y := 1; while (x0) do begin x := x 2; y := y * 2; end; := y; end; Percebe-se que a chamada (2K), com K 0 retorna o nmero 2K. Para qualquer outra entrada, o programa no pra. Portanto, este fragmento de programa computa a funo F = {(2K, 2K ) | K N}, a qual uma funo parcial de Z em Z. Funes No Computveis: As funes no computveis so aquelas que no podem ser implementadas no computador. Pode-se considerar como funes no computveis quelas cujo tempo de execuo do programa no hbil, quer dizer, o computador pode levar muito tempo para implementar tais funes. Exemplo: Dada uma equao arbitrria da forma (a + 1)2 + (b + 1)3 = (c + 1)4, o problema determinar se a equao satisfeita por quaisquer nmeros inteiros. Isto chamado Problema da Equao Diofantinas e sabe-se que no existe algoritmo de soluo de equaes Diofantinas Arbitrrias.

4.3.3. Problema da ParadaVrios problemas so conhecidos como no computveis, ou seja, no so conhecidos algoritmos para a resoluo de tais problemas. Estes algoritmos no conhecidos porque simplesmente no existem! Um problema comum nos sistemas computacionais a ocorrncia de erros que impedem a determinao normal do programa. Vrias vezes, os problemas sem detectar a existncia de laos infinitos em seus programas antes de dispensar recursos computacionais na execuo dos mesmos. 50

UEMS - Professora Viviane Duarte Bonfim

Portanto, o problema a ser resolvido determinar se um programa arbitrrio (qualquer) pra ou no pra. Este denominado Problema de Parada. Sua soluo um algoritmo, no qual, dado um programa qualquer P e sua entrada de dados D, pode-se dizer ou no, se eventualmente P pra quando executado com a entrada de dados D. Muitas vezes a soluo para o Problema da Parada, utilizado em muitos sistemas computacionais, forar a parada do programa cada vez que sua execuo ultrapasse o tempo determinado (alocado) para isso. Mas esta soluo no adequada por duas razes: Os programas no terminantes pode alocar todo tempo dispensado na execuo; Nem sempre o programa pode calcular o tempo necessrio para a execuo do programa, e ele pode terminar de maneira precoce em um tempo inferior sua parada com sucesso. O Problema da Parada no computvel conforme a seguir: Suponha que exista um algoritmo para resolver o Problema da Parada, testaparada. O algoritmo testaparada possui duas entradas, P e D. Imprime a resposta OK! caso o programa P termina quando executada com uma entrada de dados D. E imprime No Pra! caso contrrio. O testaparada testa a determinao do programa P para dados D conforme mostra a figura abaixo: P D

P(D) pra?

Sada OK! e pra

Sada No Pra e pra

Figura 4: Ao Testaparada. Suponha-se que pode-se us-la para construir um algoritmo mais limitado, o qual testa a terminao de P quando os dados so o prprio P, o qual ser chamado de novotestaparada. Embora posa parecer estranho a entrada de dados com o prprio programa, sabe-se qualquer seqncia de caracteres pode ser a entrada de um programa. Assim, existem programas de interesses prtico, cuja a entrada uma seqncia de caracteres representando outro programa; exemplos so compiladores e editores.

51

UEMS - Professora Viviane Duarte Bonfim

Programa novotestaparada(P) { verifica se o programa P pra quando executado com o dado sendo o prprio P } testaparada(P,P) A ao de novotestaparada demonstrado na figura 2.4. P

P(P) pra? Sim No

Sada OK! e pra

Sada No Pra e pra

Figura 5: Ao de novotestaparada. Supondo a existncia do algoritmo testaparada estar-se- supondo a existncia tambm de novotestaparada. Assim, pode-se construir o seguinte algoritmo, chamado parada, que possui apenas uma entrada P.

Programa parada(P) {para escrever esta rotina suponha-se que testaparada existe} Se novotestaparada(P) sai No Pra! ento pra seno lao infinito

A demonstrao do algoritmo parada est na figura 2.5.

52

UEMS - Professora Viviane Duarte Bonfim

P

P(P) Pra? Sim No

Pra

Lao Infinito Figura 6: Ao de parada(P). Finalmente, considerando o que ocorre durante a execuo de parada(parada), ou seja, durante a execuo de parda com sua prpria entrada de dados, um programa texto de P (P pode ser qualquer seqncia de caracteres). A execuo de parada(parada) demonstrada na figura 2.6. Sendo a mesma figura 2.5, mas a entrada P foi substituda pelo prprio parada. parada

parada(parada) pra?

Sim

No

pra lao infinito Figura 2.6: Ao de parada(parada). A figura 2.6 mostra uma contradio, pois se a parada (parada) pra ento ele entra em lao infinito. Por outro lado, se parada(parada) entra em lao infinito ento ele pra! Ou seja, a execuo de parada(parada) no pode parar nem entrar em lao infinito. Esta contradio s pode ser resolvida admitindo-se que o algoritmo parada no existe. Porm, a nica suposio feita derivando parada, era que testaparada no existiria. Portanto, se parada no 53

UEMS - Professora Viviane Duarte Bonfim

existe, ento testaparada no existe. Concluindo com isso, que no existe algoritmo que solucione o problema da parada (testaparada). Assim, o problema da Parada no computvel! Resumindo: 1. Suponha-se que pode-se escrever o programa testaparada; 2. Usa-se este programa para construir outro programa (parada) atravs de um programa intermedirio (novotestaparada); 3. Mostra-se que parada tem algumas propriedades impossveis (no pode parar e nem entrar em lao infinito); 4. Conclui-se que a suposio no passo 1 est errada.

4.3.4. Exemplo Problemas No Computveis possvel projetar um algoritmo o qual resolver o problema da Parada em alguns casos. Mas o algoritmo limitado e pode falhar com outras entradas. difcil determinar se um dado algoritmo falha e quando (momento em que) ele falha. Pode-se dizer que o Problema da Parada no pode ser resolvido por qualquer programa, escrito em qualquer linguagem, para qualquer computador!

Problema da Totalidade: Sendo que o Problema da Parada determinar se um programa arbitrrio P pra ou no pra quando executando com uma entrada de dados arbitrria D. A questo saber se o programa arbitrrio P parar para todas as entradas. Este denominado Problema da Totalidade. Assim, pode-se dizer que P total se P(D) pra para qualquer entrada de dados D. de se esperar que o Problema da Totalidade seja no computvel. Ao contrrio, dado qualquer P e D, pode-se simplesmente construir