Fundamentos de Teoria da Computação
|
|
- Patrícia Vilarinho Azambuja
- 7 Há anos
- Visualizações:
Transcrição
1 Fundamentos de Teoria da Computação (Versão preliminar em constante modificação) Prof. Celso Antônio Alves Kaestner, Dr. Eng. Universidade Tecnológica Federal do Paraná 28 de março de Introdução O objetivo deste texto é o de apresentar, em forma de roteiro de estudo constituído de resumo da teoria, exemplos resolvidos e exercícios a resolver, os principais conceitos envolvidos no tratamento de linguagens formais e autômatos. Em cada seção são enfatizadas as definições, os principais teoremas e exemplos ilustrativos, que são necessários à compreensão dos temas envolvidos, e que devem ser complementados com a resolução dos exercícios propostos. As principais referências para este assunto são as seguintes: [5], [6], [2], [4], [3], [7] e [8]. 1
2 2 Alfabetos e linguagens Definição 1 Um alfabeto Σ é um conjunto finito cujos elementos são chamados de símbolos. Exemplo 1 Alguns exemplos de alfabetos: O alfabeto Σ = {a, b}; O alfabeto binário B = {0, 1}; O alfabeto octal O = {0, 1, 2, 3, 4, 5, 6, 7}; O alfabeto hexadecimal H = {1,... 9, A, B, C, D.E, F }; O alfabeto formado pelos códigos ASCII. Definição 2 Um string (ou cadeia) é uma seqüência finita de símbolos de um alfabeto. Ou seja, se w é um string sobre um alfabeto Σ, então w = σ 1 σ 2... σ n onde σ i Σ. Observação: Para facilitar a notação empregar-se-ão letras do início do nosso alfabeto, tais como a, b, etc para indicar símbolos, e letras do final do nosso alfabeto, tais como u, v, etc para designar strings. Exercício 1 Dê exemplos de alfabetos e strings. Quais os alfabetos e strings mais utilizados em computação? Definição 3 O comprimento de um string w, denotado por w, é o número de símbolos que o compõem. Desta forma, se w = σ 1 σ 2... σ n e σ i Σ então w = n. Definição 4 O string vazio, denotado por λ, é o string de tamanho zero. Definição 5 O conjunto de todos os strings sobre um alfabeto Σ é denotado por Σ, e constitui o denominado monóide livre associado a Σ. Exemplo 2 São exemplos de strings: a, bab e abbaba sobre {a, b} ; 101 e sobre B ; 2
3 064 e 1453 sobre O ; 0A12F e F F F F sobre H ; isto eh um string sobre o alfabeto ASCII; se Σ = {a, b} então Σ = {λ, a, b, aa, ab, ba, bb, aaa, aab...}. Observe que o string vazio é tal que λ Σ para qualquer alfabeto Σ. Definição 6 Dados dois strings u = σ 1 σ 2... σ m e v = δ 1 δ 2... δ n sobre Σ define-se a concatenação de u e v como um novo string u.v ou simplesmente uv dado por uv = σ 1 σ 2... σ m δ 1 δ 2... δ n. Evidentemente tem-se u.v = u + w, e ainda u.λ = λ.u = u. Definição 7 O reverso de um string w = σ 1 σ 2... σ n é o string w R = σ n... σ 2 σ 1. É possível escrever definições formais com uso de recursão para o comprimento (ver definição 3) e para o reverso (ver definição 7): 1. (a) λ = 0, e (b) u.a = u + 1 para u Σ e a Σ. 2. (a) λ R = λ, e (b) (u.a) R = a.u R. Exemplo 3 Obtém-se (abbab) R recursivamente da seguinte forma: (abbab) R = b(abba) R, de 2.(b) acima; (abba) R = a(abb) R, de 2.(b) acima; (abb) R = b(ab) R, de 2.(b) acima; (ab) R = b(a) R de 2.(b) acima; (a) R = (λ.a) R = a.(λ) R = a.λ = a, de 2.(a) acima, e portanto: (abbab) R = babba dos itens anteriores. Exercício 2 Repita o exercício anterior calculando (100111) R. Exercício 3 De modo similar aos exercícios anteriores, calcule recursivamente bab (sobre o alfabeto {a, b}) e (sobre {0, 1}). 3
4 Definição 8 Dados strings u e v sobre um mesmo alfabeto Σ diz-se que u é um prefixo de v se e somente se (sse) existe um string y tal que v = uy. Similarmente u é sufixo de v sse existe x com v = xu; e u é substring de v sse existem x e y com v = xuy. Exemplo 4 Seja o monóide livre {a, b}. Se w = aaba os prefixos de w são os strings λ, a, aa, aab e aaba; os sufixos de w são aaba, aba, ba, a e λ; são substrings de w: λ, a, b, aa, ab, ba, aab, aba, e o próprio w. Para ilustrar um destes casos, se w = aaba pode-se escrever w = aaba = (aa).(ba), mostrando que aa é prefixo de w (e simultaneamente que ba é sufixo de w). Exercício 4 Encontre os prefixos, sufixos e substrings do string sobre o alfabeto {0, 1}. Definição 9 Uma linguagem L sobre um alfabeto Σ é um subconjunto do monóide livre Σ, isto é L Σ. Exemplo 5 Se Σ = {a, b} então os subconjuntos de strings L 1 = {a, ab, abb, abbb, abbbb, abbbbb...} = {ab n n 0}, L 2 = {ab, aab, aba, abb, bab, aaba, aabb...} = {x.ab.y x, y Σ } e L 3 = {λ, a, abbb, bbbbb} são linguagens sobre Σ. Como se pode observar deste exemplo, as linguagens podem ser conjuntos finitos ou infinitos. A definição 9 é de caráter bastante geral, e considera simplesmente que linguagens são subconjuntos de strings sobre um alfabeto. Isto permite que se definam com facilidade algumas operações sobre linguagens: Definição 10 Se L 1 e L 2 são linguagens sobre um alfabeto Σ então também são linguagens: 1. A união L 1 L 2 ; 2. A interseção L 1 L 2 ; 3. O complemento L 1 = Σ L 1 ; 4. A concatenação L 1.L 2 = {w = x.y x L 1 e y L 2 }; 5. O fechamento (ou estrela de Kleene) L 1 = {w = x 1 x 2... x k k 0 e x i L 1 para 1 i k}. 4
5 As operações definidas em (1), (2) e (3) são simplesmente a aplicação de operações usuais sobre conjuntos, visto que as linguagens são conjuntos. A operação (4) estende a noção de concatenação vista na definição 6, a conjuntos de strings. A operação (5) permite que strings de um conjunto sejam repetidos um número arbitrário de vezes, podendo o string selecionado no conjunto ser diferente a cada passo da repetição. Este procedimento permite a obtenção de conjuntos infinitos, desde que a operação estrêla (*) seja aplicada a um conjunto não-vazio. Exemplo 6 Utilizando as linguagens L 1, L 2 e L 3 do exemplo anterior, obtem-se, por exemplo (parênteses utilizados apenas para ênfase): L 1 L 2 = {a, ab, aab, aba, abb, bab, aaba, aabb, abbb,...}; L 1 L 2 = {ab, abb, abbb...}; L 3 = Σ L 3 = {b, aa, ab, aaa, aab, aba, abb...}; L 1.L 2 = {(a)(ab), (a)(aab), (a)(aba)..., (ab)(ab), (ab)(aab), (ab)(aba)..., }; L 1 = {λ, a, ab, abb..., (a)(a), (a)(ab), (a)(abb)..., (a)(a)(a)..., (a)(a)(a)(a), (a)(a)(a)(ab)...}; Exercício 5 Indique alguns strings para L 2 L 3, L2, L 2.L 1 e L 1 do exemplo acima. Exercício 6 Sejam L 4 = {ba, baa, baaa, baaaa...} = {ba n n 1} e L 5 = {aab, aabb, aabbb, aabbbb...} = {aab n n 1}. Indique alguns strings para L 4 L 5, L 4.L 5, L5, e L 4. 5
6 3 Expressões regulares Um ponto crucial no estudo de linguagens é o de encontrar uma representação seja formal e finita. Isto é possível com o auxílio de formalismo baseado nas operações anteriormente definidas. Definição 11 Dado um alfabeto Σ as expressões regulares (ER) sobre este alfabeto são definidas recursivamente da seguinte forma:, λ e cada elemento a Σ são ER; se α e β são ER então (α β), (α.β) e (α ) são ER; As ER são obtidas unicamente pelas regras acima. Observação: Na definição das ER os parênteses podem ser omitidos caso sua supressão não ocasione ambiguidade. Uma correspondência L (homomorfismo) pode ser facilmente estabelecida entre o conjunto das ER sobre Σ e as linguagens sobre este mesmo alfabeto: L( ) = ; L(λ) = {λ}; L(a) = {a}; L(α β) = L(α) L(β); L(α.β) = L(α).L(β); L(α ) = (L(α)) ; Definição 12 Uma linguagem é dita regular se é correspondente a alguma ER. Exemplo 7 São exemplos de ER sobre Σ = {a, b}: a(a b); (a b) ; ab ; 6
7 (a b) ab; (a b) ab(a b). (λ a abbb bbbbb). Exercício 7 Indique alguns strings das linguagens associadas às ER do exemplo anterior. Exercício 8 Escreva ER associadas às linguagens sobre {a, b} definidas informalmente a seguir: Strings que começam com a; strings que terminam com bb; strings que contém aba como substring; strings que NÃO contém aa como subtring; strings com número par de a s; strings com exatamente duas ocorrências de b. Observação: No uso prático de ER utilizam-se as seguintes abreviaturas: α + = αα (uma ou mais repetições de α); [A Z] = (A B... Z), ou ainda [0 7] = ( ) (faixa de valores); c para representar o caracter c (uso das aspas como limitador, por exemplo em ). Exercício 9 Escreva ER que melhor especifiquem os strings definidos informalmente por: strings que representam nomes de variáveis em C ; Strings que representam números inteiros em C ; strings que representam números de ponto flutuante em C ; strings que representam endereços de ; strings que representam números telefônicos brasileiros. 7
8 Exercício 10 Construa a expressão regular mais adequada, em sua opinião, para indicar datas válidas, conforme os exemplos a seguir. Datas válidas: 23/10/2006, 1/1/4, 01/1/06, 23/11/03. Datas inválidas: 23//2004, 1/13/03, 1/111/1999, 33/2/2004. Exercício 11 Construa uma expressão regular que você considera mais adequada para especificar valores monetários válidos em dólares, euros e reais, conforme os exemplos a seguir. Exemplos de valores válidos: US$ 1,340.00, R$ 1.450,00, E$ 1.900,30. Exemplos de valores inválidos: US$$1.333,00, R$ , EE$ Observação: nos exercícios anteriores não possuem uma solução única, pois dificilmente se consegue obter uma ER simples que cubra os casos considerados em toda a sua generalidade; o leitor deve ficar ciente das limitações inerentes de sua resposta. 8
9 4 Autômatos finitos As ER, como vistas no item anterior, são utilizadas especialmente na especificação de linguagens. Para o problema da verificação da pertinência de um string a uma linguagem aceitação ou reconhecimento do string utiliza-se outro formalismo, denominado autômato finito. Definição 13 Um autômato finito determinista (AFD) é uma 5-upla M = (K, Σ, δ, s, F ) onde: K é um conjunto finito não vazio de estados; Σ é o alfabeto de entrada; s K é o estado inicial; F K é o conjunto de estados finais; δ : K Σ K é a função de transição, que associa a um estado e a um símbolo lido o novo estado do autômato, isto é, (q, σ) q. Definição 14 Uma configuração de um AFD é um par (q, w) onde q é o estado atual e w Σ é a entrada restante. Definição 15 Um AFD M evolui em um passo da configuração (q, w) para a configuração (q, x), escrevendo-se (q, w) M (q, x), sse w = ax e δ(q, a) = q. A aplicação de n passos sucessivos em um AFD M corresponde a evolução n passos {}}{ (q, w) M (q, x)... M (q, y), que é denotada por (q, w) n M (q, y). Quando n não é importante escreve-se (q, w) M (q, y). Definição 16 Um AFD M aceita um string w sse (s, w) M (f, λ) com f F ; no outro caso diz-se que M rejeita w. O conjunto de todos os strings aceitos por M forma a linguagem reconhecida por M, denotada por L(M). Exemplo 8 Seja M = (K, Σ, δ, s, F ) com K = {q 0, q 1 }, Σ = {a, b}, s = q 0, F = {q 0 } e δ tal que δ(q 0, a) = q 0, δ(q 0, b) = q 1, δ(q 1, a) = q 1, e δ(q 1, b) = q 0. Normalmente a função de transição δ é dada na forma de tabela: 9
10 Figura 1: Autômato correspondente ao exemplo 8 q σ q δ : q 0 a q 0 q 0 b q 1 q 1 a q 1 q 1 b q 0 M aceita aabba, pois: (q 0, aabba) (q 0, abba) (q 0, bba) (q 1, ba) (q 0, a) (q 0, λ) e q 0 F. M rejeita ababb, pois: (q 0, ababb) (q 0, babb) (q 1, abb) (q 1, bb) (q 0, b) (q 1, λ) e q 1 F. Autômatos podem ser representados por grafos. Neste caso a cada estado do autômato corresponde um nó, cada transição δ(q, a) = q é indicada por um arco de q a q rotulado por a, s é indicado por uma seta e os estados finais são indicados por círculos duplos na representação do nó. Se um AFD M é representado por um grafo G M, a condição de aceitação de um string w corresponde à existência de um caminho em G M do estado inicial a um dos estados finais rotulada por w. Exemplo 9 O autômato do exemplo 8 é representado pelo grafo apresentado à Figura 1. Uma análise dos caminhos que conduzem do estado inicial q 0 ao estado final q 0 permite deduzir que este autômato aceita strings sobre {a, b} que têm número par de b s. Exercício 12 A ferramenta JFLAP [7] (disponível em permite o estudo de expressões regulares e autômatos, em um ambiente gráfico executável sob Java. Utilizando esta ferramenta, ingresse o autômato descrito acima e faça o reconhecimento de strings no mesmo. 10
11 Exercício 13 Utilizando a JFLAP, construa AFD para reconhecer as linguagens indicadas no exercício 8. Os autômatos finitos podem ser estendidos para incluir não-determinismo, isto é, para permitir que vários caminhos sejam percorridos simultaneamente, de acordo com a definição a seguir. Definição 17 Um autômato finito não-determinista (AFND) é uma 5-upla M = (K, Σ,, s, F ) onde K, Σ, s e F são definidos como no AFD, e é uma relação (denominada relação de transição) sobre K (Σ {λ}) K. Em um AFND um string w é aceito sse existe ao menos uma evolução (s, w) M com f F. (f, λ) Exemplo 10 Seja o AFND M = (K, Σ,, s, F ) com K = {q 0, q 1, q 2 }, Σ = {a, b}, s = q 0, F = {q 2 } e dada pela tabela: : q σ q q 0 a q 0 q 0 b q 0 q 0 a q 1 q 1 a q 2 q 1 λ q 2 M é não-determinista, pois (q 0, a, q 0 ) e (q 0, a, q 1 ). Além disto (q 1, λ, q 2 ). M aceita bba pois (q 0, bba) (q 0, ba) (q 0, a) (q 1, λ) (q 2, λ) e q 2 F. Note que também ocorre (q 0, bba) (q 0, ba) (q 0, a) (q 0, λ) e q 0 F. Uma verificação mais detalhada mostra que L(M) é formada pelas cadeias sobre {a, b} que terminam com a ou aa. Teorema 1 A todo AFND M corresponde um AFD M tal que L(M) = L(M ). A prova deste resultado é construtiva e pode ser encontrada, por exemplo, em [5] e [2]. Se M = (K, Σ,, s, F ) é um AFND, os estados do AFD M são formados a partir de subconjuntos dos estados de M, isto é, são elementos de 2 K. O estado inicial de M é {s}, normalmente representado por [s]. Os estados finais são da forma [E f ] tais que E f F. A função de transição δ para M é obtida da seguinte forma: δ ([E 1 ], a) = [E 2 ] com E 2 = {q a q E 1 e (q, a, q a ) }, para um estado [E 1 ] de M e a Σ. A ferramenta JFLAP permite que se acompanhe passo a passo o algoritmo que transforma um AFND em um AFD. 11
12 Exemplo 11 Seja o AFND M = ({q 0, q 1, q 2 }, {a, b},, q 0, {q 2 }) onde = {(q 0, a, q 1 ), (q 0, b, q 0 ), (q 1, b, q 2 ), (q 1, λ, q 2 ), (q 2, a, q 0 )}. O estado inicial do AFD correspondente é [q 0 ] (o único estado atingível de q 0 usando o string λ). A função de transição δ do AFD é obtida pela verificação dos estados atingíveis a partir de estados já desenvolvidos. Por exemplo, a partir de [q 0 ] usando o símbolo a podemos atingir os estados q 1 e q 2, visto que q 0 a q 1 e q 0 a q 1 λ q 2. Isto define δ([q 0 ], a) = [q 1 q 2 ], e de modo análogo δ([q 0 ], b) = [q 0 ]. Em seguida encontram-se δ([q 1 q 2 ], a) = [q 0 ] (já que a partir de q 1 é possível chegar a q 0 fazendo-se, por exemplo, q 1 λ q 2 a q 0 ), e δ([q 1 q 2 ], b) = q 2 (já que o único estado atingível de q 1 usando b é q 2, e nenhum estado pode ser atingido de q 2 usando b). Usando o mesmo procedimento obtém-se δ([q 2 ], a) = [q 0 ] e δ([q 2 ], b) = [ ]. Finalmente δ([ ], a) = δ([ ], b) = [ ]. Os estados finais são aqueles que incluem estados finais do AFND, ou seja neste caso [q 2 ] e [q 1 q 2 ], o que completa a construção do AFD. Em resumo o AFD obtido é M = ({[q 0 ], [q 1 q 2 ], [q 2 ], [ ]}, {a, b}, δ, [q 0 ], {[q 2 ], [q 1 q 2 ]}) com δ dada pela tabela: δ : q σ q q σ q [q 0 ] a [q 1 q 2 ] [q 2 ] a [q 0 ] [q 0 ] b [q 0 ] [q 2 ] b [ ] [q 1 q 2 ] a [q 0 ] [ ] a [ ] [q 1 q 2 ] b [q 2 ] [ ] b [ ] A equivalência estabelecida entre os AFND e os AFD leva a um questionamento sobre sua utilidade: afinal, por quê utilizar AFND? Como será visto em seguida, os AFND são utilizados para o estabelecimento de uma correspondência entre AF (termo usado indistintamente para AFD e AFND) e as ER. Teorema 2 Para toda ER α existe um AF M tal que L(α) = L(M), e reciprocamente, a todo AF M corresponde uma ER α tal que L(M) = L(α). (ER AFND, esboço da prova) Seja α uma ER sobre um alfabeto Σ: 1. Se α = então o AF M = ({q 0 }, Σ,, q 0, ) é tal que L(M) = ; 2. Se α = λ então o AF M = ({q 0 }, Σ,, q 0, {q 0 }) é tal que L(M) = {λ}; 3. Se α = a para a Σ então o AF M = ({q 0, q 1 }, Σ,, q 0, {q 1 }) com = {(q 0, a, q 1 )} é tal que L(M) = {a}; 12
13 4. Se α e β são ER associadas aos AF M 1 = (K 1, Σ, 1, s 1, F 1 ) e M 2 = (K 2, Σ, 2, s 2, F 2 ) respectivamente, então aceita α β; M = (K 1 K 2 {s 0 }, Σ, 1 2 {(s 0, λ, s 1 ), (s 0, λ, s 2 )}, s 0, F 1 F 2 ) 5. Se α e β são ER associadas aos AF M 1 = (K 1, Σ, 1, s 1, F 1 ) e M 2 = (K 2, Σ, 2, s 2, F 2 ) respectivamente, então aceita α.β; e M = (K 1 K 2, Σ, 1 2 {(f i 1, λ, s 2 ), f i 1 F 1 }, s 1, F 2 ) 6. Se α é ER associada ao AF M 1 = (K 1, Σ, 1, s 1, F 1 ), então aceita α ; M = (K 1 {s 0 }, Σ, 1 {(s 0, λ, s 1 )} {(f i 1, λ, s 1 ), f i 1 F 1 }, s 0, {s 0, s 1 }) 7. Aplicando-se os procedimentos descritos nos itens anteriores sucessivamente é possível, a partir de qualquer ER, obter um AF que aceita a mesma linguagem. Nos três itens anteriores considerou-se que K 1 K 2 =. (AF ER) O procedimento construtivo consiste na eliminação de estados e rotulação das transições por strings de símbolos, conforme o seguinte procedimento a seguir: 1. Incluir um novo estado inicial e um único estado final; 2. Eliminar sucessivamente estados do AF utilizando o esquema indicado na Figura 2, que rotula a transição entre q i e q f quando da eliminação de q out a partir dos rótulos existentes nas transições entre q i, q f e q out ; 3. Ao final, quando só restam os estados inicial e final, a ER resultante rotula a única transição existente. Pode-se provar que a ER assim obtida corresponde à linguagem aceita pelo AF correspondente (ver [5]). Em Ciência da Computação os formalismos ER e os AF são utilizados para a especificação e reconhecimento do léxico de linguagens. A análise léxica constitui o primeiro passo de execução de um compilador (ver por exemplo [1]). 13
14 δ q i q f q α β i q out 2 γ δ (α.γ.β) Figura 2: Eliminação de estado na passagem de AF para ER q f Exercício 14 Utilizando a JFLAP encontre os AF s associado às ER s: 1. a b; 2. (a b) ab; 3. (ab b) (a λ); 4. (aab ) ; 5. (b ab ab ); 6. (a (ab) ) (b (ba) ). Exercício 15 Utilizando a JFLAP encontre os AFD s correspondentes aos AFND s obtidos no exercício anterior. Exercício 16 Utilizando a JFLAP encontre as ER s associadas aos AF s do exercício 13. Exercício 17 Seja M um AFD que reconhece L. reconhecer L? Como é possível obter um AF para Exercício 18 Sejam M 1 e M 2 AFD s que reconhecem L 1 e L 2 respectivamente. Como é possível obter um AF para reconhecer L 1 L 2? Esboce os passos necessários para se obter este autômato. Considere os AF apresentados na Figura 3. Ambos são deterministas e aceitam a mesma linguagem, formada por strings sobre {a, b} que terminam com a. No entanto o AFD inferior tem três estados, e o superior tem apenas dois. Isto leva a questão da minimização de autômatos. Um AFD M min = (K m, Σ, δ m, s m, F m ) é dito mínimo sse para qualquer outro autômato M = (K, Σ, δ, s, F ) tal que L(M) = 14
15 Figura 3: Dois AFD que reconhecem a mesma linguagem (a b) a L(M min ) tem-se K m K. Ou seja M min é, entre os autômatos que aceitam a mesma linguagem, o que tem o menor número de estados. A obtenção de M min é possível encontrandose uma relação de equivalência entre os estados, conforme o teorema a seguir. Teorema 3 Seja M = (K, Σ, δ, s, F ) um AFD; então sempre existe um AFD mínimo M min = (K m, Σ, δ m, s m, F m ) tal que L(M) = L(M min ) e K m K. Esboço da prova (para a prova completa ver [5], [6] ou [2]): Inicialmente elimine estados inalcançáveis usando um algoritmo de alcançabilidade em grafo, partindo do estado inicial s. Supondo que todos os estados são alcaçáveis, calcule a relação de equivalência entre estados (ou, equivalentemente, uma partição do conjunto K) definida recursivamente por: (1) ( 0 ) = {F, K F }; (2) Até que se tenha ( n+1 ) = ( n ): calcule a relação ( n+1 ) para n 0 a partir de ( n ) por: (q, q ) ( n+1 ) somente se (q, q ) ( n ) e para todo a Σ tem-se (δ(q, a), δ(q, a)) ( n ). Os estados de M min são os elementos da última relação de equivalência ( n ) encontrada. 15
16 Exercício 19 Utilizando a JFLAP encontre o AFD min correspondente ao segundo autômato da Figura 3. Exercício 20 Utilizando a JFLAP encontre os AFD min s associados aos AF s do exercício 15. Os resultados apresentados permitem deduzir que, se L 1 e L 2 são linguagens aceitas pelos AF M 1 e M 2, então é possível obter AF para reconhecer as linguagens L 1 L 2, L 1 L 2 e L 1 (ver teorema 2 e os exercícios 17 e 18). Mas será que existem linguagens que não são reconhecidas pelos AF s? O teorema a seguir conduz à resposta desejada. Teorema 4 (Teorema do Bombeamento I) Seja M = (K, Σ, δ, s, F ) um AFD que reconhece uma linguagem L. Se L é infinita (um conjunto infinito) então existe um string w L com w > K que w pode ser escrito como w = xyz com y λ e tal que xy n z L para todo n 0. Prova: ver [5], [6] ou [2]. Exemplo 12 Uma conseqüência importante deste teorema é que a linguagem L = {a n b n n 0} {a, b} não é aceita por nenhum AF. Suponha que M = (K, Σ, δ, s, F ) aceita L = {a n b n n 0} {a, b}. Seja p > K e w = a p b p ; pelo Teorema do Bombeamento I w pode ser escrito como w = xyz com y λ e para todo n 0 xy n z L. Mas como a p b p pode ser decomposto? Por contradição podemos supor que x = a r e y = a s com r + s < p, de modo que a x y z {}}{{}}{{}}{ decomposição seria a p b p = a r a s a (p r s) b p. Neste caso se repetimos ( bombeamos ) y duas vezes teríamos x yy z {}}{{}}{{}}{ a r a 2s a (p r s) b p L, mas L só contém strings com número igual de a s e b s... x y z {}}{{}}{{}}{ O mesmo raciocínio pode ser aplicado à decomposição a p b p = a p b (p r s) b s b r. x y z {}}{{}}{{}}{ Finalmente se a decomposição fosse a p b p = a r a (p r) b (p s) b s o bombeamento duplo x y y z {}}{{}}{{}}{{}}{ de y levaria a a r a (p r) b (p s) a (p r) b (p s) b s e portanto a uma mistura de a s e b s... Concluindo, L não atende ao Teorema do Bombeamento I, e portanto não pode ser reconhecida por AF ou ER. 16
17 Desta forma conclui-se que o formalismo AF (ou equivalentemente ER) não é suficiente para o estudo geral de linguagens. São necessários novos formalismos como veremos na seqüência. 17
18 5 Gramáticas Um outro formalismo similar aos AF s e às ER s, e que pode ser potencialmente mais geral é formado pelas gramáticas. Definição 18 Uma gramática (ou sistema de reescritura) é uma 4-upla G = (V, Σ, R, S) onde: V é um conjunto finito não-vazio de símbolos não-terminais; Σ é um conjunto finito não-vazio de símbolos, disjunto de V, cujos elementos são denominados símbolos terminais; S V é o símbolo inicial; R é um conjunto de regras de produção ou reescritura, na forma u v, onde u e v são strings sobre V Σ, com certas restrições conforme o tipo da gramática. Definição 19 Uma derivação em G = (V, Σ, R, S), denotada por w 1 G w 2, ocorre quando se aplica ao string w 1 = x.u.y a regra de produção u v, gerando o string w 2 = x.v.y. A geração de um string w Σ em G ocorre pela aplicação sucessiva de derivações a partir de S, ou seja S = w 0 G w 1 G w 2... G w n = w ou, de forma mais sucinta, S G w. Finalmente, a linguagem gerada por G é L(G) = {w Σ S G w}. Exemplo 13 Seja G = (V, Σ, R, S) com V = {S}, Σ = {a, b} e R = {S 1 asb, S 2 λ}. O string aabb é gerado por G, pois S 1 asb 1 aasbb 2 aabb (na derivação o subíndice referencia a regra de G utilizada). Observe que neste exemplo L(G) = {a n b n n 0}, linguagem esta que não é gerada por nenhum AF (ver exemplo 12). Definição 20 Uma gramática é dita regular (GR) se suas produções são todas na forma A ab, A a ou A λ, onde A, B V e a Σ. Exemplo 14 Seja G = ({A, B}, {a, b}, {A 1 aa, A 2 bb, B 3 ab, B 4 ba, A 5 λ}, A). O string aababbab é gerado por G, pois A 1 aa 1 aaa 2 aabb 3 aabab 4 aababa 2 aababbb 3 aababbab 4 aababbaba 5 aababbab. Neste exemplo L(G) = L((a ba ba ) ), à linguagem associada à ER que denota strings com número par de b s. Teorema 5 Se G é uma GR então existe um AF M tal que L(G) = L(M). (Esboço da prova) Dado G = (V, Σ, R, S) obtém-se M = (K, Σ,, s, F ) da seguinte forma: 18
19 K = V {f}; s = S; F = {f}; se A ab está em R então (A, a, B) ; se A a está em R então (A, a, f) ; se A λ está em R então (A, λ, f). Exercício 21 Mostre que vale a recíproca, isto é, se M é um AF é possível obter uma GR tal que L(G) = L(M). Exercício 22 Encontre as GR associadas às linguagens do exercício 8. Como vimos, as gramáticas são um formalismo mais geral que os AF. Para ampliar seu poder de geração necessitamos apenas alterar a forma das suas regras de produção. Definição 21 Uma gramática é dita livre de contexto (GLC) se suas produções são todas na forma A w, onde A V e w (V Σ). Exemplo 15 Seja G = ({S, A, B}, {a, b}, R, S) onde R é o conjunto {S 1 SAB, S 2 SBA, S 3 λ, A 4 aab, A 5 aba, A 6 a, B 7 bab, B 8 bba, B 9 b}. G é uma GLC. Um string gerado por G é w = bbaabaab, pois S 1 SAB 2 SBAAB 3 BAAB 8 bbaaab 9 bbaaab 4 bbaabaab 6 bbaabaab 9 bbaabaab 6 bbaabaab 6 bbaabaab 9 bbaabaab = w. Esta gramática gera strings com o mesmo número de a s e b s. Exemplo 16 A gramática definida no exemplo 13 é uma GLC. Assim como os AF e as ER, as GLC tem papel crucial em Ciência da Computação. Utilizam-se GLC para realizar a análise sintática de linguagens, o segundo passo na execução de um compilador [1]. Definição 22 Um derivação é dita mais à esquerda se a aplicação das produções ocorre sempre pela substituição do não-terminal mais à esquerda no string que está sendo gerado. De forma análoga é possível gerar derivações mais à direita. 19
20 Exemplo 17 A derivação de bbaabaab no exemplo 15 é mais à esquerda. algumas derivações não são nem mais à esquerda nem mais à direita. Observe que Exercício 23 Faça uma derivação mais à direita de w = bbaabaab do exemplo 15. Faça uma outra derivação para w que não seja nem mais à esquerda, nem mais à direita. As diversas derivações derivações para um mesmo string podem ser representadas de maneira unificada pela árvore de parsing do string. Definição 23 Seja uma GLC G = (V, Σ, R, S) e um string w = σ 1 σ 2... σ n L(G). A árvore de parsing (árvore de análise sintática ou ainda árvore de reconhecimento) do string w, denotada por A(G, w) é uma estrutura na forma de árvore obtida da seguinte forma: a raiz de A(G, w) é S; as folhas de A(G, w) são os símbolos que compõem w, obedecendo a ordem de aparecimento da esquerda para a direita, isto é, σ 1, σ 2,... σ n ; os nós internos de A(G, w) são formados por produções em R. Se A x R, esta produção constitui uma sub-árvore de raiz A e cujas folhas são os símbolos de x. As produções devem ser usadas de forma a conectar adequadamente S, w e os demais nós intermediários de A(G, w). Exemplo 18 Seja G e w do exemplo 15. A árvore de parsing correspondente é indicada à Figura 4. Observe o correspondência entre os nós da árvore e as produções aplicadas, indicadas pelo número correspondente. A leitura das folhas da árvore da esquerda para a direita fornece o string gerado: λbbaabaab = bbaabaab. Numa árvore de parsing a ordem de substituição dos símbolos não-terminais não é apresentada de forma explícita, dependendo apenas da maneira com que se percorre a árvore. Uma derivação mais à esquerda corresponde, por exemplo, a percorrer a árvore de cima para baixo e da esquerda para a direita. Com a introdução da noção de árvore de parsing, o problema da análise sintática (ou de parsing) pode ser simplificadamente descrito da seguinte forma: dada uma GLC G e um string w, é possível construir uma árvore sintática A(G, w)? Uma resposta afirmativa indica que w L(G). 20
21 S (1) S A B (6) (9) (2) S B A (3) a b (6) (8) λ b B A a (9) (4) b a A B a (6) b (9) Figura 4: Árvore de parsing para G e w do exemplo 15 Exercício 24 Seja G = ({S, A, B}, {a, b}, R, S) com R = {S 1 AB, A 2 aa, A 3 λ, B 4 bb, B 5 b}. Mostre que o string aaaabb pertence a L(G). Construa a árvore de parsing para w. Descreva L(G). Exercício 25 Seja G = ({S, A, B}, {a, b}, R, S) com R = {S 1 ASB, S 2 λ, A 3 a, B 4 bb}. Mostre que o string aaabbbbbb pertence a L(G). Construa a árvore de parsing para w. Descreva L(G). 21
22 6 Autômatos de Pilha De maneira similar ao que ocorre com as ERs, as gramáticas são utilizadas principalmente para especificar linguagens. Os procedimentos utilizados para tratar o problema de parsing são outros: os autômatos de pilha. Definição 24 Um autômato de pilha (AP) (não-determinista) é uma 6-upla M = (K, Σ, Γ,, s, F ) onde: K é um conjunto finito não-vazio des estados; Σ é o alfabeto de entrada; Γ é o alfabeto da pilha, que é disjunto de Σ; s K é o estado inicial do autômato; F K é o conjunto de estados finais; é a relação de transição, [K (Σ {λ}) Γ ] [K Γ ]. Como indica seu próprio nome, um AP pode ser considerado como um AF ao qual se incorpora uma estrutura auxiliar que funciona como uma pilha. Um elemento [(q, σ, α), (q, β)] indica que se o AP M está no estado q, ao processar σ na entrada e tendo α no topo de sua pilha, passa a ter o estado q e o topo da pilha é substituído por β. Ou, formalmente: Definição 25 Uma configuração de um AP é uma tripla (q, w, ω) onde q é o estado atual, w Σ é a entrada restante e ω é o estado atual da pilha. Por convenção considera-se que o topo da pilha situa-se à esquerda ou seja, no início do string ω. Definição 26 Um AP M evolui em um passo da configuração (q, w, ω) para a configuração (q, x, ψ), escrevendo-se (q, w, ω) M (q, x, ψ), sse w = ax, ω = αγ, ψ = βγ e [(q, a, α), (q, β)]. Como no caso dos AF a aplicação de n passos sucessivos em um AP M corresponde a evolução denotada por (q, w, ω) n M (q, y, ψ), e quando n não é importante escreve-se (q, w, α) M (q, y, ψ). Também é similar o conceito de aceitação e de linguagem reconhecida. 22
23 Definição 27 Um AP M aceita um string w sse (s, w, λ) M (f, λ, λ) com f F ; no outro caso M rejeita w. O conjunto de todos os strings aceitos por M forma a linguagem reconhecida por M, denotada por L(M). Observe o que AP inicia sua execução com a pilha vazia, e que a mesma deve também terminar vazia. Ou seja, a pilha funciona como um mecanismo de armazenamento temporário, mas não retorna nenhuma informação sobre o resultado do processamento. Exemplo 19 Considere o AP M = (K, Σ, Γ,, s, F ) dado por K = {q 0, q 1 }, Σ = {a, b}, Γ = {A, B}, s = q 0, F = {q 1 } e = {1 : ((q 0, a, λ), (q 0, A)), 2 : ((q 0, b, λ), (q 0, B)), 3 : ((q 0, c, λ), (q 1, λ)), 4 : ((q 1, a, A), (q 1, λ)), 5 : ((q 1, b, B), (q 1, λ))}. A entrada w = abbcbba é aceita por este autômato, pois a evolução de M a partir de w ocorre conforme a tabela a seguir. estado entrada pilha transição q 0 abbcbba λ - q 0 bbcbba A 1 q 0 bcbba BA 2 q 0 cbba BBA 2 q 1 bba BBA 3 q 1 ba BA 5 q 1 a A 5 q 1 λ λ 4 Este AP é, em particular, determinista, pois a cada passo uma única transição pode ser aplicada. Observe ainda que se nenhuma transição pode ser aplicada à determinada configuração o AP termina sua execução e não aceita a entrada. Por exemplo, ao receber a entrada acb temos a evolução (q o, acb, λ) (q 0, cb, A) (q 1, b, A)??. Este autômato reconhece a linguagem L(M) = {wcw R w {a, b} } (verifique!). Exemplo 20 Seja o AP M = (K, Σ, Γ,, s, F ) onde K = {q 0, q 1, q 2 }, Σ = {a, b}, Γ = {A, B, C}, s = q 0, F = {q 2 } e é dada pelo seguinte conjunto de transições: 1 : ((q 0, λ, λ), (q 1, C)), 2 : ((q 1, a, A), (q 1, AA)), 3 : ((q 1, a, B), (q 1, λ)), = 4 : ((q 1, a, C), (q 1, AC)), 5 : ((q 1, b, A), (q 1, λ)), 6 : ((q 1, b, B), (q 1, BB)), 7 : ((q 1, b, C), (q 1, BC)), 8 : ((q 1, λ, C), (q 2, λ)) 23
24 A entrada w = abbaba é aceita por este autômato, pois a evolução de M a partir de w ocorre conforme a tabela a seguir. estado entrada pilha transição q 0 abbaba λ - q 1 abbaba C 1 q 1 bbaba AC 4 q 1 baba C 5 q 1 aba BC 7 q 1 ba C 3 q 1 a BC 7 q 1 λ C 3 q 2 λ λ 8 Este autômato é não determinista, pois no estado q 1 se pode aplicar a transição 3 e alguma das transições de 2 a 7, dependendo da entrada e do topo da pilha existentes. O autômato reconhece a linguagem sobre {a, b} formada por strings que contém o mesmo número de a s e b s (verifique!). Assim como ocorre uma correspondência entre ER e AF, é possível estabelecer um relacionamento entre as GLC e os AP. Teorema 6 Dada uma GLC G = (V, Σ, R, S) é possível obter um AP M t = (K, Σ, Γ,, s, F ) tal que L(G) = L(M). Prova (processo top-down): Inicialmente definem-se K = {p, q}, s = p, F = {q}. O alfabeto de terminais Σ de G é evidentemente o alfabeto de entrada de M top, e o alfabeto da pilha é dado por Γ = V Σ. Finalmente as transições em são obtidas a partir das três regras a seguir: 1. ((p, λ, λ), (q, S)) ; 2. ((q, λ, A), (q, w)) para toda regra A w R; 3. ((q, a, a), (q, λ)) para todo terminal a Σ. Exemplo 21 Seja a gramática G do exemplo 15. Tem-se G = ({S, A, B}, {a, b}, R, S) e R = {S 1 SAB, S 2 SBA, S 3 λ, A 4 aab, A 5 aba, A 6 a, B 7 bab, B 8 bba, B 9 b}. 24
25 Seguindo o método acima indicado o AP associado a G é M top = (K, Σ, Γ,, s, F ) onde se tem: K = {p, q}; Σ = {a, b}; Γ = {S, A, B, a, b}; s = p; F = {q}; e contém as transições: 1. ((p, λ, λ), (q, S)) de (1) do teorema 6; 2. (a) ((q, λ, S), (q, SAB)) de (2) aplicado à 1 a produção de G; (b) ((q, λ, S), (q, SBA)) de (2) aplicado à 2 a produção de G; (c) ((q, λ, S), (q, λ)) de (2) aplicado à 3 a produção de G; (d) ((q, λ, A), (q, aab)) de (2) aplicado à 4 a produção de G; (e) ((q, λ, A), (q, aba)) de (2) aplicado à 5 a produção de G; (f) ((q, λ, A), (q, a)) de (2) aplicado à 6 a produção de G; (g) ((q, λ, B), (q, bab)) de (2) aplicado à 7 a produção de G; (h) ((q, λ, B), (q, bba)) de (2) aplicado à 8 a produção de G; (i) ((q, λ, B), (q, b)) de (2) aplicado à 9 a produção de G; 3. (a) ((q, a, a), (q, λ)) de (3) aplicado ao terminal a Σ; e finalmente (b) ((q, b, b), (q, λ)) de (3) aplicado ao terminal b Σ. É ilustrativo verificar o funcionamento de M top sobre uma entrada gerada por G, como por exemplo w = bbaabaab (ver exemplo 15). A evolução correspondente é: 25
26 estado entrada pilha transição p bbaabaab λ - q bbaabaab S (1) q bbaabaab SAB (2.a) q bbaabaab SBAAB (2.b) q bbaabaab BAAB (2.c) q bbaabaab bbaaab (2.h) q baabaab BAAAB (3.b) q baabaab baaab (2.i) q aabaab AAAB (3.b) q aabaab aabaab (2.d) q abaab ABAAB (3.a) q abaab abaab (2.f) q baab BAAB (3.a) q baab baab (2.i) q aab AAB (3.b) q aab aab (2.f) q ab AB (3.a) q ab ab (2.f) q b B (3.a) q b b (2.i) q λ λ (3.b) Observe a correspondência entre a derivação indicada no exemplo 15 e o reconhecimento efetuado pelo AP. Se considerarmos a árvore de parsing A(G, w) ver figura 4 pode-se verificar que M top efetua a construção da árvore de cima para baixo, daí o nome top-down dado ao método. Conforme o teorema 6 este autômato reconhece a linguagem L(G) = L(M) = {w {a, b} w tem o mesmo número de a s e b s.}. Existe uma forma equivalente para se obter o reconhecimento de um string. Trata-se do processo denominado bottom-up, no qual a árvore de parsing é construída como o nome do processo indica de baixo para cima. Segunda prova do Teorema 6 (processo bottom-up): Como no processo top-down define-se M bot com K = {p, q}, s = p, F = {q}, o alfabeto de terminais é Σ e o alfabeto da pilha é Γ = V Σ. A alteração ocorre nas transições em, que são, neste processo, obtidas a partir das três regras: 26
27 1. ((p, a, λ), (p, a)) para todo terminal a Σ; 2. ((p, λ, w R ), (q, A)) para toda regra A w R; e 3. ((p, λ, S), (q, λ)). Exemplo 22 Seja o exemplo 21. M bot = (K, Σ, Γ,, s, F ) onde: Seguindo o método bottom-up o AP associado a G é K = {p, q}; Σ = {a, b}; Γ = {S, A, B, a, b}; s = p; F = {q}; e contém as transições: 1. Para os terminais (a) ((p, a, λ), (p, a)) e (b) ((p, b, λ), (p, b)); 2. Para as regras (conforme a ordem das produções de G) (a) ((p, λ, BAS), (p, S)); (b) ((p, λ, ABS), (p, S)); (c) ((p, λ, λ), (p, S)); (d) ((p, λ, BAa), (p, A)); (e) ((p, λ, ABa), (p, A)); (f) ((p, λ, a), (p, A)); (g) ((p, λ, BAb), (p, B)); (h) ((p, λ, ABb), (p, B)); (i) ((p, λ, b), (p, B)); e finalmente 3. ((p, λ, S), (q, λ)). 27
28 Observe o funcionamento de M bot sobre a entrada w = bbaabaab. A evolução é neste caso: estado entrada pilha transição p bbaabaab λ - p bbaabaab S (2.c) p baabaab bs (1.b) p aabaab bbs (1.b) p aabaab BbS (2.i) p abaab abbs (1.a) p baab aabbs (1.a) p baab AaBbS (2.f) p aab baabbs (1.b) p aab BAaBbS (2.i) p aab ABbS (2.d) p aab BS (2.h) p ab abs (1.a) p ab ABS (2.f) p ab S (2.b) p b as (1.a) p b AS (2.f) p λ bas (1.b) p λ BAS (2.i) p λ S (2.a) p λ λ (3) Novamente verifique as semelhanças e diferenças entre a derivação feita na gramática (ver exemplo 15), o reconhecimento pelo AP M top (ver exemplo 21) e o reconhecimento pelo processo bottom-up. Neste caso o AP M bot constrói a árvore de parsing de baixo para cima. O método mais eficiente a seguir (top-down ou bottom-up) depende da gramática a reconhecer. É importante observar que ambos os métodos produzem AP não-deterministas, onde para uma mesma configuração várias transições podem ser aplicadas, o que é desaconselhável em situações práticas. Estas questões são classicamente objeto de estudo na disciplina de Compiladores (ver [1]). Exercício 26 Seja a gramática do exercício 24. Encontre o AP que efetua o reconhecimento de L(G) pelo método top-down. Faça o reconhecimento do string aabbb neste autômato. 28
29 Exercício 27 Repita o exercício anterior pelo método bottom-up. Exercício 28 Seja a gramática do exercício 25. Encontre o AP que efetua o reconhecimento de L(G) pelo método top-down. Faça o reconhecimento do string aabbbb neste autômato. Exercício 29 Repita o exercício anterior pelo método bottom-up. Além dos dois métodos anteriormente indicados, que são de caracter bastante geral, outros métodos de parsing podem ser aplicados. Um dos mais conhecidos é o algoritmo CYK (Cocke, Younger e Kasami), ver algorithm. O uso das GLC s e dos AP s ampliou o leque de linguagens que podem ser utilizadas. Mas, repetindo questão vista no caso dos AF s, será que existem linguagens que não são reconhecidas pelos AP s? Infelizmente, uma resposta afirmativa a esta questão é dada pelo teorema a seguir, que segue uma linha de raciocínio similar à apresentada no Teorema 4. Teorema 7 (Teorema do Bombeamento II) Seja G uma GLC. Então existe um número K, dependendo de G, tal que qualquer string w L(G) com w > K pode ser escrito como w = uvxyz, onde v, y λ e tal que uv n xy n z L(G) para todo n 0. Prova: ver [5], [6] ou [2]. Exemplo 23 O Teorema do Bombeamento II, de forma similar ao apresentado no Exemplo 12, permite que se indique uma linguagem simples que não pode ser gerada por nenhuma GLC: L = {a n b n c n n 0} {a, b, c}. A prova desta afirmação é similar à indicada no Exemplo 12 e pode ser encontrada nas referências já indicadas. Conclui-se aqui que o formalismo GLC / AP, embora tenha ampliado as linguagens tratadas, não é suficientemente geral para representar todas as linguagens. O formalismo mais amplo possível, que representa todo o poder computacional de um computador digital como conhecido atualmente, denomina-se Máquina de Turing, e será abordado na seqüência. 29
30 7 Máquinas de Turing As Máquinas de Turing (MT) constituem um formalismo proposto por A. Turing, na primeira metade do século XX, para representar o conceito de computação, no sentido de cálculo efetivo. Na verdade este era o sentido original do termo computação, hoje inevitavelmente associado aos computadores. O formalismo proposto por Turing serviu de base para o surgimento de toda a Ciência da Computação. Uma MT é constituída por um mecanismo de controle que opera sobre uma fita infinita, podendo ler e gravar símbolos na fita, bem como movimentá-la nos dois sentidos. Definição 28 Uma máquina de Turing determinista (MTD) é uma 5-upla M = (K, Σ, δ, s, H) onde: K é um conjunto finito e não-vazio de estados; Σ é o alfabeto de entrada; s K é o estado inicial; H K é o conjunto de estados de parada; e δ é a função de transição: δ : ((K H) Σ) (K Σ {L, S, R}) representada por δ(q, σ) = (q, σ, m) A função de transição δ associa a um estado (não-final) e a um símbolo lido, um novo estado, um símbolo a ser gravado e um movimento na fita de entrada, e representa o programa da MT. Como dito anteriormente, uma MT opera sobre uma fita infinita composta de células, uma das quais apontada pela cabeça de leitura / gravação da MT. Considera-se que toda a fita (a menos do string de entrada) está inicializada com um símbolo especial branco Σ. Observe a semelhança entre a definição de MT e a definição de um AFD (ver definição 13). A diferença está na função de transição, que agora pode ler e gravar, além de que a entrada pode ser lida e relida conforme o movimento da cabeça de leitura. O movimento m pode ser para a esquerda (L lef t), direita (R right) ou sem movimento (S stay). Definição 29 A configuração de uma MTD é dada por (q, uav), onde q K é o estado corrente da MT, a Σ é o símbolo corrente sob a cabeça de leitura / gravação e u e v são os strings à esquerda e à direita da cabeça de leitura, respectivamente. 30
31 Como a fita é considerada infinita, para que u e v possam ser strings (isto é, seqüências finitas de símbolos) uma restrição deve ser imposta: o primeiro símbolo de u e o último símbolo de v devem ser diferentes de. Formalmente, usando ER: u L((Σ { })Σ λ) e v L(Σ (Σ { }) λ) Desta forma o restante da fita não representada por uav é constituído apenas por simbolos brancos ( ). Definição 30 A evolução de uma MTD da configuração (q, uav) para a configuração (q, xby), denotada (q, uav) (q, xby), ocorre de acordo com a função de transição δ(q, a). Todas as combinações possíveis de movimento podem ser formalizadas, como por exemplo: (q, uav) (q, ubv) sse δ(q, a) = (q, b, S); (q, uav) (q, xby) com u = xb, cv = y sse δ(q, a) = (q, c, L); (q, uav) (q, xby) com uc = x, v = by sse δ(q, a) = (q, c, R). Exemplo 24 Seja M = (K, Σ, δ, s, H) onde K = {q 0, h}, Σ = {, a}, s = q 0, H = {h} e δ(q, σ) = (q, σ, m) dada pela tabela a seguir (o número apenas identifica a transição): q σ q σ m 1 q 0 a q 0 R 2 q 0 h S A partir da configuração inicial (q 0, aaaa) esta MTD evolui da seguinte forma: estado fita transição q 0 aaaa - q 0 aaa 1 q 0 aa 1 q 0 a 1 q 0 1 h 2 Observe que a tabela apresenta os símbolos brancos apenas para uma referência posicional, já que os (infinitos) brancos à direita e à esquerda do string presente na fita não são representados. Portanto, a mesma evolução poderia ser mais corretamente indicada por: 31
32 (q 0, aaaa) 1 (q 0, aaa) 1 (q 0, aa) 1 (q 0, a) 1 (q 0, ) 2 (h, ) Esta máquina limpa a fita, tornando brancos os símbolos do string w L(a ) quando a cabeça de leitura inicia no símbolo mais à esquerda do string de entrada. A posição inicial do string de entrada e da cabeça de leitura são importantes para a definição da função de transição δ. Por convenção será sempre considerado que a cabeça de leitura está posicionada no primeiro símbolo não branco (se houver) mais à esquerda na fita de entrada. Exemplo 25 Seja M = (K, Σ, δ, s, H) onde K = {q 0, h}, Σ = {, a, b}, s = q 0, H = {h} e δ(q, σ) = (q, σ, m) dada por: q σ q σ m 1 q 0 a q 0 b R 2 q 0 b q 0 a R 3 q 0 h S A partir de (q 0, abbaa) esta MTD produz a evolução: estado fita transição q 0 abbaa - q 0 bbbaa 1 q 0 babaa 2 q 0 baaaa 2 q 0 baaba 1 q 0 baabb 1 h baabb 3 Esta MT troca os a s e b s na fita. Se trocarmos a e b por 0 e 1, esta operação coincide com o complemento de um utilizado em processadores. Exercício 30 Seja M = (K, Σ, δ, s, H) onde K = {q 0, q 1, h}, Σ = {, a, b}, s = q 0, H = {h} e δ dada por: 32
33 q σ q σ m 1 q 0 a q 0 a R 2 q 0 b q 1 b R 3 q 0 h S 4 q 1 a q 0 b R 5 q 1 b q 0 b R 6 q 1 h S Faça a evolução desta MTD a partir das entradas bbaab e babbaabb. O que faz esta MT? 33
34 Uma MT pode ser utilizada com dois objetivos: como dispositivo de computação: para calcular uma função sobre os strings de um alfabeto; ou como dispositivo de reconhecimento: para verificar se strings dados na entrada pertencem a uma determinada linguagem. Definição 31 Diz-se que uma MT M = (K, Σ, δ, s, {h}) computa uma função f : (Σ { }) (Σ { }) sse para todo string de entrada v (Σ { }), v = ax tem-se (s, ax) M e w = f(v). (h, by) com w = by Verifique que, como já observado, a MT do exemplo 25 computa a função complemento de um sobre um string dado na entrada. Por convenção adota-se que a cabeça de leitura da MT deve estar posicionada no primeiro símbolo mais à esquerda do string não-branco, tanto no início quanto no final da computação. Exemplo 26 Seja a MT M = ({q 0, q 1, q 2, h}, {, 0, 1}, δ, q 0, {h}) com δ dada por: q σ q σ m 1 q 0 0 q 0 0 R 2 q 0 1 q 0 1 R 3 q 0 q 1 L 4 q 1 0 q 2 1 L 5 q 1 1 q 1 0 L 6 q 1 q 2 1 L 7 q 2 0 q 2 0 L 8 q 2 1 q 2 1 L 9 q 2 h R 34
35 Esta MT opera sobre o string 1011 da seguinte forma: estado fita transição q q q q q q q q q q q h Esta máquina computa a função f : N N, f(n) = n + 1 para números em binário (verifique!). Exercício 31 A partir das máquinas dos exemplos 25 e 26 escreva uma MT que calcula o complemento de dois de um número binário dado na entrada. Definição 32 Uma MT M = (K, Σ, δ, s, {y, n}) decide a linguagem (ou é um procedimento de decisão para a linguagem) L (Σ { }) sse para todo string de entrada v (Σ { }), v = ax tem-se: { (s, ax) M (y,...) sse w L (s, ax) M (n,...) sse w L Exemplo 27 Seja a MT M = ({q 0, q 1, y, n}, {, a, b}, δ, q 0, {y, n}) com δ dada por: q σ q σ m 1 q 0 a q 0 a R 2 q 0 b q 1 b R 3 q 0 y S 4 q 1 a q 1 a R 5 q 1 b q 0 b R 6 q 1 n S 35
36 Esta MT é um procedimento de decisão para a linguagem (a ba ba ), formada pelos strings de a s e b s com número par de b s. Observe a semelhança entre esta MT e o AF que reconhece a mesma linguagem, visto no exemplo 8. Exercício 32 Faça a execução da MT do exemplo anterior a partir dos strings aabab e abbaab. Compare as evoluções obtidas com o reconhecimento efetuado pelo AF do exemplo 8. Exercício 33 A partir do exercício anterior, você é capaz de estabelecer um procedimento que permita obter, a partir de um AFD que reconhece uma linguagem L, uma MT que decide a mesma linguagem? Em um procedimento de decisão as computações realizadas pelas MT s sempre param, indicando pelo estado atingido (y ou n) se o string deve ou não ser reconhecido. No entanto, o formalismo MT permite uma outra forma de se reconhecer uma linguagem: por meio de semi-decisão. Definição 33 Uma MT M = (K, Σ, δ, s, {h}) semi-decide a linguagem (ou é um procedimento de semi-decisão para a linguagem) L (Σ { }) sse para todo string de entrada v (Σ { }), v = ax tem-se: { (s, ax) M (h,...) se w L (s, ax) M entra em loop, no outro caso. Como veremos, decisão e semi-decisão não são equivalentes, e definem duas classes de linguagens. As linguagens para as quais é possível definir um procedimento de decisão (MT que sempre pára, indicando pelo estado final atingido se o string dado na entrada deve ou não ser aceito) são denominadas linguagens recursivas, e aquelas para as quais é possível definir uma semi-decisão (MT que pára se o string de entrada pertence à linguagem, e entrando em loop no outro caso) são denominadas recursivamente enumeráveis. Esta importante distinção será detalhada oportunamente, no estudo de problemas indecidíveis. Definindo formalmente: Definição 34 Seja L (Σ { }). L é dita recursiva sse existe uma MT que a decide; L é dita recursivamente enumerável sse existe uma MT que a semi-decide. 36
37 Evidentemente ocorre o Teorema 8 Toda linguagem recursiva é recursivamente enumerável. Exercício 34 A partir da MT utilizada no exemplo 27, defina uma MT que efetua a semidecisão de (a ba ba ). Sugestão: simplesmente substitua em M a chegada no estado n por um loop. Relacione este exercício ao teorema anterior. 37
38 Referências [1] A. Aho, R. Sethi, and J.D. Ullman. Compiladores - Princípios, Técnicas e Ferramentas. Guanabara Koogan, [2] J.E. Hopcroft, R. Motwani, and J.D. Ullman. Introdução à Teoria de Autômatos, Linguagens e Computação. Campus, [3] J.E. Hopcroft and J.D. Ullman. Introduction to Automata Theory, Languages and Computation. Addison-Wesley, [4] H.R. Lewis and C.H. Papadimitriou. Elements of the Theory of Computation, 1 a Ed. Prentice-Hall, [5] H.R. Lewis and C.H. Papadimitriou. Elementos de Teoria da Computação, 2 a Ed. Bookmann, [6] P.F.B. Menezes. Linguagens Formais e Autômatos, 3 a Ed. Sagra-Luzzato, [7] S.H. Rodger and T.W. Finley. JFLAP: An Interactive Formal Languages and Automata Package. Jones and Bartlett Publishers, [8] T.A. Sudkamp. Languages and Machines. Addison-Wesley,
Linguagens Formais - Preliminares
Linguagens Formais - Preliminares Regivan H. N. Santiago DIMAp-UFRN 25 de fevereiro de 2007 Regivan H. N. Santiago (DIMAp-UFRN) Linguagens Formais - Preliminares 25 de fevereiro de 2007 1 / 26 Algumas
Leia maisModelos de Computação
Modelos de Computação 2.ano LCC e LERSI URL: http://www.ncc.up.pt/~nam/aulas/0405/mc Escolaridade: 3.5T e 1P Frequência:Semanalmente serão propostos trabalhos aos alunos, que serão entregues nas caixas
Leia maisCurso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios
Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios 1. Escreva a expressão regular para as seguintes linguagens sobre o alfabeto {0, 1}: strings começando
Leia maisCOMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 01 geovanegriesang@unisc.br Legenda: = sigma (somatório) = delta ε = épsilon λ = lambda
Leia maisLinguagens Regulares. Prof. Daniel Oliveira
Linguagens Regulares Prof. Daniel Oliveira Linguagens Regulares Linguagens Regulares ou Tipo 3 Hierarquia de Chomsky Linguagens Regulares Aborda-se os seguintes formalismos: Autômatos Finitos Expressões
Leia maisSCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)
SCC-505 - Capítulo 2 e (versão 2) João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisCapítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.
Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma
Leia maisTeoria da Computação Aula 02 Introdução
Teoria da Computação Aula 02 Introdução Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Alfabeto Um alfabeto é um conjunto finito de símbolos ou caracteres, representado pela letra sigma ( ). Portanto:
Leia maisLinguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática
Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra
Leia maisLinguagens Livres de Contexto
Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 4 Linguagens Livres de Contexto Prof. Luiz A M Palazzo Maio de 2011
Leia maisLinguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.
LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior olivete@fct.unesp.br 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas
Leia maisAula 7: Autômatos com Pilha
Teoria da Computação Segundo Semestre, 2014 Aula 7: Autômatos com Pilha DAINF-UTFPR Prof. Ricardo Dutra da Silva Vamos adicionar um memória do tipo pilha ao nossos autômatos para que seja possível aceitar
Leia maisApostila 05 Assunto: Linguagens dos tipos 0 e 1
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisAlfabeto, Cadeias, Operações e Linguagens
Linguagens de Programação e Compiladores - Aula 3 1 Alfabeto, Cadeias, Operações e Linguagens 1.Conjuntos Para representar um determinado conjunto é necessário buscar uma notação para representá-lo e ter
Leia maisAlfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).
Alfabeto e palavras Alfabeto conjunto finito de símbolos (Σ). {A,...,Z}, {α, β,... }, {a,b}, {0,1}, ASCII Palavra de Σ sequência finita de símbolos do alfabeto Σ Σ = {a, b} aabba a aaaaaaaa Comprimento
Leia maisProf. Dr. Marcos Castilho. Departamento de Informática/UFPR. 27 de Fevereiro de 2018
27 de Fevereiro de 2018 Definição: Concatenação Sejam u, v Σ. A concatenação de u e v, denotado por uv é a operação binária sobre Σ assim definida (i) BASE: Se tamanho(v) = 0 então v = λ e uv = u. (ii)
Leia maisTEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO
LICENCIATURA EM CIÊNCIAS DA COMPUTAÇÃO TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO José Carlos Costa Dep. Matemática e Aplicações Universidade do Minho Braga, Portugal 31 de Maio de 2010
Leia maisLINGUAGENS FORMAIS E AUTÔMATOS
LINGUAGENS FORMAIS E AUTÔMATOS O objetivo deste curso é formalizar a idéia de linguagem e definir os tipos de sintaxe e semântica. Para cada sintaxe, analisamos autômatos, ue são abstrações de algoritmos.
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação - P. Blauth Menezes
Leia maisMáquinas Universais. Máquina de Turing. Celso Olivete Júnior.
Máquinas Universais Máquina de Celso Olivete Júnior olivete@fct.unesp.br http://www2.fct.unesp.br/docentes/dmec/olivete/ Roteiro Hipótese de Church - Máquinas Universais: Máquina de Máquina de : Noção
Leia maisLinguagem (formal) de alfabeto Σ
Linguagem (formal) de alfabeto Σ Linguagem é qualquer subconjunto de Σ, i.e. qualquer conjunto de palavras de Σ Σ = {a, b} {aa, ab, ba, bb} ou {x x {a, b} e x = 2} {a, aa, ab, ba, aaa, aab, aba,...} ou
Leia maisDisciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisLinguagens Livres de Contexto
Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha
Leia maisAutómatos Finitos Determinísticos (AFD)
Folha Prática Autómatos Finitos 1 Autómatos Finitos Determinísticos (AFD) 1. Determine e implemente computacionalmente um AFD que aceita todas as cadeias de cada uma das seguintes linguagens sobre o alfabeto
Leia maisConceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem
Conceitos Básicos Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto.
Leia maisINE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas
INE5317 Linguagens Formais e Compiladores AULA 4: Gramáticas bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL:
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisSCC 205 Teoria da Computação e Linguagens Formais
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação SCC 205 Teoria da Computação e Linguagens Formais Autômatos com pilha Lista 3 1. Dê um
Leia maisSCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente
SCC-505 - Capítulo 3 Linguagens Sensíveis ao Contexto e João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis
Leia maisLinguagens livres de contexto e autômatos de pilha
Capítulo 6: Linguagens livres de contexto e autômatos de pilha José Lucas Rangel, maio 1999 6.1 - Introdução. Os aceitadores, ou reconhecedores, das linguagens livres de contexto são os chamados autômatos
Leia maisGramáticas Livres de Contexto Parte 1
Universidade Estadual de Feira de Santana Engenharia de Computação Gramáticas Livres de Contexto Parte 1 EXA 817 Compiladores Prof. Matheus Giovanni Pires O papel do Analisador Sintático É responsável
Leia maisSCC Capítulo 1 Linguagens Regulares e Autômatos Finitos
SCC-505 - Capítulo 1 Linguagens Regulares e Autômatos Finitos João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo
Leia maisProblema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?
2 Linguagens Uma linguagem de programação, ou uma língua natural como o Português ou o Inglês, pode ser vista como um conjunto de sequências de símbolos, pertencentes a um conjunto finito. Em Português
Leia maisLinguagens recursivamente enumeráveis
Linguagens recursivamente enumeráveis Uma palavra x Σ é aceite por uma máquina de Turing M ( x L(M)) se M iniciando com a palavra x na fita e no estado inicial, pára num estado final. Caso contrário, M
Leia maisMáquinas de Turing - Computabilidade
BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma
Leia maisModelos de Computação Folha de trabalho n. 10
Modelos de Computação Folha de trabalho n. 10 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada
Leia maisMarcos Castilho. DInf/UFPR. 21 de março de 2019
21 de março de 2019 Análise sintática: introdução Dada uma gramática G e uma palavra w Σ, como saber se w L(G)? Isto é, como saber se S = G w? Derivações à esquerda e ambiguidade w L(G) se S = G w; Sabemos
Leia maisIBM1088 Linguagens Formais e Teoria da
IBM1088 Linguagens Formais e Teoria da Computação Linguagens e Gramáticas Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 47 Frase do dia Sofremos muito com
Leia maisTeoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.
Teoria da Computação Capítulo 1 Máquina de Turing Prof. Wanderley de Souza Alencar, MSc. Pauta 1. Introdução 2. Definição de Máquina de Turing 3. Variações de Máquina de Turing 4. A Tese de Church-Turing
Leia maisLINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO
LINGUAGEM LIVRE DE CONTEXTO As Linguagens Livres de Contexto é um reconhecedor de linguagens, capaz de aceitar palavras corretas (cadeia, sentenças) da linguagem. Por exemplo, os autômatos. Um gerador
Leia maisApostila 01 Fundamentação da Teoria da Computação e Linguagens Formais
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Leia maisUNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferencia-se das máquinas de Turing e Post principalmente pelo fato de possuir a memória de entrada separada
Leia maisLinguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)
Linguagens Formais e Autômatos Autômatos Finitos Determinísticos (AFD) Cristiano Lehrer, M.Sc. Linguagens Regulares A teoria da computação começa com uma pergunta: O que é um computador? É, talvez, uma
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisINE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto
INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto baseado em material produzido pelo prof Paulo Bauth Menezes e pelo prof Olinto José Varela
Leia maisTeoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)
Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q
Leia maisINE5317 Linguagens Formais e Compiladores AULA 8: Linguagens Livres de Contexto
INE5317 Linguagens Formais e Compiladores AULA 8: Linguagens Livres de Contexto baseado em material produzido pelo prof Paulo B auth Menezes e pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira
Leia maisGramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1
Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática
Leia maisGramática. Gramática. Gramática
Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática
Leia maisExpressões e Gramáticas Regulares e Autómatos Finitos
Folha Prática Expressões e Gramáticas Regulares e Autómatos Finitos 1 Expressões e Gramáticas Regulares e Autómatos Finitos Expressões Regulares e Autómatos Finitos 1. Determine e implemente computacionalmente
Leia maisAutómatos de Pilha e Linguagens Livres de Contexto
Folha Prática Autómatos de Pilha e Linguagens Livres de Contexto 1 Autómatos de Pilha e Linguagens Livres de Contexto Autómatos de Pilha Não Determinísticos (APND) 1. Considere a seguinte tabela de transição
Leia maisTeoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos
Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 7 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 9/9/7 Valor: pontos. Uma versão do problema
Leia maisLinguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.
LFA Aula 04 Autômatos Finitos 16/11/2016 Celso Olivete Júnior olivete@fct.unesp.br 1 Classificação das Linguagens segundo Hierarquia de Chomsky Máquina de Turing Máquina de Turing com fita limitada Autômato
Leia maisUm alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.
Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem
Leia maisCompiladores Aula 4. Celso Olivete Júnior.
Aula 4 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Revisão: gramáticas Relações em uma gramática: Cabeça, Último, Primeiro (First) e Seguinte (Follow) Capítulo 4 (seção 4.4.2) do livro
Leia maisCompiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador
Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador
Leia maisUNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Proposta por Alan Turing em 1936; É universalmente conhecida e aceita como formalização de algoritmo; Teoria
Leia maisLinguaguens recursivamente enumeráveis e recursivas
Linguaguens recursivamente enumeráveis e recursivas Uma linguagem diz-se recursivamente enumerável (r.e) ou semi-decidível se é aceite por uma máquina de Turing. SD: classe de linguagens recursivamente
Leia maisGramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo
Gramática regular IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 41 Frase do dia Através de três métodos
Leia maisExpressões Regulares e Gramáticas Regulares
Universidade Católica de Pelotas Escola de informática 053212 Linguagens Formais e Autômatos TEXTO 2 Expressões Regulares e Gramáticas Regulares Prof. Luiz A M Palazzo Março de 2007 Definição de Expressão
Leia maisModelos de Computação Folha de trabalho n. 8
Modelos de Computação Folha de trabalho n. 8 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada
Leia maisAula 8: Gramáticas Livres de Contexto
Teoria da Computação Primeiro Semestre, 2015 Aula 8: Gramáticas Livres de Contexto DAINF-UTFPR Prof. Ricardo Dutra da Silva Veremos agora maneira de gerar as strings de um tipo específico de linguagem,
Leia maisUniversidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação SCC-205 TEORIA DA COMPUTAÇÃO E LINGUAGENS FORMAIS Turma 1 2º. Semestre de 2012 Prof. João Luís
Leia maisIV Gramáticas Livres de Contexto
IV Gramáticas Livres de Contexto Introdução Definições de GLC 1 G = (Vn, Vt, P, S) onde P = {A α A Vn α (Vn Vt) + } 2 GLC ε - LIVRE : S ε pode pertencer a P, desde que: S seja o símbolo inicial de G S
Leia maisProf. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018
22 de Fevereiro de 2018 Motivação O que é um computador? O que é um algoritmo? Para que serve um algoritmo? Quando um algoritmo é bom? A análise de um algoritmo depende do computador? Motivação Em teoria
Leia maisLinguaguens recursivamente enumeráveis
Linguaguens recursivamente enumeráveis Uma palavra x Σ é aceite por uma máquina de Turing M ( x L(M)) se M iniciando com a palavra x na fita e no estado inicial, pára num estado final. Caso contrário,
Leia maisLinguagens Formais e Problemas de Decisão
Linguagens Formais e Problemas de Decisão Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Formais e Problemas
Leia maisLinguagens Livres de Contexto
Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha
Leia maisUNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Máquina de Turing Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Teoria da Computação Ciência da Computação
Leia maisMáquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente
ESIN/UCPel 058814 Linguagens Formais e Autômatos TEXTO 5 Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente Prof. Luiz A M Palazzo Maio de 2007 0. Introdução A Ciência da Computação
Leia maisCapítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268
Capítulo 6 Simplificação de gramáticas livres de contexto e Formas Normais 61 6.1. Métodos para transformar gramáticas ái 62 6.2. Duas formas Normais (Chomsky e Greibach) 268 6.1. Métodos para transformar
Leia mais1 INTRODUÇÃO E CONCEITOS BÁSICOS
1 INTRODUÇÃO E CONCEITOS BÁSICOS Inicia com uma breve história do surgimento e do desenvolvimento dos conceitos, resultados e formalismos nos quais a Teoria da Computação é baseada. Formalização dos conceitos
Leia maisA. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)
DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR Teoria da Computação Eng. Informática 1º Semestre Exame 2ª chamada - Resolução 2h + 30min 07/Fev/2011 Pergunta A.1 A.2 A.3 B.1 B.2 B.3a B.3b C.1 C.2 D.1
Leia maisTeoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha
Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha Simão Melo de Sousa 12 de Outubro de 2011 Conteúdo 1 Gramáticas e Definições básicas 1 2 Gramáticas e Linguagens 4 2.1 Gramáticas
Leia maisINE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos
INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira As Linguagens e os formalismos representacionais
Leia maisLFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.
LFA Aula 09 Gramáticas e Linguagens Livres de Contexto (Hopcroft, 2002) 18/01/2016 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Classes Gramaticais Linguagens
Leia maisUniversidade Federal do Rio de Janeiro Departamento de Ciência da Computação
Universidade Federal do Rio de Janeiro Departamento de Ciência da Computação Não são aceitas respostas sem justificativa. Explique tudo o que você fizer. Linguagens Formais o semestre de 999 Primeira Prova
Leia maisAula 9: Máquinas de Turing
Teoria da Computação Aula 9: Máquinas de Turing DAINF-UTFPR Prof. Ricardo Dutra da Silva Uma máquina de Turing é uma máquina de estados finitos que pode mover o cabeçote em qualquer direção, ler e manipular
Leia maisO que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento
O que é Linguagem Regular Um teorema sobre linguagens regulares Linguagem regular Uma linguagem é dita ser uma linguagem regular se existe um autômato finito que a reconhece. Dada uma linguagem L: É possível
Leia maisLinguagens, Reconhecedores e Gramáticas
Linguagens, Reconhecedores e Gramáticas Já vimos que Linguagem é um conjunto de cadeias de símbolos sobre um alfabeto/vocabulário, V. É um subconjunto específico de V*. Estas cadeias são denominadas sentenças
Leia maisCurso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos
Curso: Ciência da Computação Turma: 6ª Série Aula 3 Autômatos Finitos Alfabeto Alfabeto Conjunto finito de símbolos; Normalmente descrito por ; Exemplos: ={a, b} ={1, 2, 3} ={00, 11} Ø Alfabeto romano
Leia maisLFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.
LFA Aula 05 AFND: com e sem movimentos vazios 05/12/2016 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Na aula passada... Reconhecedores genéricos Autômatos finitos
Leia maisCapítulo 1: Alfabetos, cadeias, linguagens
Capítulo 1: Alfabetos, cadeias, linguagens Símbolos e alfabetos. Um alfabeto é, para os nossos fins, um conjunto finito não vazio cujos elementos são chamados de símbolos. Dessa maneira, os conceitos de
Leia maisFaculdade de Computação
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação - 1 0 Semestre 007 Professora : Sandra Aparecida de Amo Solução da Lista de Exercícios n o 1 Exercícios de Revisão
Leia maisMatemática Discreta para Ciência da Computação
Matemática Discreta para Ciência da Computação P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação
Leia maisAutomata e Linguagens Formais
Automata e Linguagens Formais 6 Prof. Carlos H. C. Ribeiro carlos@ita.br Análise Sintática (Parsing) GLCs ambíguas Grafos de GLCs Estratégias para parsing Exemplos de parsers Análise Sintática (Parsing)
Leia maisGramáticas ( [HMU00], Cap. 5.1)
Gramáticas ( [HMU00], Cap. 5.1) Vimos que a seguinte linguagem não é regular L = {0 n 1 n n 0} Contudo podemos fácilmente dar uma definição indutiva das suas palavras: 1. ɛ L 2. Se x L então 0x1 L L é
Leia maisRevisões de Conjuntos
Revisões de Conjuntos {, {a}, {b}, {a, b}} a A a pertence a A, a é elemento de A a {a, b, c} a / A a não pertence a A d / {a, b, c} A B A contido em B, A subconjunto de B x A x B {a, b} {b, c, a} A B A
Leia maisCOMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 02 Prof. geovanegriesang@unisc.br Legenda: = sigma (somatório) = delta ε = epsilon λ =
Leia maisTeoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos
Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 8 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 7/4/8 Valor: pontos. Uma versão do problema
Leia maisLinguagens Formais e Autômatos (LFA)
INF1626 Linguagens Formais e Autômatos (2013-2) Informática PUC-Rio Linguagens Formais e Autômatos (LFA) Aula de 06/11/2013 LSC s processadas por Máquinas de Turing de Fita Limitada Clarisse S. de Souza,
Leia maisa n Sistemas de Estados Finitos AF Determinísticos
a n Sistemas de Estados Finitos AF Determinísticos 1 Relembrando Uma representação finita de uma linguagem L qualquer pode ser: 1. Um conjunto finito de cadeias (se L for finita); 2. Uma expressão de um
Leia maisAutomata e Linguagens Formais
Automata e Linguagens Formais 5 Prof. Carlos H. C. Ribeiro carlos@ita.br Gramáticas A Hierarquia de Chomsky Tipos de gramáticas e linguagens Pré-normalização de GLCs Formas Normais: Chomsky e Greibach
Leia maisLINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos
LINGUAGENS FORMAIS E AUTÔMATOS Prova 2-10/06/2011 - Prof. Marcus Ramos NOME: _ Colocar seu nome no espaço acima; A prova pode ser feita à lápis ou caneta; A duração é de três horas; As questões da parte
Leia maisApostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares
Cursos: Bacharelado em Ciência da Computação e Bacharelado em Sistemas de Informação Disciplinas: (1493A) Teoria da Computação e Linguagens Formais, (4623A) Teoria da Computação e Linguagens Formais e
Leia maisTeoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.
Pós-Graduação em Ciência da Computação DCC/ICEx/UFMG Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9. Observações: Pontos
Leia maisModelos Universais de Computação
Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)
Leia mais