Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Benedito Melo A i�oly Departamento de Cie^n ias Exatas - DCE Universidade Estadual do Sudoeste da Bahia - UESB bma�uesb.br Benjam��n Ren�e Callejas Bedregal Laborat�orio de L�ogi a e Intelige^n ia Computa ional - LabLIC Departamento de Inform�ati a e Matem�ati a Apli ada - DIMAp Universidade Federal do Rio Grande do Norte - UFRN bedregal�dimap.ufrn.br Junho, 2000 Conte�udo 1 Introdu� ~ao 1 1.1 Con eitos Matem�ati os B�asi os . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 Fun� ~oes e Rela� ~oes . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.3 Grafos e � Arvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 No� ~oes de Linguagens, Gram�ati as e Auto^matos . . . . . . . . . . . . . . . 8 1.2.1 Linguagens Formais . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.2 Gram�ati as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.3 Auto^matos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2 Auto^matos Finitos 19 2.1 Auto^matos Finitos Determin��sti os . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Linguagens e afd's . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Linguagens Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4 Auto^matos Finitos N~ao Determin��sti os . . . . . . . . . . . . . . . . . . . . 27 2.5 Equivale^n ia entre afd's e afn's . . . . . . . . . . . . . . . . . . . . . . . . 32 2.6 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3 Express~oes e Gram�ati as Regulares 45 3.1 Express~oes Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2 Conex~ao entre Express~oes Regulares e Linguagens Regulares . . . . . . . . 49 3.2.1 Linguagens Regulares para Express~oes Regulares . . . . . . . . . . 52 3.3 Gram�ati as Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.3.1 Gram�ati as Lineares �a Direita geram Linguages Regulares . . . . . 59 3.3.2 Linguagens Regulares para Gram�ati as Lineares �a Direita . . . . . . 61 i CONTE � UDO 3.3.3 Equivale^n ia entre Linguagens Regulares e Gram�ati as Regulares . 62 3.4 Propriedades das Linguagens Regulares . . . . . . . . . . . . . . . . . . . . 64 3.4.1 Quest~oes Elementares so^bre Linguagens Regulares . . . . . . . . . . 68 3.4.2 Identi� ando Linguagens n~ao regulares . . . . . . . . . . . . . . . . 70 3.5 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4 Linguagens Livres de Contexto 79 4.1 Gram�ati as Livres de Contexto . . . . . . . . . . . . . . . . . . . . . . . . 79 4.1.1 Deriva� ~oes mais �a esquerda e mais �a direita . . . . . . . . . . . . . 81 4.1.2 � Arvores de deriva� ~ao . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.1.3 Rela� ~ao entre formas senten iais e �arvores de deriva� ~ao . . . . . . . 84 4.2 An�alise e Ambiguidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.2.1 An�alise e pertine^n ia . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.3 Gram�ati as Livres de Contexto e Linguagens de Programa� ~ao . . . . . . . 90 4.4 Ambiguidades em gram�ati as e linguagens . . . . . . . . . . . . . . . . . . 91 4.5 Simpli� a� ~oes de Gram�ati as Livres de Contexto . . . . . . . . . . . . . . . 94 4.5.1 Regra Geral de Substitui� ~ao . . . . . . . . . . . . . . . . . . . . . . 95 4.5.2 Remo� ~ao de Produ� ~oes Esquerda-Re ursivas . . . . . . . . . . . . . 97 4.5.3 Remo� ~ao de Produ� ~oes In�uteis . . . . . . . . . . . . . . . . . . . . . 98 4.5.4 Remo� ~ao de �-produ� ~oes . . . . . . . . . . . . . . . . . . . . . . . . 102 4.5.5 Remo� ~ao de produ� ~oes unit�arias . . . . . . . . . . . . . . . . . . . . 104 4.6 Formas Normais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.6.1 Forma Normal de Chomsky . . . . . . . . . . . . . . . . . . . . . . 106 4.6.2 Forma Normal de Greiba h . . . . . . . . . . . . . . . . . . . . . . 108 4.7 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5 Auto^matos a Pilha 115 5.1 Auto^mato a Pilha N~ao-Determin��sti o (apn) . . . . . . . . . . . . . . . . . 115 5.1.1 A Linguagem A eita por um Auto^mato a Pilha . . . . . . . . . . . 119 5.2 Auto^matos a Pilha e Linguagens Livre de Contexto . . . . . . . . . . . . . 122 5.2.1 Linguagens Livre de Contexto para Auto^matos a Pilha . . . . . . . 122 5.3 Auto^matos a Pilha para Gram�ati as Livre de Contexto . . . . . . . . . . . 126 5.4 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 ii Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade CONTE � UDO 6 Propriedades das Linguagens Livres de Contexto 133 6.1 Lemas da Bomba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.1.1 O Lema da Bomba para Linguagens Livres de Contexto . . . . . . . 133 6.2 Propriedades de Fe ho e Algoritmos de De is~ao para Linguagens Livres de Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 6.2.1 Fe ho de Linguagens Livres de Contexto . . . . . . . . . . . . . . . 136 6.2.2 Algumas Propriedades De id��veis de Linguagens Livre de Contexto 136 6.3 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7 M�aquinas de Turing 139 7.1 A M�aquina de Turing Padr~ao . . . . . . . . . . . . . . . . . . . . . . . . . 140 7.1.1 De�ni� ~ao de M�aquina de Turing . . . . . . . . . . . . . . . . . . . . 140 7.1.2 M�aquinas de Turing omo Re onhe edoras de Linguagens . . . . . . 146 7.1.3 M�aquinas de Turing omo Tradutores (Computadores) . . . . . . . 149 7.2 Combina� ~ao de M�aquinas de Turing para Realizar Tarefas Compli adas . . 153 7.2.1 Diagramas de Blo os . . . . . . . . . . . . . . . . . . . . . . . . . . 153 7.2.2 Ma roinstru� ~ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.2.3 Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 7.3 Tese de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.4 Ligeiras Varia� ~oes da M�aquina de Turing Padr~ao . . . . . . . . . . . . . . . 161 7.4.1 M�aquinas de Turing om uma Op� ~ao de Permane^n ia . . . . . . . . 162 7.4.2 M�aquinas de Turing om uma Fita Semi-in�nita . . . . . . . . . . . 162 7.4.3 M�aquinas de Turing O�-line . . . . . . . . . . . . . . . . . . . . . . 163 7.4.4 M�aquinas de Turing om M�ultiplas Fitas . . . . . . . . . . . . . . . 163 7.4.5 M�aquinas de Turing Multidimensional . . . . . . . . . . . . . . . . 164 7.4.6 M�aquinas de Turing N~ao determin��sti as . . . . . . . . . . . . . . . 165 7.5 M�aquina de Turing Universal . . . . . . . . . . . . . . . . . . . . . . . . . 166 7.6 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade iii CONTE � UDO 8 Hierarquia das Linguagens Formais 175 8.1 Linguagens re ursivas e re ursivamente enumer�aveis . . . . . . . . . . . . . 176 8.2 Linguagens que N~ao s~ao Re ursivamente Enumer�aveis . . . . . . . . . . . . 178 8.3 Gram�ati as Irrestritas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 8.4 Linguagens Sens��veis ao Contexto . . . . . . . . . . . . . . . . . . . . . . . 186 8.4.1 Gram�ati as Sens��veis ao Contexto . . . . . . . . . . . . . . . . . . . 186 8.4.2 Auto^matos Limitados Linearmente. . . . . . . . . . . . . . . . . . 190 8.4.3 Rela� ~ao entre linguagens re ursivas e linguagens sens��veis ao on- texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.4.4 Equivale^n ia entre ALL's e gram�ati as sens��veis ao ontexto . . . . 195 8.4.5 Propriedades de fe ho das linguagens sens��veis ao ontexto . . . . . 196 8.5 A Hierarquia de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 8.6 Complexidade Computa ional . . . . . . . . . . . . . . . . . . . . . . . . . 200 8.6.1 Medida e Complexidade . . . . . . . . . . . . . . . . . . . . . . . . 200 8.6.2 Fam��lias e Classes de Complexidade . . . . . . . . . . . . . . . . . . 202 8.6.3 Classi� a� ~ao da Complexidade e a Hierarquia de Chomsky . . . . . 205 8.6.4 A Classe de Complexidade P e NP . . . . . . . . . . . . . . . . . . 206 8.7 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 9 Limites da Computa� ~ao Algor��tmi a: Problemas Inde id��veis 211 9.1 Alguns Problemas que N~ao Podem Ser Resolvidos por M�aquinas de Turing 211 9.2 O Problema da Parada para M�aquinas de Turing . . . . . . . . . . . . . . 213 9.3 Redu� ~ao de um Problema Inde id��vel ao Problema da Parada . . . . . . . 217 9.4 Problemas Inde id��veis para Linguagens Re ursivamente Enumer�aveis . . . 220 9.5 O Problema da Corresponde^n ia de Post . . . . . . . . . . . . . . . . . . . 222 9.6 Problemas Inde id��veis para Linguagens Livres de Contexto . . . . . . . . 228 9.7 Exer �� ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 iv Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Lista de Figuras 1.1 O diagrama de um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 Exemplo de �arvore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Representa� ~ao esquem�ati a de um auto^mato. . . . . . . . . . . . . . . . . 17 2.1 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3 representa� ~ao por tabela da afd do exemplo. . . . . . . . . . . . . . . . . 23 2.4 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.5 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.6 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.7 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.8 Exemplo de afd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.9 Exemplo de afn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.10 Exemplo de afn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.11 Exemplo de um afn om �-transi� ~oes. . . . . . . . . . . . . . . . . . . . . 29 2.12 Exemplo de um afn om �-transi� ~oes. . . . . . . . . . . . . . . . . . . . . 30 2.13 afd equivalente ao afn do exemplo 2.4.4. . . . . . . . . . . . . . . . . . . 32 2.14 afd equivalente �a afn da �gura 2.10 . . . . . . . . . . . . . . . . . . . . . 33 2.15 Exemplo de afn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.16 afd equivalente ao afn da �gura 2.15. . . . . . . . . . . . . . . . . . . . . 35 2.17 Exemplo de afn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.18 afd equivalente ao afn da �gura 2.17. . . . . . . . . . . . . . . . . . . . . 38 2.19 Exemplo de afn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.20 afd equivalente ao afn da �gura 2.19. . . . . . . . . . . . . . . . . . . . . 40 3.1 afn's que a eitam as linguagens regulares ;, f�g e fag, respe tivamente. . . 50 v LISTA DE FIGURAS 3.2 Representa� ~ao esquem�ati a de um afn que re onhe e L(r). . . . . . . . . . 51 3.3 Auto^mato para L(r 1 + r 2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.4 Auto^mato para L(r 1 r 2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.5 Auto^mato para L(r � 1 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.6 M 1 re onhe e L(aa) e M 2 re onhe e L(bb). . . . . . . . . . . . . . . . . . . 53 3.7 M 3 re onhe e L(aa + bb). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.8 M 4 re onhe e L((aa + bb) � ). . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.9 M 5 re onhe e L(ba). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.10 M 6 re onhe e L((aa + bb) � ba). . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.11 afd para o exemplo 3.2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.12 Representam V i �! a 1 a 2 : : : a m V j e V i �! a 1 a 2 : : : a m , respe tivamente. . 60 3.13 afn resultante de uma gram�ati a linear �a direita. . . . . . . . . . . . . . . . 61 3.14 afd M 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.15 afd M 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.1 Parte da �arvore de deriva� ~ao para a produ� ~ao A �! abAB . . . . . . . . . 83 4.2 Uma �arvore de deriva� ~ao par ial. . . . . . . . . . . . . . . . . . . . . . . . 84 4.3 Uma �arvore de deriva� ~ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.4 Exemplo de �arvores de deriva� ~ao diferentes para uma mesma adeia. . . . 92 4.5 Exemplo de �arvores de deriva� ~ao diferentes para uma mesma adeia. . . . 92 4.6 Exemplo de �arvore de deriva� ~ao numa gram�ati a, n~ao ambigua, equivalente �a gram�ati a ambigua do exemplo anterior. . . . . . . . . . . . . . . . . . . 93 4.7 Exemplo de grafo de depende^n ia . . . . . . . . . . . . . . . . . . . . . . . 100 4.8 � Arvore de deriva� ~ao par ial . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.9 Exemplo de grafo de depende^n ia para remo� ~ao de produ� ~oes unit�arias. . . 105 5.1 Representa� ~ao esquem�ati a de um auto^mato a pilha. . . . . . . . . . . . . 116 7.1 Representa� ~ao esquem�ati a de uma m�aquina de Turing . . . . . . . . . . . 140 7.2 A situa� ~ao (a) antes do movimento e (b) ap�os. . . . . . . . . . . . . . . . 141 7.3 Parte da exe u� ~ao de uma m�aquina de Turing. . . . . . . . . . . . . . . . 142 7.4 Con�gura� ~ao arbitr�aria de uma m�aquina de Turing . . . . . . . . . . . . . 144 7.5 Exemplo de ombina� ~ao de m�aquinas de Turing . . . . . . . . . . . . . . . 154 vi Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade LISTA DE FIGURAS 7.6 Divis~ao da �ta para simula� ~ao de subprogramas em m�aquinas de Turing. . 157 7.7 Conte�udo da �ta para a multipli a� ~ao usando a id�eia de subprograma. . . 157 7.8 Fita ilimitada somente �a direita. . . . . . . . . . . . . . . . . . . . . . . . 162 7.9 Representa� ~ao esquem�ati a de uma m�aquina de Turing o�-line. . . . . . . 163 7.10 Representa� ~ao esquem�ati a de uma m�aquina de Turing om duas �tas. . . 164 7.11 Esquema de endere� o bidimensional. . . . . . . . . . . . . . . . . . . . . . 164 7.12 Representa� ~ao esquem�ati a de uma m�aquina de Turing universal. . . . . . 167 8.1 pro edimento de enumera� ~ao das omputa� ~oes de uma m�aquina de Turing M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 8.2 Hierarquia de Chomsky original. . . . . . . . . . . . . . . . . . . . . . . . 198 8.3 Hierarquia de Chomsky. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 8.4 Con�gura� ~ao de uma M�aquina de Turing de duas �tas quere onhe e a linguagem a n b n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.1 Diagrama de blo os para uma suposta m�aquina de Turing que resolve o problema da parada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 9.2 Diagrama de blo os para uma variante da suposta m�aquina de Turing que resolve o problema da parada . . . . . . . . . . . . . . . . . . . . . . . . . 215 9.3 Algoritmo para o problema da parada usando um algoritmo de parada para a �ta em bran o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 9.4 Algoritmo para o problema da parada om a �ta em bran o baseado num algoritmo para omputar f(n). . . . . . . . . . . . . . . . . . . . . . . . . . 219 9.5 Algoritmo de pertine^n ia para linguagens re ursivamente enumer�aveis. . . . 221 9.6 Uma solu� ~ao para o problema da parada baseada num algoritmo que diz se uma linguagem �e �nita ou n~ao. . . . . . . . . . . . . . . . . . . . . . . 221 9.7 Exemplo de solu� ~ao-CP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 9.8 Exemplo de solu� ~ao-CPM (par ial) . . . . . . . . . . . . . . . . . . . . . . 225 9.9 Exemplo de solu� ~ao-CPM ( ontinua� ~ao) . . . . . . . . . . . . . . . . . . . 226 9.10 Algoritmo de pertine^n ia para uma gram�ati a irrestrita. . . . . . . . . . . 226 9.11 Algoritmo CPM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.12 Algoritmo CP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade vii Dedi at�oria do segundo autor Com tudo meu amor, admira� ~ao e arinho a minha m~ae, que om sua for� a e f�e, nos legou um exemplo de vida. Agrade imentos Durante v�arios anos, os autores (e alguns olegas) usaram vers~oes pr�evias deste texto omo livro base para le ionar as dis iplinas de \Teoria da Computa� ao" e \Linguagens Formais", nas universidades: Universidade Federal de Pernambu o, Universidade Federal do Rio Grande do Norte e Universidade Estadual do Sudoeste da Bahia. Agrade emos sin- eramente aos alunos dessas turmas, pois om suas d�uvidas e questionamentos ajudaram a re�nar este texto at�e hegar �a atual vers~ao. Nossos agrade imentos ao orpo do ente do DIMAp-UFRN e da DCE-UESB pelo seu onstante in entivo para publi ar esta obra. Finalmente, agrade emos parti ularmente aos nossos olegas Regivan Hugo Nunes Santiago, Wilson Rosa de Oliveira e Aar~ao Lyra pelo seus oment�arios e orre� ~oes do texto. ix Cap��tulo 1 Introdu� ~ao A importa^n ia da teoria para a pr�ati a, em qualquer ie^n ia, seja fa tual ou exata, �e imensa. Para elu idar a orrela� ~ao entre ambos aspe tos de uma ie^n ia foram formu- ladas algumas frases onsagradas tais omo: \A teoria �e a luz da pr�ati a" e \A pr�ati a sem a teoria �e ega, mas a teoria sem a pr�ati a �e esteril". Como �e de supor, a ie^n ia da omputa� ~ao, n~ao poderia � ar alheia a esta intera� ~ao e, portanto, uma teoria para esta ie^n ia se faz ne ess�ario para \iluminar o aminho" dos ientistas da omputa� ~ao (pr�ati os), dos engenheiros em omputa� ~ao, dos analistas de sistemas, em �m de todos os professionais que usem a omputa� ~ao omo objeto de estudo ou de trabalho. Assim, antes de des rever o que seria uma teoria para a ie^n ia da omputa� ~ao, devemos ex lare er que entendemos por ie^n ia da omputa� ~ao ou, simplesmente, por omputa� ~ao. Entendendo por omputa� ~ao tudo o que um omputador pode realizar, devemos pri- meiro entender o que um omputador �e, uja resposta poderia ser dada em termos de hardware e te nologia. Mas, temos de ter uidado, para n~ao nos limitarnos �a te nologia do momento, pois nessa de�ni� ~ao de omputador devem oexistir os primeiros omputado- res, al uladoras, super omputadores e futuros omputadores. Ou seja, seria ne ess�ario uni� ar ara ter��sti as essen iais e omuns a todos os omputadores, de tal modo a dis- tinguir um omputador de outros tipos de hardware, tais omo elevadores, to a CD, et . Isto nos levar�a, irremediavelmente, a de�nir uma no� ~ao abstrata de omputador, onde ele possa ser melhor des rito em termos do que ele faz. A teoria nos forne e on eitos e prin ��pios para nos ajudar entender a natureza geral da ie^n ia do omputador. O ampo dessa dis iplina in lui um vasto leque de t�opi os es- pe iais, desde projetos de m�aquinas at�e programa� ~ao. O uso dos omputadores no mundo real envolve uma riqueza de detalhes espe ��� os que devem ser aprendidos para uma apli- a� ~ao om su esso. Isto faz om que a ie^n ia da omputa� ~ao seja diversi� ada e ampla. Apesar dessa diversidade, existem alguns prin ��pios b�asi os omuns. Para estudar esses prin ��pios b�asi os, onstruiremos modelos abstratos de omputadores e omputa� ~ao. Esses modelos ont�em as ara ter��sti as importantes que s~ao omuns tanto ao hardware quanto ao software, essen iais a muitos onstrutos espe iais e omplexos en ontrados quando se trabalha om omputadores. Mesmo que esses modelos sejam muito simples para serem 1 Cap��tulo 1. Introdu� ~ao apli ados imediatamente nas situa� ~oes do mundo real, o entendimento que ganhamos em estud�a-los nos forne e fundamentos sobre os quais o desenvolvimento espe ��� o �e baseado. Esta abordagem n~ao �e ex lusividade da ie^n ia da omputa� ~ao. A onstru� ~ao de mode- los �e essen ial em qualquer dis iplina ient��� a, e a utilidade de uma dis iplina depende frequentemente da teoria e de leis simples, ainda que poderosas. Al�em do mais, as id�eias que dis utiremos te^m algumas apli a� ~oes imediatas e importantes. Os ampos de projetos digitais, linguagens de programa� ~ao e ompiladores s~ao os exemplos mais �obvios, existem por�em muitos outros (Proto olos de omuni a� ~ao, projetos de hardwares digitais, et .). Este texto �e o resultado de diversos ursos ministrados pelos autores para a dis ipli- na de \teoria da omputa� ~ao" dos ursos de gradua� ~ao em Ba harelado em Cie^n ia da Computa� ~ao da Universidade Federal do Rio Grande do Norte - UFRN, da Universida- de Federal de Pernambu o - UFPE e da Universidade Estadual do Sudoeste da Bahia - UESB e no urso de Engenharia da Computa� ~ao da UFRN. Como esta dis iplina �e pre- requisito da dis iplina \ ompiladores", enfatizamos os on eitos de linguagens formais, om suas abordagens atrav�es de auto^matos e de gram�ati as. Mas, omo prin ipalmente �e um urso de \teoria da omputa� ~ao ", tamb�em estudamos a no� ~ao de omputabilidade e onsideramos uma breve dis us~ao de omplexidade omputa ional. Os t�opi os apresentados neste texto s~ao importantes para os estudantes de inform�ati a, seja de ie^n ias ou de engenharia, pois os olo am diante de quest~oes profundas de na- tureza omputa ional e de onhe imentos que n~ao ser~ao rapidamente absoletados, pois n~ao dependem da te nologia. Assim, este texto nos permite vislumbrar o poder das fer- ramentas matem�ati as e dos m�etodos formais para modelar feno^menos da omputa� ~ao. No entanto, �e �obvio que este texto n~ao �e exaustivo no que tange �a teoria da omputa� ~ao, pois s�o se dire iona a modelar linguagens formais e omputabilidade l�assi a, deixando de lado ertos aspe tos espe ��� os, omo por exemplo omputa� ~ao on orrente e distrib��da, espe i� a� ~ao formal, omputa� ~oes num�eri as envolvendo n�umeros reais, et . � E este estudo dos feno^menos da omputa� ~ao atrav�es de modelos matem�atios ou formais �e que ergue a omputa� ~ao ao patamar de uma ie^n ia em lugar de uma mera te nologia. Neste texto, estudaremos diversas lasses de linguagens (formais), mas daremos e^nfase espe ialmente a quatro delas: 1. Linguagens regulares, 2. Linguagens livres de ontexto, 3. Linguagens sens��veis ao ontexto e 4. Linguagens re ursivamente enumer�aveis. Cada uma dessas lasses de linguagens ser�a abordada atrav�es de auto^matos, que s~ao modelos matem�ati os de lasses de omputadores digitais, e atrav�es de gram�ati as, que s~ao, basi amente, um onjunto de regras que dizem omo onstruir palavras v�alidas da linguagem. 2 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao Exploramos o mais omplexo destes auto^matos, e observamos que ele n~ao s�o tem apa idade para re onhe er linguagens formais, mas tamb�em pode transformar entradas em sa��das, ou seja realizar omputa� ~oes omo qualquer omputador real faz. Este �e o ponto de partida para se introduzir a no� ~ao de omputabilidade e estabele er os limites do mundo da omputa� ~ao. Finalmente, om um onhe imento do que �e e o que n~ao �e omput�avel, podemos nos preo upar om analizar a qualidade das solu� ~oes, isto �e, n~ao s�o �e importante saber se um determinado problema admite uma solu� ~ao implement�avel num omputador, mas se essa solu� ~ao vai nos ser �util (se vai ser realizada em um tempo razo�avel, ou ainda se ela o upa espa� o de mem�oria que dispomos). Ou seja, agora podemos nos preo upar om a omplexidade omputa ional das solu� ~oes. Para isso, introduzimos algumas medidas de omplexidade baseadas no tempo de exe u� ~ao de um algoritmo e do espa� o usado por ele. Neste ap��tulo, veremos alguns on eitos matem�ati os b�asi o, fundamentais para o entendimento do texto. Al�em do mais, veremos de modo geral e super� ial as tre^s vis~oes (linguagem, auto^mato e gram�ati a) que adotaremos neste texto, para estudar o poder omputa ional dos nossos modelos. 1.1 Con eitos Matem�ati os B�asi os 1.1.1 Conjuntos Um onjunto �e uma ole� ~ao de objetos (seus elementos) distintos. Des revemos um on- junto enumerando um a um seus elementos em alguma ordem adequada ou des revendo uma propriedade que s�o os elementos do onjunto possuem ou satisfazem. Em geral, deno- tamos onjuntos por letras mai�us ulas om ou sem ��ndi es, por exemplo A;B;C;A 1 ; B k ; et . Se a �e um elemento de um onjunto A, dizemos que a perten e a A, denotado por a 2 A. Se v�arios elementos, digamos a; b e perten em ao onjunto A denotamo-lo por a; b; 2 A. O onjunto que n~ao tem elementos �e denominado onjunto vazio, denotado por ;. O onjunto vazio pode ser espe i� ado por uma propriedade que nenhum elemento satisfaz. Por exemplo, ; = fx=x 6= xg. O onjunto ujos elementos s~ao todos objetos f��si os ou mentais que existem, existiram ou existir~ao no universo �e denominado onjunto universo e o denotamos por U. Um onjunto A �e um sub onjunto de um onjunto B ou A est�a ontido ou �e igual a B, denotado por X � B, se todos os elementos de A s~ao elementos de B, isto �e, se para todo x, se x 2 A ent~ao x 2 B. Os onjuntos A e B s~ao iguais, denotado por A = B, se A � B e B � A. Dizemos que um onjunto A �e um sub onjunto pr�oprio de B, denotado por A � B, se A � B e A n~ao �e igual a B, ou seja se A � B e existe um elemento de B que n~ao est�a em A. Proposi� ~ao 1.1.1 Sejam A; B e C onjuntos qualquer. Ent~ao Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 3 1.1. Con eitos Matem�ati os B�asi os 1. ; � A. 2. Se A � B ent~ao A � B. 3. Se A � B e B � C ent~ao A � C. 4. Se A � B e B � C ent~ao A � C. 5. Se A � B e B � C ent~ao A � C. A seguir de�niremos algumas opera� ~oes b�asi as so^bre onjuntos. Sejam A; B e C tre^s onjuntos quaisquer. � Uni~ao: A [B = fx = x 2 A ou x 2 Bg, � Interse � ~ao: A \B = fx = x 2 A e x 2 Bg, � Diferen� a: A� B = fx = x 2 A e x 62 Bg, � Complementa� ~ao: A = fx = x 62 Ag. Propriedades: � A [ B = B [ A, � A \ B = B \ A, � A [ (B \ C) = (A \B) [ (A \ C), � A \ (B [ C) = (A [B) \ (A [ C), � A [ ; = A� ; = A, � A \ ; = ;, � ; = U, � A = A, � A [ B = A \ B, � A \ B = A [ B, � Se A � B ent~ao A [B = B, A \B = A e B � A. 4 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao Se A e B s~ao onjuntos sem nenhum elemento em omum, isto �e, se A\B = ;, ent~ao A e B s~ao denominados onjuntos disjuntos. Um onjunto diz-se �nito se ont�em um n�umero �nito de elementos. Caso ontr�ario, e^le se diz in�nito. O tamanho ou ardinalidade de um onjunto �nito �e o n�umero de elementos que e^le ont�em , denotado por jA j. Seja fA i g i2I uma fam��lia de onjuntos indexada por I. Ent~ao 1. a uni~ao da fam��lia �e de�nida por [ i2I A i = fx = existe i 2 I tal que x 2 A i g 2. a interse� ~ao da fam��lia �e de�nida por \ i2I A i = fx = para todo i 2 I tal que x 2 A i g 3. se I = f1; 2; � � � ; ng ent~ao denotamos a uni~ao e interse� ~ao da fam��lia fA i g i2I por n [ i=1 A i e n \ i=1 A i Um dado onjunto pode ter muitos sub onjuntos. O onjunto de todos os sub onjuntos de um onjunto A �e hamado o onjunto pote^n ia ou onjunto das partes de A, denotado por 2 A ou } (A). Exemplo 1.1.2 Se A �e o onjunto fa; b; g, ent~ao seu onjunto pote^n ia �e 2 A = f;; fag; fbg; f g; fa; bg; fa; g; fb; g; fa; b; gg Observe que neste aso j A j= 3 e j 2 A j= 2 jAj = 2 3 = 8. Generalizando, se A �e um onjunto �nito ent~ao j 2 A j= 2 jAj . Esta propriedade deu origem ao nome de onjunto pote^n ia. 1.1.2 Fun� ~oes e Rela� ~oes Uma fun� ~ao �e uma regra que asso ia a ertos elementos de um onjunto um �uni o ele- mento de outro onjunto. Se f denota uma fun� ~ao, ent~ao o primeiro onjunto �e hamado onjunto de partida e o segundo onjunto �e hamado onjunto de hegada. Es re- veremos f : A �! B, para indi ar que f �e uma fun� ~ao ujo onjunto de partida �e A e ujo onjunto de hegada �e B. Eventualmente, teremos asos em que alguns elementos Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 5 1.1. Con eitos Matem�ati os B�asi os do onjunto de partida n~ao tenham asso iado nenhum elemento do onjunto de hegada atrav�es da fun� ~ao f . O sub onjunto de A ujos elementos s~ao asso iados a elementos de B �e hamado dom��nio de f , denotado por dom(f). Analogamente, o sub onjunto de B, aos quais aqueles elementos de A foram asso iados, �e hamado imagem ou ontradom��nio de f e o denotamos por img(f). Se o dom��nio de f �e todo A, f diz-se uma fun� ~ao total sobre A, aso ontr�ario f diz-se uma fun� ~ao par ial. No otidiano sempre estamos rela ionando objetos de um mesmo tipo ou de diferentes tipos. Por exemplo, a rela� ~ao \perte er �a mesma familia", rela iona pessoas que s~ao de uma mesma familia e a rela� ~ao \ser dono" rela iona pessoas om objetos. Assim, uma rela� ~ao exige que exista uma onex~ao entre as oisas que se rela ionam. Esta no� ~ao de onex~ao de um objeto a om um objeto b, pode ser formalmente olo ado introduzindo a no� ~ao de par ordenado, (a; b). A no� ~ao de par ordenado tem a seguinte propriedade fundamental: (x 1 ; x 2 ) = (y 1 ; y 2 ) se, e somente se, x 1 = y 1 e x 2 = y 2(1.1) Ou seja nos pares ordenados a ordem em que s~ao dispostos os elementos �e importante. Colo ado dessa maneira, aparentemente, n~ao podemos pensar um par ordenado omo um onjunto, mas poder��amos en arar um par ordenado, (a; b), omo uma abrevia� ~ao do onjunto fa; fa; bgg. Esta vis~ao onjuntista de par ordenado satisfaz a propriedade fundamental 1.1. O onjunto de todos os pares ordenados poss��veis de ser onstru��dos entre um onjunto A e um Conjunto B, �e denominado produto artesiano de A om B, uja denota� ~ao �e A� B. Assim, A� B = f(a; b) = a 2 A e b 2 Bg: A no� ~ao de par ordenado pode ser estendida �a no� ~ao de n-tuplas ordenadas, isto �e, em vez de onsiderar elementos de dois onjuntos, onsiderar elementos de n onjuntos. Denotaremos uma n-tupla por (a 1 ; � � � ; a n ). Analogamente, podemos onsiderar o produto artesiano dos onjuntos A 1 ; � � � ; A n , denotado por A 1 � � � � � A n , por A 1 � A 2 � � � � � A n = f(x 1 ; x 2 ; � � � ; x n ) = x i 2 A i ; para ada 1 � i � ng Assim, uma rela� ~ao r entre os elementos de um onjunto A om os elementos de um onjunto B �e, em suma, um sub onjunto do produto artesiano de A om B, ou seja, r � A�B. Analogamente, uma fun� ~ao f : A �! B pode ser vista omo um sub onjunto do produto artesiano de A om B, isto �e, f � A � B, onde ada x i pode o orrer no m�aximo uma vez omo o primeiro elemento de um par ordenado em f . Esta maneira de en arar fun� ~oes �e hamada gr�a� o da fun� ~ao f . Claramente, as rela� ~oes s~ao mais gerais que as fun� ~oes: numa fun� ~ao ada elemento do dom��nio tem asso iado a ele exatamente um elemento no ontradom��nio; numa rela� ~ao podem existir v�arios de tais elementos no ontradom��nio. 6 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao Uma rela� ~ao espe ialmente importante �e uma rela� ~ao de equivale^n ia, que �e uma generaliza� ~ao do on eito de igualdade (identidade). Para indi ar que um par (x; y) �e equivalente, es revemos x � y Uma rela� ~ao, denotada por �, �e onsiderada uma equivale^n ia se ela satisfaz tre^s regras: � Re exividade: x � x para todo x, � Simetria: se x � y, ent~ao y � x e � Transitividade: se x � y e y � z, ent~ao x � z. Exemplo 1.1.3 Seja N = f0; 1; 2; : : :g o onjunto dos n�umeros naturais e de�na x � y se e somente se x (mod 3) = y (mod 3) Assim, 2 � 5, 6 � 9 e 10 � 16. Isso �e laramente uma rela� ~ao de equivale^n ia. 1.1.3 Grafos e � Arvores Um grafo �e um onstruto onstitu��do de dois onjuntos �nitos, o onjunto V = fv 1 ; v 2 ; : : : ; v n g de v�erti es e o onjunto A = fa 1 ; a 2 ; : : : ; a m g de arestas. Cada aresta �e um par de v�erti es de V , por exemplo, e i = (v j ; v k ). Neste aso, dizemos que a aresta e i �e uma aresta de sa��da para v j e de hegada para v k . Tal onstruto �e mais pre isamente um grafo dirigido, uma vez que asso iamos uma dire� ~ao (de v j a v k ) a ada aresta. Grafos podem ser rotulados, sendo o r�otulo um nome ou outra informa� ~ao asso iada �as omponentes do grafo. Tanto os v�erti es quanto as arestas podem ser rotulados. Uma maneira onveniente de se visualizar grafos �e atrav�es de diagramas, nos quais os v�erti es s~ao representados por ��r ulos e as arestas por linhas, om setas one tando os v�erti es. O grafo om v�erti es fv 1 ; v 2 ; v 3 g e arestas f(v 1 ; v 3 ); (v 3 ; v 1 ); (v 3 ; v 2 ); (v 3 ; v 3 )g �e desenhado na �gura 1.1. Uma seque^n ia de arestas (v i ; v j ); (v j ; v k ); (v k ; v l ); � � � ; (v m ; v n ) diz-se um aminho de v i a v n . O omprimento de um aminho �e o n�umero total de arestas que ele atravessa indo do v�erti e ini ial ao v�erti e �nal. Um aminho no qual nenhuma aresta �e repetida diz-se uma trilha. Uma trilha �e simples se nenhum v�erti e �e repetido, isto �e, se n~ao existem duas arestas distintas, (v i ; v j ) e (v k ; v l ), na trilha tal que v i = v k ou v j = v l . Uma trilha de v i a ele pr�oprio diz-se um i lo om base v i . Se nenhum v�erti e al�em de v i , a Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 7 1.2. No� ~oes de Linguagens, Gram�ati as e Auto^matos v v v 1 2 3 Figura 1.1: O diagrama de um grafo base, �e repetido o i lo om base v i diz-se simples. No grafo da �gura 1.1 (v 1 ; v 3 ); (v 3 ; v 2 ) �e uma trilha simples de v 1 a v 2 . A seque^n ia de arestas (v 1 ; v 3 ); (v 3 ; v 3 ); (v 3 ; v 1 ) �e um i lo om base v 1 , mas n~ao simples, pois repete o v�erti e v 3 , j�a a seque^n ia (v 1 ; v 3 ); (v 3 ; v 1 ) �e um i lo simples om base v 1 . Se as arestas de um grafo s~ao rotuladas, podemos falar do r�otulo de um aminho. Este r�otulo �e a seque^n ia de r�otulos das arestas en ontradas quando se per orre a trilha. Em v�arias o asi~oes, nos referiremos a um algoritmo para a har todas as trilhas sim- ples entre dois v�erti es (ou todos os i los simples baseados num v�erti e). Se n~ao nos preo uparmos om e� ie^n ia podemos usar o seguinte m�etodo. Ini iar do v�erti e dado, digamos v i , liste todas as arestas de sa��da de v i , (v i ; v k ); (v i ; v l ); : : :. Neste ponto temos todas as trilhas de omprimento um, ome� ando em v i . Para todos os v�erti es v k ; v l ; : : : al an� ados, liste todas as arestas de sa��da desde que elas n~ao levem a qualquer v�erti e j�a usado na trilha que estamos onstruindo. Ap�os isto, teremos todas as trilhas simples de omprimento dois ini iando em v i e assim por diante. Como s�o existe um n�umero �nito de v�erti es, mais edo ou mais tarde teremos listado todas as trilhas simples, om in�� io em v i . Desses es olheremos aqueles terminando no v�erti e desejado. As �arvores s~ao tipos parti ulares de grafos. Uma �arvore �e um grafo dirigido que n~ao possui i los, tendo um v�erti e distinguido hamado raiz, tal que existe exatamente uma trilha da raiz a qualquer outro v�erti e. Esta de�ni� ~ao impli a que n~ao existe aresta de hegada na raiz e que existe v�erti es sem arestas de sa��da, hamados folhas da �arvore. Se existe uma aresta de v i para v j , v i �e dita um pai de v j , e v j �e dito um �lho de v i . O n��vel asso iado a ada v�erti e �e o n�umero de arestas na trilha da raiz ao v�erti e. A altura de uma �arvore �e o n�umero mais alto do n��vel de algum v�erti e. 1.2 No� ~oes de Linguagens, Gram�ati as e Auto^matos Na primeira parte de nosso urso abordaremos tre^s ideias fundamentais: linguagem, grama^ti a e auto^mato. Estaremos parti ularmente interessados nas suas rela� ~oes. 8 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao Raiz Folha Altura=3 Nivel 0 Nivel 3 Figura 1.2: Exemplo de �arvore 1.2.1 Linguagens Formais Em Portugue^s, existem tre^s tipos de entidades diferentes: letras, palavras e senten� as. Existe um erto paralelismo entre elas, no sentido de que grupos de letras onstituem uma palavra, e grupos de palavras uma senten� a. Mas, nem toda on atena� ~ao de letrasforma uma palavra, nem toda seque^n ia de palavras uma senten� a. A analogia pode ser estendida a paragrafos, hist�orias, e assim por diante. A situa� ~ao, se d�a, tamb�em, para as linguagens de programa� ~ao, na qual ertos agrupamentos de palavras haves s~ao um omando e algumas seque^n ias de omandos s~ao programas. Para onstruir uma teoria geral que uni�que todos estes asos, ser�a ne ess�ario adotar uma de�ni� ~ao para a estrutura de linguagens mais universal, isto �e, uma estrutura na qual a de is~ao de quando uma adeia de unidades onstitui uma unidade maior v�alida, seja baseada na apli a� ~ao de regras expli itamente de�nidas. Em linguagens tipo Portugue^s, Ingle^s e em alguns dialetos tipo Guarany, Aymara, et . n~ao podemos dar regras que nos permitam des rever todas as frases oerentes da linguagem. Isto porque elas s~ao linguagens ditas naturais , na qual depende de nossa habilidade para interpretar met�aforas po�eti as de senten� as mal es ritas. Isto j�a n~ao a onte e om linguagens de programa� ~ao, pois elas s~ao \formais", e o ompilador de uma linguagem de programa� ~ao �e um pro edimento que analiza a orretude de uma seque^n ia de s��mbolos e determina se ela onstitui um programa v�alido ou n~ao. Assim, o ompilador n~ao pro ura saber o que o programa faz, mas se ele est�a orretamente es rito. Neste texto, estudaremos alguns aspe tos b�asi os do que se onhe e omo \teoria de linguagens formais". A palavra \formal" nos diz que todas as regras para a linguagem s~ao expli itamente de laradas em termos das adeias de s��mbolos que podem o orrer nela. Nenhuma liberdade �e tolerada e nenhum \entendimento profundo" �e pre iso. Senten� as ser~ao onsideradas omo meros s��mbolos e n~ao omo express~oes de ideias na mente huma- na. Neste modelo b�asi o, as linguagens (formais) n~ao servem para a omuni a� ~ao entre Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 9 1.2. No� ~oes de Linguagens, Gram�ati as e Auto^matos intele tos, mas omo um jogo de s��mbolos, om regras formais. O termo \formal", aqui usado, enfatiza que �e a forma da adeia de s��mbolos que nos interessa e n~ao seu signi� ado. Seja � um onjunto �nito n~ao vazio de s��mbolos, hamado alfabeto. Dos s��mbolos individuais onstruiremos adeias (strings) que s~ao seque^n ias �nitas de s��mbolos do alfabeto. Exemplo 1.2.1 Se o alfabeto fo^r � = fa; bg, ent~ao abab e aaabba s~ao adeiais sobre �. Com raras ex e� ~oes, usaremos as letras min�us ulas ini iais do alfabeto portugue^s, omo a; b; ; d e e para representar elementos de um alfabeto � e letras min�us ulas do �nal do alfabeto protugue^s, omo u; v; w; x; y e z, para indi ar nomes de adeias. Por exemplo, es reveremos w = abaaa para indi ar que a adeia de nome w tem o valor espe ��� o abaaa. A on atena� ~ao de duas adeias w e v, denotado por wv, �e a adeia obtida juntando- se os s��mbolos de v �a direita de w, isto �e, se w = a 1 : : : a n e v = b 1 : : : b n , ent~ao wv = a 1 : : : a n b 1 : : : b m . A reversa de uma adeia �e obtida es revendo-se os s��mbolos em ordem reversa. Se w �e a adeia a ima, ent~ao a reversa de w, denotado por w R , �e a n � � �a 1 . Se w = vu, ent~ao v diz-se um pre�xo e u um su�xo de w. O omprimento de uma adeia w, denotado por jw j, �e o n�umero de s��mbolos que �guram na adeia. A adeia vazia, �e aquela sem nenhum s��mbolo, que ser�a denotado por �. Por exemplo, j� j= 0, �w = w� = w, para todo w. Se u e v s~ao adeias, ent~ao juv j=ju j + jv j : (1.2) De fato, para mostrar esta igualdade pre isamos de uma de�ni� ~ao mais pre isa de omprimento de adeia. Daremos a seguinte de�ni� ~ao re ursiva. � j� j= 0 � ja j= 1 � jwa j=jw j +1 para todo a 2 � e qualquer adeia w. Usaremos a indu� ~ao no omprimento da adeia para mostrar a equa� ~ao 1.2. Se jv j= 0, ent~ao v = �. Logo, por de�ni� ~ao, 10 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao juv j =ju j =ju j +0 =ju j + jv j Suponha que juv j=ju j + jv j e al ulemos juva j: juva j =juv j +1 =ju j + jv j +1 =ju j + jva j Logo, por indu� ~ao, a igualdade �e v�alida para todo v. Se w �e uma adeia, ent~ao w n �e a adeia obtida on atenando w om ela pr�oprio n vezes. Portanto, w n+1 = ww n . No aso espe ial de n = 0, w 0 = �. Seja � �e um alfabeto. O fe ho estrela de �, denotado por � � , �e o onjunto de todas as adeias (�nitas) obtidas on atenando zero ou mais s��mbolos de �. Por exemplo, se � = fag, ent~ao � � = f�; a; aa; aaa; aaaa; : : :g: Formalmente, podemor de�nir o fe ho estrela de um alfabeto �, indutivamente, por 1. � 2 � � 2. Se w 2 � � e a 2 �, ent~ao wa 2 � � 3. os �uni os elementos de � � s~ao aqueles que podem ser obtidos apli ando uma quan- tidade �nita de vezes as regras 1) e 2), a ima. O onjunto � � sempre ont�em �. Para ex luir a adeia vazia, de�nimos o fe ho soma de uma alfabeto �, por � + = � � � f�g. Enquanto um alfabeto � �e um onjunto �nito, � � e � + s~ao sempre in�nitos, pois � �e n~ao vazio e n~ao existe limite no omprimento das adeias nesses dois onjuntos. Uma linguagem �e de�nida em sentido amplo omo um sub onjunto de � � . Qualquer adeia w, numa linguagem L, ser�a hamada palavra ou senten� a de L. Na teoria das linguagens formais n~ao distinguiremos palavras de senten� as. Para forne er mais estrutura a essa de�ni� ~ao, bastante ampla, de linguagem, estudaremos m�etodos pelos quais poderemos de�nir linguagens parti ulares. Exemplo 1.2.2 Seja � = fa; bg. Ent~ao � � = f�; a; b; aa; ab; ba; bb; aaa; aab; : : :g. O onjunto fa; aa; aabg �e uma linguagem sobre �. Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 11 1.2. No� ~oes de Linguagens, Gram�ati as e Auto^matos A linguagem do exemplo anterior tem uma quantidade �nita de palavras, por isso ela �e hamada linguagem �nita. O onjunto L = fa n b n =n � 0g �e tamb�em uma linguagem sobre �. As adeias aabb e aaaabbbb s~ao palavras de L, mas a adeia abb n~ao est�a em L. Esta linguagem �e in�nita. Como as linguagens s~ao onjuntos, a uni~ao, a interse� ~ao e a diferen� a de duas lin- guagens s~ao imediatamente de�nidas. O omplemento de uma linguagem L, sobre o alfabeto �, �e de�nida om respeito a � � , isto �e, o omplemento de L �e a liguagem, sobre �, de�nida por L = � � � L: A on atena� ~ao de duas linguagens L 1 e L 2 , sobre os alfabetos � 1 e � 2 , respe ti- vamente, �e a linguagem, sobre o alfabeto � 1 [ � 2 , denotada por L 1 L 2 , onsistindo do onjunto de todas as adeias obtidas on atenando-se qualquer elemento de L 1 om qual- quer elemento de L 2 , isto �e L 1 L 2 = fxy=x 2 L 1 e y 2 L 2 g De�nimos L n omo L on atenado n vezes om ele pr�oprio. No aso espe ial de n = 0, L 0 = f�g. Exemplo 1.2.3 Se L = fa n b n =n � 0g, ent~ao L 2 = fa m b m a n b n =m � 0 e n � 0g. Observe que m e n n~ao est~ao rela ionados. A adeia aabbaaabbb est�a em L 2 . O fe ho estrela de uma linguagem L, sobre um alfabeto �, �e a linguagem L � , sobre o pr�oprio �, de�nida por L � = 1 [ i=0 L i = L 0 [ L 1 [ L 2 [ L 3 [ � � � e o fe ho positivo da linguagem L, denotado porL + , �e de�nido por L + = 1 [ i=1 L i = L 1 [ L 2 [ L 3 [ � � � Observe que L + = L � � L 0 = L � � f�g n~ao �e ne essariamente verdade, pois se � 2 L ent~ao, L + = L � . 12 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao 1.2.2 Gram�ati as Para estudar linguagens, matemati amente, pre isamos de um me anismo para des reve^- las. A linguagem do dia a dia �e impre isa e amb��gua, portanto, a des ri� ~ao em portugue^s, em geral, �e inadequada. A nota� ~ao de onjuntos �e mais adequada, por�em limitada. Aqui, introduziremos a no� ~ao de gram�ati a, uma ferramenta omum e poderosa para de�nir linguagens. Uma gram�ati a para a l��ngua portugue^sa nos diz se uma senten� a, em parti ular, �e bem formada ou n~ao. Uma regra t��pi a da gram�ati a portugue^sa �e \uma senten� a pode onsistir de um substantivo, seguido por um predi ado". Mais pre isamente, podemos es rever isso omo hsenten� ai �! hfrase� substantivoihpredi adoi om a interpreta� ~ao �obvia. Isto �e bastante para se lidar om senten� as. Devemos tamb�em forne er de�ni� ~oes dos onstrutos introduzidos na de�ni� ~ao de senten� a hfrase� substantivoi e hpredi adoi. Portanto, hfrase� substantivoi �! hartigoihsubstantivoi hpredi adoi �! hverboi Se asso iarmos a ada senten� a \um" ou \uma" omo hartigoi, \ ~ao" e \menina" omo hsubstantivoi e \ orre" e \ aminha" omo hverboi, ent~ao a gram�ati a nos diz que as senten� as \um ~ao orre" e \uma menina aminha" s~ao senten� as bem-formadas. De�ni� ~ao 1.2.4 Uma gram�ati a, G, �e de�nida omo uma qu�adrupla G = hV; T; S; P i, onde � V �e um onjunto �nito de objetos, hamados vari�aveis. � T �e um onjunto �nito de objetos, disjunto de V , hamados s��mbolos terminais. � S 2 V �e um s��mbolo espe ial, hamado vari�avel de in�� io. � P �e um onjunto �nito de produ� ~oes. O prin ipal na gram�ati a s~ao as regras de produ� ~ao. Elas espe i� am omo a gram�ati a transforma uma adeia em outra, e atrav�es disso elas de�nem uma linguagem asso iada �a gram�ati a. Assumiremos que todas as produ� ~oes s~ao da forma x �! y; onde x �e um elemento de (V [ T ) + e y est�a em (V [ T ) � . As produ� ~oes s~ao apli adas omo segue: dado uma adeia da forma Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 13 1.2. No� ~oes de Linguagens, Gram�ati as e Auto^matos w = uxv; dizemos que a produ� ~ao �e apli �avel a esta adeia, e podemos us�a-la para tro ar x por y, obtendo, assim, a nova adeia z = uyv: Neste aso, dizemos que w deriva z ou z �e derivada de w, denotado por w =) z. Cadeias su essivas s~ao derivadas apli ando regras de produ� ~ao da gram�ati a, numa ordem arbitr�aria. Uma produ� ~ao pode ser usada se ela �e apli �avel e pode ser apli ada quantas vezes se quizer. Se w 1 =) w 2 =) : : : =) w n , dizemos que w 1 deriva w n e es revemos w 1 � =) w n : A estrela � indi a que foi onsiderado um n�umero n~ao espe i� ado de etapas (in luindo zero) para derivar w n de w 1 . Portanto, w � =) w sempre se d�a. Para indi ar que, pelo menos uma produ� ~ao foi apli ado es reveremos w + =) v: Apli ando as regras de produ� ~ao em ordens diferentes, uma gram�ati a pode gerar muitas adeias. O onjunto de todas adeias �e a linguagem de�nida ou gerada pela gram�ati a. De�ni� ~ao 1.2.5 Seja G = hV; T; S; P i uma gram�ati a. O onjunto L(G) = fw 2 T � = S � =) wg �e denominado linguagem gerada pela gram�ati a G. Os elementos de L(G) s~ao hamados senten� as ou palavras. Se w 2 L(G), ent~ao a seque^n ia S =) w 1 =) w 2 =) : : : =) w n =) w �e uma deriva� ~ao da senten� a w. As adeias S; w 1 ; w 2 ; : : : ; w n que ont�em vari�aveis e objetos terminais, s~ao hamados formas senten iais da deriva� ~ao. 14 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao Exemplo 1.2.6 Considere a gram�ati a G = hfSg; fa; bg; S; P i, onde P �e dado por S �! aSb S �! �: Ent~ao, S =) aSb =) aaSbb =) aabb. Logo, podemos es rever S � =) aabb. A adeia aabb �e uma senten� a na linguagem gerada por G, enquanto aaSbb �e uma forma senten ial. Uma gram�ati a G de�ne ompletamente a linguagem L(G), por�em pode n~ao ser f�a il obter uma des ri� ~ao expl�� ita da linguagem a partir da gram�ati a. Nesse exemplo, no entanto, n~ao �e di� il onje turar que L(G) = fa n b n = n � 0g e �e f�a il prov�a-la. Se observarmos que a regra S �! aSb �e re ursiva, teremos uma prova por indu� ~ao. Mostremos que todas as formas senten iais tem a forma w i = a i Sb i . 1. Se i = 0, w 0 = S 2. Suponha que w i = a i Sb i . Mostremos que w i+1 = a i+1 Sb i+1 . Mas, de a i Sb i , apli ando a regra S �! aSb, obtemos a i+1 Sb i+1 . Observe que se apli armos a produ� ~ao S �! �, obteremos uma senten� a e n~ao uma forma senten ial. Logo, toda forma senten ial tem aquela forma. Agora, apli ando a regra S �! �, temos que todas as senten� as tem a forma a n b n , para n � 0. Exemplo 1.2.7 A har a gram�ati a que gera L = fa n b n+1 =n � 0g. A ideia por tr�as do exemplo anterior pode ser estendido neste aso. Tudo que pre i- samos fazer �e gerar um b extra. Isto pode ser feito om a produ� ~ao S �! Ab, om outras produ� ~oes es olhidas tais que A possa derivar a linguagem do exemplo anterior. Com esse ra io ��nio, obtemos a gram�ati a G = hfS;Ag; fa; bg; S; P i, om produ� ~oes P : S �! Ab A �! aAb A �! � Para se onven er que essa �e a gram�ati a pedida derive algumas senten� as. Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 15 1.2. No� ~oes de Linguagens, Gram�ati as e Auto^matos Os exemplos s~ao relativamente f�a eis, de modo que os argumentos rigorosos podem pare er sup�er uos. Mas, em geral, n~ao �e f�a il a har a gram�ati a para uma linguagem des rita informalmente ou dar uma ara teriza� ~ao intuitiva da linguagem de�nida pela gram�ati a. Para mostrar que uma dada linguagem �e, de fato, gerada por uma gram�ati a, G, devemos mostrar: � Que todo w 2 L pode ser derivado de S, usando G. � Toda adeia derivada, usando G, est�a em L. Exemplo 1.2.8 Considere a gram�ati a G 1 = hfA; Sg; fa; bg; S; P 1 i, om P 1 onsistindo das produ� ~oes: S �! aAb j � A �! aAb j � Introduzimos, aqui, uma abrevia� ~ao no qual v�arias produ� ~oes om o mesmo lado es- querdo s~ao es ritos numa �uni a linha, om lado direito alternativo separado por \j". Nessa nota� ~ao, S �! aAb j � substitui as duas produ� ~oes, S �! aAb e S �! �. Essa gram�ati a �e equivalente, no sentido que gera a mesma linguagem, �a gram�ati a G do exemplo 1.2.6. A equivale^n ia �e f�a il de mostrar provando que L(G 1 ) = fa n b n = n � 0g. 1.2.3 Auto^matos Um auto^mato �e um modelo abstrato de um omputador digital. Como tal, todo auto^mato in lui algumas ara ter��sti as essen iais. ^ Ele possui um me anismo para le^r entradas. Assumiremos que as entradas s~ao adeias so^bre um dado alfabeto, es ritos numa �ta de entrada, a qual o auto^mato pode le^r, mas n~ao alterar. A �ta de entrada �e dividida em quadrados ou �elulas, ada um dos quais pode onter um s��mbolo. O me anismo de entradapode le^r a �ta de entrada da esquerda para a direita, um s��mbolo de ada vez. O me anismo de entrada pode dete tar o �m da adeia de entrada (per ebendo uma ondi� ~ao de t�ermino da adeia). O auto^mato pode produzir sa��das, de alguma forma. ^ Ele pode ter um dispositivo tempor�ario de armazenamento, onsistindo de um n�umero ilimitado de �elulas, ada uma apaz de manter um �uni o s��mbolo do alfabeto (n~ao ne essariamente o mesmo do alfabeto de entrada). O auto^mato pode le^r e alterar o onte�udo das �elulas de armazenamento. Finalmente, o auto^mato possui uma unidade de ontrole, que pode estar em qualquer um de um n�umero �nito de estados internos, podendo tro ar os estados de um modo bem de�nido. A �gura 1.3 mostra a representa� ~ao esquem�ati a de um auto^mato. Assumimos que um auto^mato opera num tempo dis reto. Em qualquer tempo da- do, a unidade de ontrole est�a em algum estado interno e o me anismo de entrada est�a apontando para um s��mbolo parti ular na �ta de entrada. O estado interno da unidade 16 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 1. Introdu� ~ao Estado Interno Fita de Entrada Unidade de Controle Saida A rea de A rm azenam ento Figura 1.3: Representa� ~ao esquem�ati a de um auto^mato. de ontrole na pr�oxima etapa de tempo �e determinado pelo pr�oximo-estado ou fun� ~ao de transi� ~ao. Esta fun� ~ao de transi� ~ao forne e o pr�oximo estado, em fun� ~ao do estado or- rente, o s��mbolo de entrada orrente e a informa� ~ao orrente na �area de armazenamento tempor�aria. Durante a transi� ~ao de um intervalo de tempo ao pr�oximo, a sa��da pode ser produzida, ou tro ada informa� ~ao na �area de armazenamento tempor�ario. O termo on�gura� ~ao ser�a usado para referir a um estado parti ular da unidade de ontrole, a �ta de entrada e o armazenamento tempor�ario. A transi� ~ao do auto^mato de uma on�gura� ~ao para a pr�oxima ser�a um movimento. Esse modelo geral obre todos os auto^matos que dis utiremos neste urso. Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 17 1.2. No� ~oes de Linguagens, Gram�ati as e Auto^matos 18 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 2 Auto^matos Finitos Neste ap��tulo, veremos a lasse mais simples de auto^matos, denominados auto^matos �nitos, os quais podem ser lassi� ados em determin��sti os e n~ao determin��sti os. 2.1 Auto^matos Finitos Determin��sti os Um auto^mato re onhe edor �e aquele que para ada adeia na �ta de entrada diz se ela �e a eita ou n~ao. Ou seja, diz se uma adeia de s��mbolos faz parte ou n~ao de uma linguagem. Um re onhe edor �nito �e um auto^mato re onhe edor que n~ao usa �area de armazenamento e que sempre p�ara (para isto, le^ uma �elula uma �uni a vez). De�ni� ~ao 2.1.1 Um Auto^mato �nito determin��sti o (afd) �e uma qu��ntupla M = hQ;�; Æ; q 0 ; F i, onde � Q �e um onjunto �nito de estados internos, � � �e um onjunto �nito de s��mbolos, hamado alfabeto de entrada, � Æ : Q� � �! Q �e uma fun� ~ao total, hamada fun� ~ao de transi� ~ao, � q 0 2 Q �e o estado ini ial, � F � Q �e o onjunto de estados �nais ou estados de a eita� ~ao . Um afd opera omo segue: No in�� io assumimos que e^le est�a no estado ini ial q 0 , om seu me anismo de entrada apontando para o s��mbolo mais �a esquerda da adeia de entrada. Durante ada movimento do auto^mato, o me anismo de entrada avan� a uma posi� ~ao para a direita, onsumindo um s��mbolo de entrada. Quando for atingido o �m da adeia, esta ser�a a eita se o auto^mato estiver num de seus estados �nais. Caso ontr�ario, a adeia �e rejeitada. O me anismo de entrada pode se mover, somente, da esquerda para 19 2.1. Auto^matos Finitos Determin��sti os a direita, lendo exatamente, um s��mbolo em ada etapa. Observe que quando a exe u� ~ao de um auto^mato atinge um estado �nal, isso n~ao signi� a que a exe u� ~ao �nalizou, pois ela s�o termina quando o auto^mato le^ toda a entrada na �ta. Para visualizar e representar um auto^mato �nito usamos grafos de transi� ~ao, nos quais os v�erti es representam os estados e as arestas representam as transi� ~oes. Os r�otulos dos v�erti es s~ao os nomes dos estados, enquanto os r�otulos das arestas s~ao os valores orrentes dos s��mbolos de entrada. Por exemplo, se q 0 e q 1 s~ao estados de algum afd M , o grafo asso iado a M ter�a um v�erti e rotulado om q 0 e outro rotulado om q 1 . Uma aresta (q 0 ; q 1 ), rotulada por a, representa a transi� ~ao Æ(q 0 ; a) = q 1 . O estado ini ial ser�a identi� ado por uma seta n~ao-rotulada hegando ao v�erti e. Os estados �nais ser~ao identi� ados por um ��r ulo duplo. Mais formalmente, se M = hQ;�; Æ; q 0 ; F i �e um afd, ent~ao a e^le est�a asso iado um grafo de transi� ~ao, G M , tendo exatamente jQ j v�erti es, ada um rotulado om um q i 2 Q diferente. Para ada regra de transi� ~ao Æ(q i ; a) = q j , o grafo tem uma aresta (q i ; q j ), rotulada a. O v�erti e asso iado a q 0 �e hamado v�erti e ini ial, enquanto que aqueles rotulados a q f 2 F s~ao os v�erti es �nais. � E muito simples onverter a de�ni� ~ao de um afd, M = hQ;�; Æ; q 0 ; F i, no seu grafo de transi� ~ao e vi e-versa. Exemplo 2.1.2 O grafo da �gura 2.1 representa o afdM = hfq 0 ; q 1 ; q 2 g; f0; 1g; Æ; q 0 ; fq 1 gi, onde Æ �e dado por Æ(q 0 ; 0) = q 0 ; Æ(q 0 ; 1) = q 1 Æ(q 1 ; 0) = q 0 ; Æ(q 1 ; 1) = q 2 Æ(q 2 ; 0) = q 2 ; Æ(q 2 ; 1) = q 1 : Este afd a eita a adeia 01. Ini ia no estado q 0 e aponta para o s��mbolo 0. Este �ultimo fato �e representado pela aresta do grafo rotulada om 0. Observamos que o auto^mato permane e no estado q 0 . Ap�os o s��mbolo 1 ter sido lido o auto^mato entra no estado q 1 . Estamos agora no �m da adeia e, ao mesmo tempo, no estado �nal q 1 . Portanto, a adeia 01 �e a eita. O afd n~ao a eita a adeia 00, porque ap�os le^r dois 0's onse utivos ele n~ao estar�a no estado q 1 , mas em q 0 . Ra io inando de modo an�alogo, vemos que o auto^mato a eitar�a as adeias 101, 00111 e 11001, mas n~ao a eitar�a 100 nem 1100. � E onveniente introduzir a fun� ~ao de transi� ~ao estendida Æ � : Q � � � �! Q. O segundo argumento de � � �e uma adeia, em vez de um �uni o s��mbolo, e seu valor �e o estado do auto^mato, ap�os le^ aquela adeia. Por exemplo, no aso do afd do exemplo 2.1.2, Æ � (q 0 ; 001) = q 1 e Æ � (q 1 ; 1110) = q 2 . Formalmente, podemos de�nir Æ � , re ursivamente, por 1. Æ � (q; �) = q 2. Æ � (q; wa) = Æ(Æ � (q; w); a) 20 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 2. Auto^matos Finitos q q q0 1 2 0 0 1 1 0 1 Figura 2.1: Exemplo de afd. Para todo q 2 Q, w 2 � � e a 2 �. Para ve^r omo essa nota� ~ao �e adequada, vamos apli ar essas de�ni� ~oes ao exemplo anterior. Æ � (q 0 ; 01) = Æ(Æ � (q 0 ; 0); 1) apli ando 2) = Æ(Æ(Æ � (q 0 ; �); 0); 1) apli ando 2) e 0 = �0 = Æ(Æ(q 0 ; 0); 1) apli ando 1) = Æ(q 0 ; 1) apli ando Æ = q 1 apli ando Æ 2.2 Linguagens e afd's Tendo de�nido pre isamente um afd podemos, agora, de�nir formalmente o que enten- demos por uma linguagemasso iada a um afd. A asso ia� ~ao �e obvia: a linguagem �e o onjunto de todas as adeias re onhe idas pelo auto^mato. De�ni� ~ao 2.2.1 A linguagem a eita por um afd, M = hQ;�; Æ; q 0 ; F i, denotado por L(M), �e o onjunto de todas as adeias, so^bre �, a eitas por M . Formalmente, L(M) = fw 2 � � = Æ � (q 0 ; w) 2 Fg Observe a exige^n ia de que Æ, e onsequentemente Æ � , seja uma fun� ~ao total. Em ada etapa, um movimento �uni o �e de�nido, isto justi� a o nome determin��sti o, para esse auto^mato. Um afd pro essar�a toda adeia em � � , a eitando-a ou n~ao. N~ao a eita� ~ao signi� a que o afd p�ara, num estado n~ao �nal tal que L(M) = fw 2 � � = Æ(q 0 ; w) 62 Fg: Exemplo 2.2.2 Considere o afd, na �gura 2.2. Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 21 2.2. Linguagens e afd's q q q0 1 2 a b a,b a,b Figura 2.2: Exemplo de afd. Ao desenhar a �gura 2.2, permitimos o uso de dois r�otulos numa mesma aresta. Tal multipli idade de arestas �e uma abrevia� ~ao para duas ou mais transi� ~oes distintas: a transi� ~ao �e tomada se o s��mbolo de entrada ombina om qualquer dos r�otulos da aresta. O auto^mato da �gura 2.2 permane e no seu estado ini ial, q 0 , at�e o primeiro b ser lido. Se este �e tamb�em o �ultimo s��mbolo da entrada, ent~ao a adeia �e a eita. Se n~ao, o afd vai para o estado q 2 , do qual nun a es apa. Tal estado �e hamado um estado de morte. Como podemos ver no grafo, o auto^mato a eita todas as adeias que tem exatamente um b, lo alizado na posi� ~ao mais �a direita da adeia. Todas as outras adeias s~ao rejeitadas. Em nota� ~ao de onjunto, a linguagem a eita por este auto^mato �e L = fa n b= n � 0g Teorema 2.2.3 Seja M = hQ;�; Æ; q 0 ; F i um afd, e seja G M seu grafo asso iado. Ent~ao para todo q i ; q j 2 Q e w 2 � + , Æ � (q i ; w) = q j se e somente se existe em G M um aminho om r�otulo w de q i a q j . Demonstra � ~ ao: Este fato �e �obvio, examinando os exemplos 2.1.2 e 2.2.2. Podemos provar isso, rigorosamente, usando a indu� ~ao no omprimento de w. Suponha que o teorema �e verdadeiro para todas as adeias v, om omprimento jv j� n. Considere uma adeia w de omprimento jw j= n+1 e es reva omo w = va, para algum a 2 �. Suponha, agora, que Æ � (q i ; v) = q k . Como j v j= n, deve existir um aminho em G M , rotulado por v, de q i a q k . Mas se Æ � (q i ; w) = q j , ent~ao M deve ter uma transi� ~ao Æ(q k ; a) = q j , tal que por onstru� ~ao G M tem uma aresta (q k ; q j ), om r�otulo a. Portanto, existe um aminho em G M , rotulado va = w, de q i a q j . Como o resultado �e obviamente verdadeiro para n = 1, podemos argumentar, por indu� ~ao, que para todo w 2 � + , Æ � (q i ; w) = q j o que impli a que existe um aminho em G M de q i a q j , rotulado w. Um argumento simples mostra que a existe^n ia de tal aminho impli a 2.2, ompletando a prova. Uma outra maneira de representar um auto^mato �e atrav�es de uma matriz (tabela). A tabela da �gura 2.3 �e equivalente �a da �gura 2.2. Aqui, os r�otulos da linha representam os estados orrentes e os das olunas representam o s��mbolo de entrada orrente. 22 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 2. Auto^matos Finitos a b q 0 q 0 q 1 q 1 q 2 q 2 q 2 q 2 q 2 Figura 2.3: representa� ~ao por tabela da afd do exemplo. Exemplo 2.2.4 A har um afd que re onhe� a todas as adeias, so^bre o alfabeto � = fa; bg, om pre�xo ab. A �uni a exige^n ia, aqui, �e que os dois primeiros s��mbolos na adeia sejam a e b, respe tivamente. Ap�os eles terem sido lidos n~ao resta nenhuma de is~ao mais a ser tomada. Podemos, portanto, resolver o problema om um auto^mato que tem quatro estados: um estado ini ial, dois estados para re onhe er ab, um estado de morte �nal e outro n~ao �nal. Se o primeiro s��mbolo �e a e o segundo b, o auto^mato vai para o estado �nal de morte, onde ele � ar�a, pois as entradas restantes n~ao traz problemas. Por outro lado, se o primeiro s��mbolo n~ao �e a ou o segundo n~ao �e b, o auto^mato entra num estado n~ao �nal de morte. A solu� ~ao �e mostrada na �gura 2.4. q q q q 0 1 2 3 a b a b a,b a,b Figura 2.4: Exemplo de afd. Exemplo 2.2.5 A har um afd que a eita todas as adeias, so^bre f0; 1g, ex eto aquelas ontendo a sub adeia 001. Para de idir se a sub adeia 001 o orreu, pre isamos onhe er n~ao somente o s��mbolo de entrada orrente, mas tamb�em relembrar se ele foi pre edido por dois 0's ou n~ao. Podemos ontrolar isso olo ando o auto^mato num estado espe ��� o e rotulando-o adequadamente. Assim, omo os nomes de vari�aveis em linguagens de programa� ~ao s~ao mnemo^ni os, isto �e, nomes que denotam o papel da vari�avel no programa, os nomes de estados s~ao arbi- tr�arios e, portanto, tamb�em, podem ser es olhidos por raz~oes mnemo^ni as. Por exemplo, Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 23 2.2. Linguagens e afd's o estado no qual dois 0's imediatamente pre edem um s��mbolo pode ser rotulado, simples- mente, por 00. Se a adeia ome� a om 001, ent~ao ela �e rejeitada. Isso impli a que deve existir um aminho, rotulado 001, do estado ini ial ao estado n~ao �nal. Por onvenie^n ia, esse estado n~ao �nal �e rotulado 001. Esse estado deve ser de morte, pois o s��mbolo que vem ap�os n~ao traz problemas. Todos os outros estados s~ao estados �nais ou a eitadores. Isso nos d�a a estrutura b�asi a da solu� ~ao, mas devemos, ainda, a res entar ondi� ~oes para o aso da sub adeia 001 o orrer no meio da adeia de entrada. Devemos de�nir Q e Æ de tal modo que sempre que pre isarmos de uma de is~ao orreta ela seja relembrada pelo auto^mato. Nesse aso, quando um s��mbolo for lido, pre isamos onhe er alguma parte da adeia para a esquerda, por exemplo, se ou n~ao os dois s��mbolos anteriores foram 00. Se rotularmos os estados om s��mbolos relevantes, �e f�a il ve^r quais transi� ~oes devem ser. Por exemplo, Æ(00; 0) = 00, pois esta situa� ~ao apare e somente se existem tre^s 0's onse utivos. Estamos, somente, interessados nos dois �ultimos, o que o deixa no mesmo estado 00. A solu� ~ao ompleta �e mostrada na �gura 2.5, abaixo. 0 00 001\ 1 0 0 1 0 1 0,1 Figura 2.5: Exemplo de afd. Exemplo 2.2.6 Desenhar um afd que re onhe� a a linguagem, L, de todas as adeias, sobre o alfabeto � = fa; bg, om uma quantidade par de a's e de b's. Isto �e, L = fw 2 � j N a (w) e N b (w) s~ao paresg; onde, N a (w) �e uma fun� ~ao que devolve o n�umero de s��mbolos, a's, que o orrem em w. Um auto^mato que re onhe� a esta linguagem deve permitir que em qualquer momento da omputa� ~ao possamos saber a quantidade de a's e de b's que foi lido. Mas, na verdade, s�o �e ne ess�ario \memorizar" se at�e esse momento a quantidade de a's e de b's, s~ao, ambos pares, ambos ��mpares, os a's s~ao pares e os b's ��mpares ou se os a's s~ao ��mpares e os b's pares. Se onsiderarmos 0 omo par, ent~ao quando ome� a a omputa� ~ao do auto^mato, ele se en ontra no estado no qual ambos s~ao pares, se logo emseguida le^ um a, ent~ao altera para o estado no qual a quantidade de a's s~ao ��mpares e as de b's pares, et . Assim, o auto^mato deve onsiderarsomente quatro estados, simbolizando ada uma dessas poss��veis ombina� ~oes. O estado par-par, �e ambos, ini ial e �nal. A �gura 2.6 ilustra do gr�afo do auto^mato des rito aqui. 24 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 2. Auto^matos Finitos PP PI IP II a b a b a b a b Figura 2.6: Exemplo de afd. Neste auto^mato os nomes dos estados n~ao s~ao os tradi ionais q i , mas PP, PI, IP e II. Estes nomes s~ao mais mnemo^ni os, isto �e, deixam em evide^n ia o estado da m�aquina em termos da situa� ~ao par ial da paridade de a's e de b's. Assim, o estado PP, simboliza a situa� ~ao de uma quantidade par de a's e de b's, o estado PI indi a uma quantidade par de a's e ��mpar de b's, et . 2.3 Linguagens Regulares De�ni� ~ao 2.3.1 Uma linguagem, L, diz-se regular se e somente se existe algum afd M tal que L = L(M): Exemplo 2.3.2 Mostre que a linguagem L = fawa = w 2 fa; bg � g �e regular. Devemos a har uma afd que re onhe� a a linguagem L. Assim, o afd deve he ar se uma adeia, ome� ando om a, tamb�em termina om a. O que est�a no meio n~ao �e importante. A solu� ~ao �e ompli ada pelo fato de n~ao existir um modo expl�� ito de testar o �nal da adeia. Essa di� uldade pode ser superada pondo o afd num estado �nal se o segundo a fo^r en ontrado. Se este n~ao for o �ultimo, e se depois dele vier um b ent~ao e^le tirar�a o auto^mato do estado �nal. A pesquisa ontinuar�a dessa maneira, ada a fazendo, o auto^mato ir (ou ontinuar, se fo^r o aso) para o estado �nal. A solu� ~ao ompleta est�a mostrada na �gura 2.7. Novamente, fa� a alguns exemplos para testar seu resultado. Exemplo 2.3.3 Seja L a linguagem do exemplo anterior. Mostrar que L 2 �e regular. Novamente, mostraremos que a linguagem �e regular onstruindo um afd para ela. Po- demos es rever, expli itamente, uma express~ao para L 2 , qual seja L 2 = faw 1 aaw 2 a = w 1 ; w 2 2 fa; bg � g Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 25 2.3. Linguagens Regulares q q q q 0 1 2 3 a b b a ab a,b Figura 2.7: Exemplo de afd. Portanto, pre isamos de um afd para re onhe er duas adeias onse utivas de formas essen ialmente iguais (mas n~ao ne essariamente ide^nti as em valores). O diagrama na �gura 2.7 pode ser usado omo ponto de in�� io, mas o v�erti e q 3 tem de ser modi� ado. Este estado n~ao pode mais ser �nal pois, neste ponto, devemos ome� ar a olhar para a segunda sub adeia da forma awa. Para re onhe er a segunda sub adeia, tomamos uma r�epli a dos estados na primeira parte ( om novos nomes), om q 3 no in�� io da segunda parte. Como a adeia ompleta pode ser quebrada em suas partes onstituintes se aa o orrer, deixamos a o orre^n ia de aa disparar o auto^mato para a segunda parte. Podemos obter isso fazendo Æ(q 3 ; a) = q 4 . A solu� ~ao ompleta est�a na �gura 2.8 q q q q 0 1 2 3 a b b a ab a,b a a b a q q4 5 Figura 2.8: Exemplo de afd. 26 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 2. Auto^matos Finitos Este exemplo sugere a onje tura de que se L �e regular, ent~ao L 2 ; L 3 ; : : : tamb�em s~ao. 2.4 Auto^matos Finitos N~ao Determin��sti os N~ao determinismo signi� a uma es olha de movimentos para um auto^mato. Em vez de pres rever um �uni o movimento em ada situa� ~ao, permitimos um onjunto de movimen- tos poss��veis. Formalmente, onseguiremos isso de�nindo a fun� ~ao de transi� ~ao tal que sua imagem seja um onjunto de estados poss��veis. De�ni� ~ao 2.4.1 Um auto^mato �nito n~ao determin��sti o (afn) �e de�nido omo a qu��ntupla M = hQ;�; Æ; q 0 ; F i onde Q;�; q o e F s~ao de�nidos omo para afd, mas Æ : Q� (� [ f�g) �! 2 Q : Observe que existem duas diferen� as prin ipais entre essa de�ni� ~ao e a de afd. Num auto^mato n~ao determin��sti o, a imagem de Æ �e o onjunto das partes de Q, 2 Q . Logo, seu valor n~ao �e um �uni o elemento de Q, mas um sub onjunto dele. Este sub onjunto de�ne o onjunto de todos os estados poss��veis que podem ser al an� ados pela transi� ~ao. Se, por exemplo, o estado orrente �e q 1 , est�a sendo lido o s��mbolo a e Æ(q 1 ; a) = fq 0 ; q 2 g; ent~ao q 0 ou q 2 pode ser o pr�oximo estado do afn. Permitimos, tamb�em, � ser o segundo ar- gumento de Æ. Isto signi� a que o afn pode fazer uma transi� ~ao sem onsumir um s��mbolo de entrada. Este tipo de transi� ~ao �e hamada �-transi� ~ao . Assim, Embora assumi- mos que o me anismo de entrada pode somente se deslo ar da esquerda para a direita, �e poss��vel, apli ando �-transi� ~oes, que ele �que esta ionado sobre alguns movimentos. Analogamente aos afd's, os auto^matos n~ao determin��sti os podem ser representados por grafos de transi� ~ao. Os v�erti es s~ao determinados por Q, enquanto uma aresta (q i ; q j ), om r�otulo a, est�a no grafo se, e somente se, q j 2 Æ(q i ; a). Observe que omo a pode ser uma adeia vazia, pode existir alguma aresta om r�otulo �. Uma adeia �e a eita por um afn se existir uma poss��vel seque^n ia de movimentos que levar�a a m�aquina a um estado �nal no �m da adeia. Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade 27 2.4. Auto^matos Finitos N~ao Determin��sti os q q q q q q 0 1 2 3 4 5 a a a a a b Figura 2.9: Exemplo de afn. Exemplo 2.4.2 Considere o grafo de transi� ~ao na �gura 2.9. Ele des reve um afn om duas transi� ~oes rotuladas a saindo de q 0 . Este afn re onhe e as adeias de tamanho par de a's e a adeia aab. Observe que para qualquer adeia ome� ando om o s��mbolo b, o auto^mato n~ao o re onhe eria, pois no estado ini ial q 0 ele s�o admite transi� ~oes rotuladas por a. Exemplo 2.4.3 No afn da �gura 2.10 algumas transi� ~oes, tais omo Æ(q 1 ; 0), n~ao s~ao espe i� adas no grafo e podem ser interpretadas omo uma transi� ~ao ao onjunto vazio, isto �e, Æ(q 1 ; 0) = ;. O auto^mato re onhe e as adeias 0001010 e 0101010, mas n~ao 110, nem 010100. Observe que para 00 existem dois aminhos alternativos, um levando a q o , o outro a q 1 . Embora q 0 n~ao seja um estado �nal, a adeia �e re onhe ida, porque �e su� iente que um aminho leve a um estado �nal. q q q0 1 2 0 0 1 0 Figura 2.10: Exemplo de afn. Exemplo 2.4.4 A �gura 2.11 representa um afn om �-transi� ~oes. Este afn re onhe e adeias do tipo 0 n 1 m 2 p om n;m; p � 0. Observe que ele a eita a adeia 11222, a qual �e equivalente �a adeia �11�222. Assim, antes de onsumir o primeiro 1, o auto^mato faz uma �-transi� ~ao e \pula" para o estado q 1 , nele onsome o primeiro e o segundo 1, depois novamente realiza uma �-transi� ~ao indo, imediatamente, para o estado q 2 no qual onsome os tre^s 2 restantes. Como q 2 �e um estado �nal ele a eita esta adeia. Como j�a tivemos oportunidade de observar para afd's, a fun� ~ao de transi� ~ao pode ser estendida de modo que seu segundo argumento seja uma adeia. Por�em, omo dado 28 Introdu� ~ao �a Teoria da Computa� ~ao: Linguagens Formais e Computabilidade Cap��tulo 2. Auto^matos Finitos q q q0 1 2 0 1 2 Figura 2.11: Exemplo de um afn om �-transi� ~oes. um estado e um s��mbolo ele pode ir a mais (ou nenhum) estados, Æ � (q; w)
Compartilhar