Você está na página 1de 20
Capitulo 1 Introdugao A importancia da teoria para a pratica, em qualquer ciéncia, seja factual ou exata, 6 imensa. Para elucidar a correlagéo entre ambos aspectos de uma ciéncia foram formuladas algumas frases consagradas tais como: “A teoria é a luz da pritica” e “A prética sem a teoria 6 cega, ‘mas a teoria sem a pratica é estéril”. Como é de supor, a ciéncia da computagao, ndo poderia ficar alheia a esta interacao e, portanto, uma teoria para esta ciéncia se faz necessério para “iluminar 0 caminho” dos cientistas da computagio (praticos), dos engenheiros em computagao, dos analistas de sistemas, enfin de todos os profissionais que usem a computagao como objeto de estudo ou de trabalho. Assim, antes de descrever 0 que seria uma teoria para a ciéncia da computagio, devemos esclarecer o que entendemos por ciéncia da computagao ou, simplesmente, por computagio. Entendendo por computagio tudo o que um computador pode realizar, devemos primeiro entender o que um computador é, cuja resposta poderia ser dada em termos de hardware e tecnologia. Mas, devemos de ter cuidado, para nao nos limitar tecnologia do momento, pois nessa definigao de computador devem coexistir os primeiros computadores, calculadoras, super computadores e futuros computadores. Ou soja, seria necessério unificar caracteristicas essenciais comuns a todos os computadores, de tal modo a distinguir um computador de outros tipos de hardware, tais como elevadores, méquinas de venda de refrigerante, toca CD, etc. Isto nos levaré, irremediavelmente, a definir uma nogio abstrata de computador, onde ele possa ser melhor descrito em termos do que ele faz A teoria nos fornece conceitos ¢ prinefpios para nos ajudar a entender a natureza geral da ciéncia do computador. O campo dessa disciplina inclui um vasto leque de tépicos especiais, desde projetos de méquinas até programagao. O uso dos computadores no mundo real envolve uma riqueza de detalhes especificos que devem ser aprendidos para uma aplicagao com sucesso. Isto faz com que a ciéncia da computagio seja diversificada ¢ ampla. Apesar dessa diversidade, existem alguns prinefpios basicos comuns. Para estudar esses principios bésicos, construiremos modelos abstratos de computadores © computacao que contém caracteristicas importantes que so comuns tanto ao hardware quanto ao software, essenciais a muitos conceitos especiais e complexos encontrados quando se trabalha com computadores. Mesmo que esses modelos sejam muito simples para serem aplicados imediatamente nas situagdes do mundo real, o entendimento que ganhamos em estudé-los nos fornece fundamentos sobre os quais o desenvolvimento especifico 6 baseado. Esta abordagem néo é exclusividade da ciéncia da computacéo. A construcio de 1 Capitulo 1. Introdugéo modelos 6 essencial em qualquer disciplina cientifica, ¢ a utilidade de uma disciplina depende freqiientemente da teoria e de leis simples, ainda que poderosas. Além do mais, as idéias que discutiremos tém algumas aplicagGes imediatas e importantes. Os campos de projetos digitais, linquagens de programagao e compiladores so os exemplos mais dbvios, existem porém muitos outros (Protocolos de comunicagio, projetos de hardwares digitais, esquemas XML, criptografia, processamento digital de imagens, etc.). Este texto € 0 resultado de diversos cursos ministrados pelos autores para a disciplina de “eoria da computacao” dos cursos de graduagio em Bacharelado em Ciéncia da Computagéo da Universidade Federal do Rio Grande do Norte - UFRN, da Universidade Federal de Pernambuco - UFPE e da Universidade Estadual do Sudoeste da Bahia - UESB e no curso de Engenharia da Computacéo da UFRN. Como esta disciplina é pre-requisito da disciplina “compiladores” ‘enfatizamos os conceitos de linguagens formais, com suas abordagens através de autématos ¢ de graméticas. Mas, como principalmente é um curso de “teoria da computagéo”, também estudamos a nogéo de computabilidade e consideramos uma breve discusso de complexidade computacional. Os tépicos apresentados neste texto sio importantes para os estudantes de informatica, seja de ciéncias ou de engenharia, pois os colocam diante de questées profundas de natureza computacional e de conhecimentos que no ficardo rapidamente obsoletos, pois néo dependem da tecnologia. Assim, este texto nos permite vislumbrar 0 poder das ferramentas mateméticas e dos métodos formais para modelar fendmenos da computacao. No entanto, é dbvio que este texto nao é exaustivo no que tange & teoria da computagio, pois sé se direciona a modelar linguagens formais e computabilidade cléssica, deixando de lado certos aspectos especificos, ‘como por exemplo computacéo concorrente e distribufda, especificagio formal, computagées muméricas envolvendo mimeros reais, etc. Mesmo no caso de linguagens formais o texto esté num nivel de um curso de graduagéo, mas certamente a érea é muito mais ricas e ainda hé muitas coisas a serem exploradas. Esse estudo dos fendmenos da computagao através de modelos ‘matematicos ou formais é que ergue a computagio ao patamar de uma ciéncia em lugar de uma mera tecnologia. Neste texto, estudaremos diversas classes de linguagens (formais), mas daremos énfase espe- cialmente a cinco delas: 1, Linguagens regulares, 2, Linguagens livres do contexto, 3. Linguagens sensiveis ao contexto, 4, Linguagens recursivas, ¢ 5, Linguagens recursivamente enumerdveis. Cada uma dessas classes de linguagens seré abordada através de autématos, que so modelos ‘matemiticos de classes de computadores digitais, e através de gramaticas, que sao, basicamente, ‘um conjunto de tegras que dizem como construir palavras vélidas da linguagem. No entanto, também veremos superficialmente trés outras classes de linguagens formais: Linguagens lineares, linguagens livres do contexto determinfsticas ¢ linguagens recursivas. Introdugdo & Teoria da Computacto: Linguagens Formais, autématos e Computabitidade Capitulo 1. Introdugio Exploramos 0 mais complexo desses autématos, e observamos que ele nfo s6 tem capacidade para reconhecer linguagens formais, mas também pode transformar entradas em saidas, ou seja realizar computagdes como qualquer computador real faz. Este ¢ 0 ponto de partida para se introduzir a nogdo de computabilidade e estabelecer os limites do mundo da computagio. Finalmente, com um conhecimento do que é ¢ o que nao é computével, podemas nos preocu- par com analisar a qualidade das solugées, isto é, nao s6 é importante saber se um determinado problema admite uma solugéo implementavel num computador, mas se essa solugéo vai nos ser titil (se vai ser realizada em um tempo razoavel, ou ainda se ela ocupa espago de meméria que dispomos). Ou seja, agora podemos nos preocupar com a complexidade computacional das solugdes. Para isso, introduzimos algumas medidas de complexidade baseadas no tempo de execugao de um algoritmo e no espago usado por ele. Neste capitulo, veremos alguns conceitos mateméticos bésicos, fundamentais para o entendi- mento do texto. Além do mais, veremos de modo geral e superficial as trés visdes (linguagem, autémato e gramética) que adotaremos neste texto, para estudar 0 poder computacional dos nossos modelos. 1.1 Conceitos Matematicos Basicos 1.1.1 Conjuntos Um conjunto é uma colegdo de objetos (seus elementos) distintos. Deserevemos um conjunto enumerando um a um seus elementos em alguma ordem adequada ou descrevendo uma pro- priedade que s6 os elementos do conjunto possuem ou satisfazem. Em geral, denotamos con- Juntos por letras maitisculas com ou sem indices, por exemplo A, B,C, Ai, Br, ete. Sea é um elemento de um conjunto A, dizemos que a pertence a A, denotado por a € A. Se varios elementos, digamos a, be ¢, pertencem ao conjunto A denotamas-lo por a,b,c € A. © conjunto que nao tem elementos 6 denominado conjunto vazio, denotado por 0. O conjunto vazio pode ser especificado por uma propriedade que nenhum elemento satisfaz. Por exemplo, 0 = {z/x # x}. O conjunto cujos elementos sao todos objetos fisicos ou mentais que existem, existiram ou existirao no universo é denominado conjunto universo ¢ o denotamos por U. Em algumas situagdes sao considerados universos particulares, por exemplo 0 conjunto dos seres humanos. Um conjunto A é um subconjunto de um conjunto B ou A esté contido ou é igual a B, denotado por AC B, se todos os elementos de A sio elementos de B, isto é, se para todo z € A, x € B. Os conjuntos A e B sto iguais, denotado por A = B, se AC Be BC A. Dizemos que um conjunto A é um subconjunto préprio de B, denotado por A C B, se AC Be A naoé igual a B, ou soja se A C Be existe um elemento de B que nao est em A. Proposigéio 1.1.1 Sejam A, B eC conjuntos quaisquer. Entéo LOCA, 2. Se ACB entéo ACB, Introdugio & Teoria da Computagéo: Linguagens Formais, autématos ¢ Computabilidade 1.1. Conceitos Matematicos Basicos 3. SeAC Be BCC entio ACC, 4. SeACBeBCC entéo ACC, e 5. Se AC Be BCC entéo ACC. A seguir definiremos algumas operagies bésicas sobre conjuntos. Sejam A, B e C trés conjuntos quaisquer. © Uniio: AUB = {x /x€Aou re B}, © Intersecgfio: ANB = {x /x€ Acre B), © Diferenga: A~ B= {z/r€Aer¢ Bye © Complementagio: A= {x / x ¢ A}. Proposigao 1.1.2 Sejam A e B conjuntos quaisquer. Entéo 1. AUB=BUA, 2 ANB=BNA, 3. AU(BNC) =(AUB)N(AUO), 4. AN(BUC) =(ANB)U(ANC), 5. AUD=A-0=A, 6. AnO=0, 10. 11. Se AC B entio AUB=B, ANB=AeBCA. Se A e B sao conjuntos sem nenhum elemento em comum, isto é, se AN B = 0, entio Ae B so denominados conjuntos disjuntos. Um conjunto é finito se contém um néimero finito de elementos. Caso contrério, ele & infinito. O tamanho ou cardinalidade de um conjunto finito é o mimero de elementos que ele contém, denotado por [A]. Seja {4i}ier uma familia de conjuntos indexada pelo conjunto de indices I. Entéo Introdugio & Teoria da: Computagio: Linguagens Formais, autématos e Computabilidade Capitulo 1. Introdugao 1. a unio da familia € definida por UAi = {x / existe i € I tal que x € Ai}, fe 2. a intersecco da familia é definida por (Ai = {2 / para todo i € J tal que x € Aj}, fer 3. se J = {1,2,--- ,n} entéo denotamos a unido e intersecgao da familia {A;}ier por Ua e ist Um dado conjunto pode ter muitos subconjuntos. © conjunto de todos os subconjuntos de um conjunto A é chamado 0 conjunto poténcia ou conjunto das partes de A, denotado por 24 ou P(A). Exemplo 1.1.3 Se A é 0 conjunto {a,b,c}, entdo seu conjunto poténcia é 2° = (0, {a}, {0}, {c}, (a,b), {a,c}, {0,c}, {a,b,c}}. Observe que neste caso |Al = 3 ¢ |24| = 2!4I = 28 = 8. Generalizando, se A é um conjunto finito entéo |24| = 2I4|, Esta propriedade deu origem ao nome de conjunto poténcia. 1.1.2 Fungées e Relagées Uma fungdo parcial ou simplesmente fung&o é uma regra que associa a certos elementos de ‘um conjunto um tinico elemento de outro conjunto. Se f denota uma fungéo, entéo o primeiro conjunto é chamado conjunto de partida e o segundo conjunto é chamado conjunto de chegada. Escreveremos f : A — B, para indicar que f é uma fungio cujo conjunto de partida € Ae cujo conjunto de chegada ¢ B. Eventualmente, teremos casos em que alguns elementos do conjunto de partida nao tenham associado nenhum elemento do conjunto de chegada através da fungéo f. O subconjunto de A cujos elementos sio associados a elementos de B é chamado dominio de f, denotado por dom(f). Analogamente, 0 subconjunto de B, aos quais aqueles elementos de A foram associados, é chamado imagem ou contradominio de f ¢ 0 denotamos por img(f). Seo dominio de f é todo A, dizemos que f é uma fungao total sobre A, caso contrério dizemos que f é uma fungao parcial nao total. No cotidiano sempre estamos relacionando objetos de um mesmo tipo ou de diferentes tipos. Por exemplo, a relagio “pertencer & mesina familia”, relaciona pessoas que sio de uma mesma famflia e a relagao “ser dono” relaciona pessoas com objetos. Assim, uma relagio exige que exista uma conexdo entre as coisas que se relacionam. Esta nogio de conexio de um objeto a com um objeto 6, pode ser formalmente colocado introduzindo a nogio de par ordenado, (a,6). A nogio de par ordenado tem a seguinte propriedade fundamental: Introdugdo & Teoria da Computagéo: Linguagens Formais, autématos e Computabilidade 1.1. Conceitos Mateméticos Basicos (x1, 22) = (yr, y2) se, e somente se, 71 = yi € Z2 = y2- (L.1) Ou seja nos pares ordenados a ordem em que sto dispostos os elementos é importante, Colocado dessa maneira, aparentemente, nfo podemos pensar num par ordenado como um conjunto, mas poderiamos encarar um par ordenado, (a,}), como uma abreviagdo do conjunto {a, {a,b}}. Esta visio conjuntista de par ordenado satisfaz a propriedade fundamental 1.1. O conjunto de todos os pares ordenados possiveis de ser construides entre um conjunto A e um conjunto B, é denominado produto cartesiano de A com B, cuja denotagio é A x B. Assim, Ax B= {(a,b)/acAebe BY ‘A nogéo de par ordenado pode ser estendida & nogdo de n-tuplas ordenadas, isto é, em vez de considerar elementos de dois conjuntos, considerar elementos de n conjuntos. Denotaremos uma n-tupla por (a1,...,@n). Analogamente, podemos considerar 0 produto cartesiano dos conjuntos Ay-++ An, denotado por Ay x... x An, por Ay x Ag x 22% An = {(a1s22)°++ tn) / 24 € Ai, para cada 1 Si B pode ser vista como um subconjunto do produto cartesiano de A com B, isto é, f C Ax B, onde cada x; pode ocorrer no maximo uma vez como © primeiro elemento de um par ordenado em f. Esta maneira de encarar fungées é chamada gréfico da fungao f. Claramente, as relagoes siio mais gerais que as fungées: numa fungao cada elemento do dominio tem associado a ele exatamente um elemento no contradominio; numa relagao podem existir varios de tais elementos no contradomini Uma relacao especialmente importante é uma relacdo de equivaléncia, que é uma gener- alizagio do conceito de igualdade (identidade). Para indicar que um par (x,y) é equivalente, escrevemos wey Uma relagéo, denotada por =, é considerada uma equivaléncia se ela satisfaz trés regras: Reflexividade: x = x para todo x, «© Simetria: se x = y, e Transitividade: se 2 Introduséo & Teoria da Computacéo: Linguagens Formais, autématos e Computabilidade Capitulo 1. Introdugao Exemplo 1.1.4 Seja N = {0,1,2,...} 0 conjunto dos niimeros naturais e defina x =y see somente se x (mod 3) = y (mod 3) 9e10 Assim, 2=5, 16. [580 é claramente uma relagdo de equivaléncia. Dada uma relagdo de equivaléncia = sobre um conjunto no vazio A, conjunto de elementos de A que sio equivalentes a um elemento especifico a € A, ou seja [a] = {b€ A/a =d}, 6 chamado de classe de equivaléncia de a. Observe que se € [a] entao [ . Exemplo 1.1.5 No exemplo 1.1.4 temos trés classes de equivaléncias: © [0] = {0,3,6,...} = {3k / para algum k € N} © (= (4,7...) = {8k+1/ para algum k € NY © 2) = {2,5,8,...} = {3k+2/ para algun k EN} Por outro lado uma partigao de um conjunto nao vazio A, é uma familia de conjuntos {Ai}icr tal que L UAi=Ae ca 2. AiNA; # Ose e somente se =i Observe que dada uma relagio de equivaléncia sobre um conjunto A suas classes de equivaléncia formam uma partigio de A e vice-versa, ou seja, uma partigio {A;}ier de um conjunto A deter- mina uma relagéo de equivaléncia (a = b se a,b € A; para algum i € I). Fechos de Conjuntos Seja A um conjunto, X C A e O uma operagao n-aria sobre A (isto 6 O : A" — A). Dizemos que X é fechado sobre a operagio O se para cada 21,..-,2 € X, O(a1,...,2n) € X. O fecho de um conjunto X com respeito A operacao O é 0 menor subconjunto de A contendo X que & fechado sobre O. Exemplo 1.1.6 0 fecho do conjunto {2} CN sobre a soma, é 0 conjunto dos mimeros pares diferentes de 0. Jé sobre a multiplicagéio é 0 conjunto {2" /n > 1}. Observe que se a operagio for parcial nem sempre o fecho de um conjunto existiré, por exemplo nao existe nenhum conjunto X CN que seja fechado sobre a subtrac&o, pois nesse conjunto teria que estar 2—2 = 0 e 0 ~2 que nao esta em N. Mas se a operagao for total, entao sempre existird o fecho de qualquer subconjunto. Introdugio & Teoria da Computacéo: Linguagens Formais, autdmatos ¢ Computabilidade 1.1, Conceitos Matematicos Basicos 1.1.3 Grafos e Arvores Um grafo é um par (V, A) onde V ¢ A sio conjuntos finitos e A é um subconjunto de pares nio ordenados de vértices. Os elementos de V sao chamados de vértices enquanto que os elementos de A sao chamados de arestas. Dizer que arestas so pares nfo ordenados significa que as arestas (vi, 44) € (vj, 04) silo as mesmas. Quando se faz diferengas entre estas arestas, ou seja quando arestas so pares ordenados, entio estamos diante de um grafo dirigido. Este nome se deve a que associamos uma diregio (de v; a vj) a cada aresta (vj, uj). Neste caso, dizemos que a aresta (vj,u;) é uma aresta de saida para vj e de chegada para vj. Grafos podem ser rotulados, sendo o rétulo um nome ou outra informagio associada as componentes do grafo. Tanto os vértices quanto as arestas podem ser rotulados. Uma maneira conveniente de se visualizar grafos 6 através de diagramas, nos quais os vértices so representados por circulos e as arestas por linhas ou setas conectando os vértices, caso o grafo seja dirigido. O grafo dirigido com vértices {v1, v2, v3} e arestas {(v1, v3), (v3, 21); (v3, ¥2), (v3, U3) } 6 desenhado na figura 1.1. oo Figura 1.1: O diagrama de um grafo dirigido. Uma seqiiéncia de arestas (vi, 04); (U3, Uk); (Uk, 21),-++5(Yms%m) diz-se um caminho de v; a vn. O comprimento de um caminho é 0 niimeto total de arestas que ele atravessa indo do vértice inicial ao vértice final. Um caminho no qual nenhuma aresta é repetida diz-se uma trilha, Uma trilha é simples se nenhum vértice é repetido, isto 6, se nao existem duas arestas distintas, (vj,v;) e (ve,u), na trilha tal que vj = vy ou vj = y. Uma trilha de 1; a ele proprio diz-se um ciclo com base v;. Se nenhum vértice além de v;, a base, é repetido o ciclo com base v; diz-se simples. No grafo da figura 1.1 (vi, v3), (v3, v2) é uma trilha simples de v; a v2. A seqiiéncia de arestas (v1, 03), (vs,Us); (vs,v1) 6 um ciclo com base v1, mas nao simples, pois repete o vértice vy, j4 a seqiiéncia (v1, v3), (v3, 11) 6 um ciclo simples com base v1. Se as arestas de um grafo sao rotuladas, podemos falar do rétulo de um caminho. Este rétulo é a seqiiéncia de rétulos das arestas encontradas quando se percorre a trilha. Ein algumas ocasiées, nos referiremos a um algoritmo para achar todas as trilhas simples entre dois vértices (ou todos os ciclos simples baseados num vértice). Se ndo nos preocuparmos com eficiéncia podemos usar o seguinte método. Iniciar do vértice dado, digamos vj, liste todas as arestas de saida de vj, (v4, 14), (vi, 11),--. Neste ponto temos todas as trilhas de comprimento uum, comegando em vj. Para todos 0s vértices vg, v1,.. alcangados, liste todas as arestas de saida desde que elas nao levem a qualquer vértice j4 usado na trilha que estamos construindo. Apés isto, teremos todas as trilhas simples de comprimento dois iniciando em »; e assim por diante. Introdugéo & Teoria da Computaio: Linguagens Formais, autématos e Computabilidade Capitulo 1. Introdugao Como sé existe um mimero finito de vértices, mais cedo ou mais tarde teremos listado todas as trilhas simples, com inicio em vj. Desses escolheremos aqueles terminando no vértice desejado. As Arvores sio tipos particulares de grafos. Uma drvore é um grafo dirigido que nfo possui ciclos, tendo um vértice distinguido chamado raiz, tal que existe exatamente uma trilha da raiz @ qualquer outro vértice. Esta definigio implica que nao existe aresta de chegada na raiz. e que existem vértices sem arestas de safda, chamados folhas da arvore. Se existe uma aresta de vj para vj, v; 6 dita um pai de vj, ¢ vj & dito um filho de x. O nivel associado a cada vértice é 0 ntimero de arestas na trilha da raiz ao vértice. A altura de uma érvore 6 0 niimero mais alto do nivel de algum vértice. A figura 1.2 ilustra estes conceitos. Raiz Altura=3 --Wiver 3 Figura 1.2: Exemplo de érvore 1.2 Nogoes de Linguagens, Gramaticas e Autématos Na primeira parte de nosso curso abordaremos trés idéias fundamentais: linguagem, gramdtica © autémato. Estaremos particularmente interessados nas suas relacdes. 1.2.1 Linguagens Formais Em Portugués, existem trés tipos de entidades diferentes: letras, palavras e sentengas. Existe um certo paralelismo entre elas, no sentido de que grupos de letras constituem uma palavra, € grupos de palavras uma sentenga. Mas, nem toda concatenagio de letras forma uma palavra, nem toda seqiiéncia de palavras uma sentenga. A analogia pode ser estendida a parégrafos, hist6rias, e assim por diante. A situagio se dé, também, para as linguagens de programacao, na qual certos agrupamentos de palavras chaves so um comando e algumas seqiténcias de comandos ‘so programas. Para construir uma teoria geral que unifique todos esses casos, seré necessério adotar uma definigdo para a estrutura de linguagens mais universal, isto é, uma estrutura na qual a decisio de Introdugdo & Teoria da Computagéo: LLinguagens Formais, autématos ¢ Computabilidade 1.2. Nogées de Linguagens, Graméticas e Autématos quando uma cadeia de unidades constitui uma unidade maior vélida, seja baseada na aplicagio de regras explicitamente definidas. Em linguagens tipo Portugués e Inglés assim como em dialetos, no podemos dar regras que permitam descrever todas as frases coerentes da linguagem (ou dialeto). Por exemplo, ‘em Portugués, uma frase do tipo < artigo >< sustantivo >< verbo > esté bem construida, no entanto ela nos permita gerar frases sem sentidos tais como “o gato late”. Além disso, & dificil estabelecer quais frases fazem sentido na lingua portuguesa, isto porque depende de nossa habilidade para interpretar metéforas poéticas de sentencas aparentemente sem sentido, como por exemplo “Mie de pedra, espuma dos condores.” do poema Alturas do Macchu Picchu do poeta Pablo Neruda}. Por estes motivos este tipo de linguagens sao chamadas de linguagens naturais. Isto j4 no acontece com linguagens de programagéo, pois elas so “formais”, ¢ 0 compilador de uma linguagem de programacao 6 um procedimento que analisa a corretude de uma seqiiéncia de simbolos ¢ determina se ela constitui um programa vélido ou nao. Assim, o compilador nao procura saber o que o programa faz, mas se ele esta corretamente escrito, Neste texto, estudaremos alguns aspectos bisicos do que se conhece como “teoria de lin- guagens formais”. A palavra “formal” nos diz que todas as regras para a linguagem sio ex- plicitamente declaradas em termos das cadeias de simbolos que podem ocorrer nela. Nenhuma liberdade ¢ tolerada e nenhum “entendimento profundo” é preciso. Sentengas serao consideradas como meros simbolos ¢ nao como expressdes de idéias na mente humana. Neste modelo basico, ‘2s linguagens (formais) néo servem para a comunicagao entre intelectos, mas como um jogo de sfmbolos, com regras formais. O termo “formal”, aqui usado, enfatiza que é a forma da cadeia de simbolos que nos interessa e nao seu significado. Seja Z um conjunto finito nao vazio de simbol uais construiremos cadeias (strings) que sio se , chamado alfabeto. Dos simbolos individ- ncias finitas de simbolos do alfabeto. Exemplo 1.2.1 Se 0 alfabeto for 5 {a,b}, entao abab e aaabba sio cadeias sobre E Usaremos como convengéo letras mintisculas iniciais do alfabeto portugués, como a, b, c,de ¢ para representar elementos de um alfabeto Ec letras mimisculas do final do alfabeto portugues, como u, v, w, 2, ye z, para indicar nomes de cadeias. Por exemplo, escreveremos w = abaaa para indicar que a cadeia de nome w tem o valor especifico abaaa. ‘A cadeia vazia, é aquela sem nenhum simbolo, e sera denotado por . A concatenagio de duas cadeias w e v, denotado por wv, é a cadeia obtida juntando-se os simbolos de » A direita de w, isto 6, se w = a1 ...@y @ v= by. -bn, entdo WY = a... dnby «-- Dm» Note que, Aw = wA = w para qualquer cadeia w. A reversa de uma cadeia é obtida escrevendo-se os simbolos em ordem reversa. Se w & ‘a cadeia acima, entao a reversa de w, denotado por w, é a cadeia aq--+a1. Uma definigao recursiva da reversa de uma cadeia é a seguinte: 4” = de (aw)” = wa Exemplo 1.2.2 Sejam w = bbab ev = aaab. Entéo wv = bbabaaab, vw = aaabbbab, w" = babb ev? = baaa. *Poema do livro Canto geral escrito por Pablo Neruda em 1950. Introdugio & Teoria da Computacio: Linguagens Formais, autématos ¢ Computabilidade 10 Capitulo 1. Introdugao Se w= vu, entao v é chamado de prefixo ¢ u de sufixo de w. Formalmente v é um prefixo dew, denotado por v ~p w, se existe uma cadeia w tal que vu = w. Analogamente, ué um sufixo de w, denotado por u =, w, se existe uma cadeia v tal que vu = w. De uma forma mais geral podemos estabelecer a nogio de subcadeia. Dizemos que u é uma subcadeia de w, denotada por uw, se existem cadeias x ¢ y tais que ruy = w. Exemplo 1.2.3 Sejaw = abbab. O conjunto de todos os prefizos dew € {X,a,ab, abb, abba, abbab}, de todos os sufizos é {,b, ab, bab, bbab, abbab} ¢ de todas as subcadeias é {A, a,b, ab, ba, 6b, abb, Dba, bab, abba, bbab, abbab}.. O comprimento de uma cadeia w, denotado por tu), 6 0 mimero de simbolos que figuram na cadeia. Por exemplo, labba| = 4. Sejam ue v cadeias quaisquer sobre um alfabeto E. Entao uo] = Jul + fol. (1.2) De fato, para mostrar esta igualdade precisamos de uma definigao mais precisa de compri- mento de cadeia, Daremos a seguinte definigéo recursiva. © [Al=0e © |wal = |w| +1, para todo a € E e qualquer cadeia w de Z. Usaremos a indugio no comprimento da cadeia para mostrar a equagio 1.2. Se |u| = 0, entio v = A. Logo, por definigéo, jul lu| +0 = [ul + lol. ue] Suponha que |uv| = |u| + |v] ¢ calculemos Juval Juva] = |uol +1 = jul + fol +. = |ul + foal. Logo, por indugio, a igualdade é vélida para todo v. Se w é uma cadeia, entdo w” 6 a cadeia obtida concatenando w com ela prépria n vezes. Portanto, w**! = ww". No caso especial de n = 0, w° = 2. Seja = um alfabeto. O fecho estrela de E, denotado por E*, é 0 conjunto de todas as cadeias (finitas) obtidas concatenando zero ou mais simbolos de 5. Por exemplo, se E = {a}, entao 3 = (1,4, aa, aaa, aaaa,...}. Formalimente, podemos definir o fecho estrela de um alfabeto 5, recursivamente, por Introdugdo & Teoria da Computacio: Linguagens Formals, autdmatos ¢ Computabilidade 7 1.2. Nogées de Linguagens, Graméticas e Autématos 1 Next 2. Sew € E* ea€ 5, entéo wa € E* 3. Os tinicos elementos de E* so aqueles que podem ser obtidos aplicando uma quantidade finita de vezes as regras 1) e 2), acima. Ou soja 3* é 0 conjunto de todas as cadeias que podem ser formadas com simbolos de 5. O conjunto E* sempre contém 2. O fecho estrela de 3 sem a cadeia vazia é denominado fecho positivo do alfabeto ©, e é denotado por E+. Isto é E+ = E* — {A}. Enquanto um alfabeto E é um conjunto finito, E* e £* so sempre infinitos, pois 5 é nio vazio e nao existe limite no comprimento das cadeias nesses dois conjuntos. Um subconjunto qualquer de E* pode ser visto como uma linguagem sobre o alfabeto 5. ‘Uma cadeia w numa linguagem C, isto é w € L, seré chamada palavra ou sentenga de £. Na teoria das linguagens formais no ha distingao entre palavras e sentengas. Para fornecer mais estrutura a essa definigéo, bastante ampla, de linguagem, estudaremos métodos pelos quais poderemos definir linguagens particulares. Exemplo 1.2.4 Seja 5 = {a,b}. Entéo E* = {X,a,6,aa, ab, ba, 6b, aaa, ab, {a,aa,aab} é uma linguagem sobre ¥. }. O conjunto A linguagem do exemplo anterior tem uma quantidade finita de palavras, por isso ela é chamada linguagem finita. Jé o conjunto £ = {a"b"/n > 0}, que também é uma linguagem sobre 5, por conter wma quantidade infinita de cadeias, 6 chamada de linguagem infinita. Como as linguagens sfo conjuntos, a unio, a intersecgio e a diferenga de duas linguagens séo imediatamente definidas. © complemento de uma linguagem L, sobre o alfabeto ©, é definida com respeito aE, isto é, o complemento de £ é a linguagem, sobre E, definida por Exemplo 1.2.5 Seja £= {we E*/ |w| € par}. Entéo Z = {we E*/ | w| é impar}. Mas como linguagens tém caracteristicas particulares (so conjuntos, mas de cadeias), pode- mos definir também operagées préprias para linguagens, tais como concatenagio, fecho estrela, fecho positivo, reverso, prefixos, sufixos, etc. A concatenacao de duas linguagens £; ¢ £2, sobre os alfabetos Z1 e D2, respectivamente, 6 linguagem, sobre o alfabeto i U Es, denotada por £1£2, consistindo do conjunto de todas as cadeias obtidas concatenando-se qualquer elemento de £1 com qualquer elemento de £2, isto é Lila = {xy /2€ Ly ey € Lo}. Introduséo & Teoria da Computagéo: Linguagons Formais, autématos e Computabilidade 12 Capitulo 1. Introdugao Exemplo 1.2.6 Sejam as linguagens £, = {aa, ab} e Ly = {bb, ba, aba}. Entao a concatenagéo de L; com Lo € a linguagem L1L2 = {aabb, aaba, aaaba, abbb, abba, ababa}.. Definimos £” como £ concatenado n vezes com cle proprio. Formalmente, °L°=(he eft acic, Note que £! = Le L? = LL. Exemplo 1.2.7 Se £ = {a"b" / n > 0}, entdo L? = {a™6"a"b" /m>0 en > 0}. Observe que m en néo estéo relacionados. A cadeia aabbaaabbb estd em L?. O fecho estrela de uma linguagem C, sobre um alfabeto ¥, denotado por L*, é 0 fecho de LU {A} C Et com respeito & operacio (binéria) de concatenacao de cadeias. Por definigao de fecho de conjuntos £* C E*, logo L* é uma linguagem sobre o proprio Z. £* também pode ser obtido da seguinte maneira: Utsuctulucu- i= 0 fecho positivo da linguagem £, denotado por L*, 0 fecho de £ © E* com respeito & operagao (binéria) de concatenagio de cadeias. Também pode ser definido por fraUcaltulucu = Observe que nao necessariamente é verdade que L*+ = £* — £2 = £* ~ {A}, pois se AE L entdo, £+ = £*. Exemplo 1.2.8 Seja £ a linguagem L = {aa,bb,aba}. Entéo os fechos estrela ¢ positivo de L sao definidos por: £* = {),aa, bb, aba, aaaa, aabb, aaaba, bbaa, bbbb, bbaba, abaaa, ababb, abaaba, aaaaaa, aaaabb, ct {aa, bb, aba, aaa, aabb, aaaba, boa, bbbb, bbaba, abaaa, ababb, abaaba, aaaaaa, aaaabb, Introdugio & Teoria da Computagior Linguagens Formais, autématos ¢ Computabilidade 13 1.2, Nogées de Linguagens, Gramaticas e Autématos ‘A linguagem reversa de uma linguagem C, sobre um alfabeto ©, é a linguagem £*, sobre © proprio alfabeto 5, consistindo de todas as cadeias em L revertidas, isto é w € £ see somente se w" € £*. Como (w)* = w para qualquer cadeia w, temos que £* é definida por LR = {wed* /w® € Lh. Exemplo 1.2.9 Seja a linguagem £ = {aa, baa, aba, abbb}. A linguagem reversa de L é: “ek aa, aab, aba, bbba} ‘A linguagem de prefixos de uma linguagem L, sobre um alfabeto 5, é a linguagem £?, sobre o préprio 5, definida por cP {ue E* / up w para algum w € L}. Isto é, LP é a linguagem consistindo de todas as cadeias que so prefixos de alguma cadeia em L. Analogamente, A linguagem de sufixos de uma linguagem £, sobre um alfabeto 5, é a linguagem £%, sobre o préprio E, definida por £S = {ue D*/u X, w para algum w € L}. Isto é, £5 6 a linguagem consistindo de todas as cadeias que séo sufixos de alguma cadeia em £. Observe que £C LP e LC LS. De fato LP NLS = L. Exemplo 1.2.10 Seja a linguagem £ = {aa, ba, baa}. Entéo LP = {),a,b,aa,ba, baa} e £5 = {d,a, ba, aa, baa}. Denotaremos a linguagem das subcadeias de uma linguagem L por £-, ou seja La = {ue 5*/u Sw para algum w € L}. Introdugéo & Teoria da Computagio: a Linguagens Formais, autOmatos e Computabilidade Capitulo 1, Introdugio 1.2.2 Gramaticas Para estudar linguagens, matematicamente, precisamos de um mecanismo para descrevé-las. A linguagem do dia a dia é imprecisa e ambigua, portanto, a descric&o em portugués, em geral, 6 inadequada. A notagéo de conjuntos é mais adequada, porém limitada. Aqui, introduziremos a nogio de gramdtica, uma ferramenta comum e poderosa para definir linguagens. Uma gramética para a Igua portuguesa nos diz se uma sentenga, em particular, é bem formada ou ndo. Uma regra tipica da gramatica portuguesa é “uma sentenga pode consistir de tum substantivo, seguido por um predicado”. Mais precisamente, podemos escrever isso como (sentenga) —+ (frase — substantivo)(predicado) com a interpretagéo Gbvia. Isto é bastante para se lidar com sentengas. Devemos também fornecer definigdes dos conceitos -_introduzidos na definigto- de _—_sentenga {frase — substantivo) e (predicado). Portanto, (frase — substantivo) — (artigo) (substantive) (predicado) —> (verbo) Se associarmos a cada sentenga “um” ou Suma” como (artigo), “cdo” e “menina” como (substantivo) e “corre” e “caminha” como (verbo), entdo a gramatica nos diz que as sentencas “um co corre” e “uma menina caminha” sao sentengas bem-formadas. Definig&o 1.2.11 Uma gramatica, G, ¢ definida como uma quidrupla G = (V,T,S,P), onde © V é um conjunto finito de objetos, chamados variéveis, T é um conjunto finito de objetos, disjunto de V, chamados simbolos terminais, © SEV é um simbolo especial, chamado varidvel de inicio, « © P é um conjunto finito de produgées. principal na gramética sdo as regras de produgdo, pois so elas que especificam como a gramAtica transforma uma cadeia em outra, o qual permite definir uma linguagem associada & gramética. Assumiremos que todas as produgées so da forma ry onde x 6 um elemento de (V UT)* ¢ y esté em (V.UT)*. As produgées sio aplicadas como segue: dado uma cadeia da forma w= urv, dizemos que a produgio é aplicavel a esta cadeia, e podemos usé-la para trocar essa ocorréncia de x por y, obtendo, assim, a nova cadeia Introdugio & Teoria da Computagio: Linguagens Formais, autématos © Computabilidade 1.2. Nogées de Linguagens, Gramaticas e Autématos z= uyv. Neste caso, dizemos que w deriva z ou z é derivada de w, denotado por w => z. Cadeias sucessivas sio derivadas aplicando regras de produgio da gramatica, numa ordem arbitraria. Uma produgio pode ser usada se ela é aplicavel e pode ser aplicada quantas vezes se quiser. Se wy => w2 =>... => wp, dizemos que wi deriva wp e escrevemos wy > wn. A estrela * indica que foi considerado um mimero néo especificado de etapas (incluindo zero) para derivar w, de wi. Portanto, w =4> w sempre se dé. Para indicar que, pelo menos uma produgio foi aplicada escreveremos w tv. Aplicando as regras de produgdo em ordens diferentes, uma gramatica pode gerar muitas cadeias. O conjunto de todas cadeias é a linguagem definida ou gerada pela gramética. Definigdo 1.2.12 Seja G = (V,T,S, P) uma gramética. O conjunto LG) = {weT"/S ++ w} é denominado linguagem gerada pela gramética G. Os elementos de L(G) séo chamados sentengas ou palavras. Se w € L(G), entao a seqiiéncia SSS mS... Sm Sw 6 uma derivagao da sentenga w. As cadeias S, wi, wz,...,Wy que contém varidveis e objetos terminais, sio chamados formas sentenciais da derivagao. Exemplo 1.2.13 Considere a gramética G= ({S},{a,b},5,P), onde P é dado por S—aSb Sr Entao, S => aSb => aaSb» = aabb. Logo, podemos escrever S 2+ ab. A cadeia aabb € uma sentenca na linguagem gerada por G, enquanto aaSbb é uma forma sentencial, Introduglo & Teoria da Computagio Linguagens Formais, autématos e Computabilidade 16 Capitulo 1. Introdugao Uma gramatica G define completamente a linguagem L(G), poréin pode nao ser facil obter uma descricéo explicita da linguagem a partir da gramstica. Nesse exemplo, no entanto, nao dificil conjeturar que L(G) = {a"b" / n > 0} € 6 fécil prové-la. Se observarmos que a regra S —+ aSb é recursiva, teremos uma prova por indu Mostremos que todas as formas sentenciais tem a forma w; = ai Sb’. 1. Sei =0, wp = S 2. Suponha que w; = a'Sb!. Mostremos que wiy1 = a! Sb'+1, Mas, de a‘Sbi, aplicando a regra S —+ aSb, obtemos ait! Sb'*!, Observe que se aplicarmos a produgio S — A, obteremos uma sentenga e nao umta forma sentencial. Logo, toda forma sentencial tem aquela forma. Agora, aplicando a regra $ — A, temos que todas as sentengas tem a forma aU", para n>0. Exemplo 1.2.14 Achar uma gramdtica que gere a linguagem L = {a"b"*1Jn < 0}. A idéia por trés do exemplo anterior pode ser estendida a este caso. Tudo que precisamos fazer é gerar um b extra. Isto pode ser feito com a produgéo S$ —+ Ab, com outras produgées escolhidas tais que A possa derivar a linguagem do exemplo anterior. Com esse raciocinio, obtemos a gramatica G = ({S, A}, {a,6},S,P), com produgdes P: S— Ab A—aAb AX Para se convencer que essa € a gramdtica pedida derive algumas sentencas. Os exemplos so relativamente fitceis, de modo que os argumentos rigorosos podem parecer supérfiuos. Mas, em geral, nao é fécil achar a gramética para uma linguagem descrita informal- mente ou dar uma caracterizagao intuitiva da linguagem definida pela gramética. Para mostrar que uma dada linguagem é, de fato, gerada por uma gramatica, G, devemos mostrar: * Que todo w € £ pode ser derivado de S, usando G. © Toda cadeia derivada, usando G, esta em £. , autématas e Computabilidade 17 1.2. Nocées de Linguagens, Graméticas ¢ Autématos Fita de Entrada [ L’ ‘aide de Cone — onugumuazeuiay ap was | Saida Figura 1.3: Representagio esquemética de wm autémato. Exemplo 1.2.15 Considere a gramética Gy = ({A,S},{a,b},S,Pi), com Py consistindo das produgées: S—aAb|d A—+adb|d Introduzimos, aqui, uma abreviagdo no qual vérias produgées com 0 mesmo lado esquerda sao escritos numa tinica linha, com lado direito alternativo separado por Nessa notagao, S—+aAb| d substitui as duas produgdes, S — aAb eS — d. Essa gramética é equivalente @ gramética G do exemplo 1.2.13, no sentido que gera a mesma linguagem. A equivaléncia é facil de mostrar provando que L(G) = {a"b" / n > 0}. 1.2.3 Automatos Um autémato é um modelo abstrato de um computador digital. Como tal, todo autémato inclui algumas caracteristicas essenciais. Ele possui um mecanismo para ler entradas. Assume-se que as entradas sfio cadeias sobre um dado alfabeto, escritos numa fita de entrada, a qual o automato pode ler, mas nao alterar. A fita de entrada é dividida em quadrados ou células, cada um dos quais pode conter um simbolo. O mecanismo de entrada pode ler a fita de entrada da esquerda para a direita, um simbolo de cada vez. O mecanismo de entrada pode detectar o fim da cadeia de entrada (percebendo uma condigao de término da eadeia), O autémato pode produzir saidas, de alguma forma. Ele pode ter um dispositive temporario de armazenamento, consistindo de ‘um niimero ilimitado de células, cada uma capaz de manter um tinico sfmbolo do alfabeto (nio necessariamente 0 mesmo do alfabeto de entrada). O autdmato pode ler ¢ alterar o contexido das células de armazenamento. Finalmente, o autémato possui uma unidade de controle, que pode estar em qualquer um de um ntimero finito de estados internos, podendo trocar os estados de um modo bem definido. A figura 1.3 mostra a representagdo esquemitica de um autémato. Assumimos que um autémato opera num tempo discreto, Em qualquer tempo dado, a unidade de controle esté em algum estado interno ¢ o mecanismo de entrada esté apontando para Inteodugio & Teoria da. Computacio: Linguagens Formais, autématos e Computabilidade 18 Capitulo 1, Introdugio um simbolo particular na fita de entrada, O estado interno da unidade de controle na. préxima etapa de tempo é determinado pelo prérimo-estado ou funcdo de transigdo. Esta fungio de transigo fornece o préximo estado, em fungdo do estado corrente, o simbolo de entrada corrente ¢ a informacio corrente na drea de armazenamento temporéria. Durante a transigio de um intervalo de tempo ao préximo, a saida pode ser produzida, ou trocada informagéo na érea de armazenamento temporério. O termo configuragao seré usado para referenciar um estado particular da unidade de controle, a fita de entrada e o armazenamento temporario. A transigio do autémato de uma configuracao para a préxima seré um movimento. Esse modelo geral cobre todos os autématos que serao discutidos neste texto. Introdugdo & Teoria da Computagéo: Linguagens Formais, autématos ¢ Computabilidede 19 1.3. Exercicios 1.3 Exercicios 1, Seja a cadeia w = 010010001 no alfabeto £ = {0,1}. Determine w®, |wl, w, w, o conjunto de todos os prefixos e de todos os sufixos de w 2. Demonstre que para quaisquer cadeias w ¢ ue para todo n > 0 temos que (a) se w é um prefixo de w entao |u| < wl, (b) Jw"| = (©) (w')* = w,e (d) (wu)® = uw fel, 3. Seja £ = {abba, abb,a,ba} no alfabeto © = {a,b}. Determine £*, £°, £5, £? ¢ oito cadeins de £ e de £*. 4, Sejam £1 = {abb,a, ba} ¢ Lz = {A,bb,a}. Determine £1 o£; e £20 Ly. 5. Mostre que para qualquer n,m > 0 e linguagem £ temos que (a) (esy™= 0", (b) L20L™ = c=, (©) (er = (£")*, (a) 2° =TRe (©) £P =((O*) 6. Seja £ uma linguagem qualquer. Entéo podemos afirmar que Z" = Z*, para todo n > 0? 7. Sejam L; e Ly duas linguagens tais que £; C £2. Demonstre que (@ epee, (b) choc, © Bch, (d) Para toda linguagem £, £; 0 £ C L20L. LR, 8. Seja £ uma linguagem. Demonstre que 9. Descreva de maneira genérica em que situagdes L? = (£5)*. Introdugdo & Teoria da Computagio: Linguagens Formais, automatos e Computabilidade 20

Você também pode gostar