Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aspectos Teóricos da Computação Aula ao vivo Prof. Hugo Insua Aspectos Teóricos da Computação Aula ao vivo 01 Alta Complexidade Baixa Complexidade Revisão da Hierarquia de Chomsky Aspectos Teóricos da Computação Aula ao vivo 01 Revisão da Hierarquia de Chomsky - Linguagem Regular A análise de cada palavra de um programa escrito em uma Linguagem de Programação qualquer, denominada Análise Léxica, usa os algoritmos obtidos do estudo das Linguagens Regulares. Estes algoritmos são a realização do modelo computacional denominado Máquina de Estados Finitos. Considere-se o alfabeto A = {a, b, c}. A partir deste alfabeto, podem ser definidas diferentes Linguagens. Exemplos: LR = {w | w = an bb cm, n > 0, m >0}. Trata-se de uma Linguagem Regular, pois não existe um vínculo entre o número de ocorrência dos diferentes símbolos “a”, “b” e “c” Aspectos Teóricos da Computação Aula ao vivo 01 Revisão da Hierarquia de Chomsky - Linguagem Livre de Contexto A análise de cada comando (if, while, atribuição) e demais estruturas sintáticas (classes,declarações de variáveis, etc.) de um programa desenvolvido em uma Linguagem de Programação, a Análise Sintática, emprega algoritmos advindos de estudo das Linguagens Livres de Contexto. Considere-se o alfabeto A = {a, b, c}. A partir deste alfabeto, podem ser definidas diferentes Linguagens. LL = {w | w = an bb cn, n > 0, n >0}. Trata-se de uma Linguagem Livre de Contexto, pois o número de ocorrências do símbolo “c” deve ser igual ao do símbolo “a”. Ao se verificar se uma palavra pertence a LL, um reconhecedor deveria ao identificar cada símbolo “c”, “lembrar-se”, que anteriormente foi encontrado um símbolo “a” correspondente. Sabe-se que para isto, uma memória organizada em pilha resolve conceitualmente o problema. Aspectos Teóricos da Computação Aula ao vivo 01 Revisão da Hierarquia de Chomsky - Linguagem Sensível a Contexto Computacionalmente, uma linguagem sensível ao contexto é equivalente a uma máquina de Turing não determinística linearmente limitada, também chamado de autômato linearmente limitado. Ela é uma máquina de Turing não determinística com uma fita de apenas kn 'células', onde 'n' é o tamanho da entrada e 'k' é uma constante associada com a máquina. Isto significa que toda linguagem formal que pode ser decidida por uma máquina desse tipo é uma linguagem sensível ao contexto, e cada linguagem sensível ao contexto pode ser decidida por uma máquina desse tipo. Considere-se o alfabeto A = {a, b, c}. A partir deste alfabeto, podem ser definidas diferentes Linguagens. Ld = {w | w = an (bb) n cn, n > 0, n >0}. Trata-se de uma Linguagem Dependente de Contexto.” Ao se verificar se uma palavra pertence a LD, um reconhecedor deveria memorizar não somente cada ocorrência do símbolo “a”, como também cada ocorrência da cadeia “bb” para poder, finalmente, aceitar cada ocorrência do símbolo “c”. Pode-se constatar que, conceitualmente, para se resolver este problema seriam necessárias duas pilhas. Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis As máquinas de Turing são similares aos autômatos finitos e de pilha e apresentam fita de entrada e unidade de controle finito. A figura abaixo ilustra a estrutura de uma Máquina de Turing. Note-se que a fita de entrada não é finita e sim, ilimitada à direita. Por outro lado, o seu início é marcado pelo símbolo especial “•”. Cumpre observar, que há autores que apresentam a máquina de Turing como ilimitada à direita e à esquerda. Sobre a fita de entrada podem ser executadas as operações de leitura e escrita. Ainda, o cursor pode movimentar-se à direita e à esquerda. O símbolo gravado e o sentido do movimento são definidos pelo programa da unidade de controle. Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis O programa é uma função tal que dependendo do estado corrente da máquina e do símbolo lido, são determinados: o próximo estado, o sentido do movimento do cursor e o símbolo a ser gravado na fita. Como a fita é ilimitada à direita, inicialmente, a palavra a ser processada ocupa as células mais à esquerda, sendo que as demais células são aqui denotadas por , ou seja, células em branco. Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Uma MT é constituída de: a)Uma fita, infinita para a direita, dividida em células Cada célula está em branco ou contém algum símbolo de um alfabeto = {s0, s1,...,sn} b) Um cabeçote de leitura Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis b) Um cabeçote de leitura Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis c) Um registrador de estados Q= {q0, q1, q2, ..., qm} cabeçote de leitura Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis d) Um conjunto de instruções I Cada instrução é uma quádrupla da forma (qi, sj, , ql) Como uma MT interpreta uma instrução? Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Uma instrução da forma (qi, sj, , ql), informa à MT que, estando ela no estado qi, lendo o símbolo sj, faça o seguinte; Se 𝛼 = sk, apague sj e escreva sk na célula que está sendo lida Se 𝛼 = D, mova o cabeçote de leitura uma célula para a direita Se 𝛼 = E, mova o cabeçote de leitura uma célula para a esquerda Modifique o estado atual da máquina para ql Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exemplo de Instrução Consideremos uma MT com a seguinte configuração i1 = (q1, 0, D, q1) I2 = ( q1, 1, 0, q2) Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exemplo de Instrução Consideremos uma MT com a seguinte configuração i1 = (q1, 0, D, q1) I2 = ( q1, 1, 0, q2) i1 = (q1, 0, D, q1) Aspectos Teóricos da Computação Aula ao vivo 01 i1 = (q1, 0, D, q1) I2 = ( q1, 1, 0, q2) i1 = (q1, 0, D, q1) I2 = ( q1, 1, 0, q2) Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Máquina de Turing É um quíntupla caracterizada por MT= (Q, , I, qi, F), onde: Q = {q0, q1, q2, ..., qm} é o seu conjunto de estados = {s0, s1,...,sn} é o seu alfabeto I = (qi, sj, , ql) é o seu conjunto de instruções qi Q é o seu estado inicial F Q é o seu conjunto de estados finais Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício 1 AspectosTeóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício 1 MT= (Q, , I, qi, F), onde: Q = {q1, q2, q3} = {0,1} I = {i1, i2, i3, i4} = { (q1 , 1, D, q1 ), ..., (q2, 0, D, q3 )} qi = q1 F = {q3} Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício 2 Consideremos as seguintes configurações Aspectos Teóricos da Computação Aula ao vivo 01 Definição formal Máquina de Turing: Linguagens Recursivas e Recursivamente Enumeráveis Exercício 2 Consideremos as seguintes configurações
Compartilhar