Fundamentos de Teoria da Computação

Tamanho: px
Começar a partir da página:

Download "Fundamentos de Teoria da Computação"

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 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 mais

Modelos de Computação

Modelos 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 mais

Curso 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 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 mais

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

COMPILADORES. 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 mais

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens 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 mais

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

SCC 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 mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens 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 mais

Capí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. 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 mais

Teoria da Computação Aula 02 Introdução

Teoria 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 mais

Linguagens 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 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 mais

Linguagens Livres de Contexto

Linguagens 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 mais

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Linguagens 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 mais

Aula 7: Autômatos com Pilha

Aula 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 mais

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Apostila 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 mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens 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 mais

Alfabeto, Cadeias, Operações e Linguagens

Alfabeto, 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 mais

Alfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).

Alfabeto 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 mais

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 27 de Fevereiro de 2018

Prof. 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 mais

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

TEORIA 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 mais

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGENS 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 mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens 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 mais

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Má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 mais

Linguagem (formal) de alfabeto Σ

Linguagem (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 mais

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Disciplina: 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 mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens 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 mais

Linguagens Livres de Contexto

Linguagens 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 mais

Autómatos Finitos Determinísticos (AFD)

Autó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 mais

Conceitos 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 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 mais

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

INE5317 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 mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens 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 mais

SCC 205 Teoria da Computação e Linguagens Formais

SCC 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 mais

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

SCC 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 mais

Linguagens livres de contexto e autômatos de pilha

Linguagens 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 mais

Gramáticas Livres de Contexto Parte 1

Gramá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 mais

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

SCC 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 mais

Problema 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?

Problema 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 mais

Linguagens recursivamente enumeráveis

Linguagens 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 mais

Máquinas de Turing - Computabilidade

Má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 mais

Modelos de Computação Folha de trabalho n. 10

Modelos 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 mais

Marcos Castilho. DInf/UFPR. 21 de março de 2019

Marcos 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 mais

IBM1088 Linguagens Formais e Teoria da

IBM1088 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 mais

Teoria 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. 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 mais

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

LINGUAGEM 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 mais

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

Apostila 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 mais

UNIVERSIDADE 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 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 mais

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

Linguagens 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 mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens 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 mais

INE5317 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 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 mais

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Teoria 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 mais

INE5317 Linguagens Formais e Compiladores AULA 8: Linguagens Livres de Contexto

INE5317 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 mais

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramá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 mais

Gramática. Gramática. Gramática

Gramá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 mais

Expressões e Gramáticas Regulares e Autómatos Finitos

Expressõ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 mais

Autómatos de Pilha e Linguagens Livres de Contexto

Autó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 mais

Teoria 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

Teoria 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 mais

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Linguagens 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 mais

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Um 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 mais

Compiladores Aula 4. Celso Olivete Júnior.

Compiladores 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 mais

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Compiladores. 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 mais

UNIVERSIDADE 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 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 mais

Linguaguens recursivamente enumeráveis e recursivas

Linguaguens 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 mais

Gramá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 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 mais

Expressões Regulares e Gramáticas Regulares

Expressõ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 mais

Modelos de Computação Folha de trabalho n. 8

Modelos 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 mais

Aula 8: Gramáticas Livres de Contexto

Aula 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 mais

Universidade 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 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 mais

IV Gramáticas Livres de Contexto

IV 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 mais

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Prof. 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 mais

Linguaguens recursivamente enumeráveis

Linguaguens 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 mais

Linguagens Formais e Problemas de Decisão

Linguagens 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 mais

Linguagens Livres de Contexto

Linguagens 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 mais

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

UNIVERSIDADE 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 mais

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Má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 mais

Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268

Capí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 mais

1 INTRODUÇÃO E CONCEITOS BÁSICOS

1 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 mais

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

A. (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 mais

Teoria 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 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 mais

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

INE5317 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 mais

LFA 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 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 mais

Universidade 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 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 mais

Aula 9: Máquinas de Turing

Aula 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 mais

O 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. 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 mais

Linguagens, Reconhecedores e Gramáticas

Linguagens, 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 mais

Curso: 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. 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 mais

LFA 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 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 mais

Capítulo 1: Alfabetos, cadeias, linguagens

Capí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 mais

Faculdade de Computação

Faculdade 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 mais

Matemática Discreta para Ciência da Computação

Matemá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 mais

Automata e Linguagens Formais

Automata 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 mais

Gramáticas ( [HMU00], Cap. 5.1)

Gramá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 mais

Revisões de Conjuntos

Revisõ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 mais

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

COMPILADORES. 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 mais

Teoria 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

Teoria 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 mais

Linguagens Formais e Autômatos (LFA)

Linguagens 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 mais

a n Sistemas de Estados Finitos AF Determinísticos

a 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 mais

Automata e Linguagens Formais

Automata 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 mais

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

LINGUAGENS 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 mais

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

Apostila 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 mais

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Teoria 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 mais

Modelos Universais de Computação

Modelos 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