Teoria da Computação



Documentos relacionados
Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas

Teoria da Computação

Linguaguens recursivamente enumeráveis

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

Linguagens recursivamente enumeráveis

MT como calculadoras de funções parciais

Linguaguens recursivamente enumeráveis e recursivas

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

Faculdade de Computação

7.1. Autómatos de pilha não-determinísticos (NPDA) 7.3. Autómatos de pilha determinísticos e linguagens livres de contexto determinísticas.

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

Teoria da Computação (cod.11562)

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

Autómatos determísticos de k-pilhas

Revisões de Conjuntos

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

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

Linguagem (formal) de alfabeto Σ

Teoria da Computação

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

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

1 Teoria de conjuntos e lógica

13.2. Sistemas de Post Sistemas de rescrita Cálculo Lambda. ADC/TC/Cap.13/ /LEI/DEIFCTUC 497

SCC Introdução à Teoria da Computação

Autómatos de pilha e Gramáticas independentes de contexto

Noções de grafos (dirigidos)

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 7

Teoria da Computação (BBC244)

Teoria da Computação Aula - Linguagens e Gramáticas Formais

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

Exercícios de Teoria da Computação Autómatos, gramáticas e expressões regulares

SCC-5832 Teoria da Computação

Regulares (RL) 4.1. Propriedades d de fecho das RL ADC/TC/CAP.4/ /LEI/DEIFCTUC 192

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA - UESB DEPARTAMENTO DE CIÊNCIAS EXATAS - DCE PLANO DE CURSO DISCIPLINA

Universidade Federal de Alfenas

Autómatos de pilha e GIC

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

Modelos de Computação

A Derivada. 1.0 Conceitos. 2.0 Técnicas de Diferenciação. 2.1 Técnicas Básicas. Derivada de f em relação a x:

Alfabeto, Cadeias, Operações e Linguagens

Gramáticas Regulares

Gramáticas Livres de Contexto

Os limites da computação algorítmica

Turma A - Segundas e Quartas das 8h30min - 10h10min Turma B - Segundas e Quartas das 10h30min - 12h10min

Lista de Exercícios Critérios de Divisibilidade

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

Capítulo 2 Máquinas de Estado

SCC Teoria da Computação e Linguagens Formais

(1, 6) é também uma solução da equação, pois = 15, isto é, 15 = 15. ( 23,

Problemas decidíveis para LICs

p. 2 Trechos de Material Didático (Apostila) e Conteúdo do Livro Texto, de autoria de Marcus Ramos, João José Neto e Ítalo Vega i <= 1

Afirmação verdadeira: frase, falada ou escrita, que declara um facto que é aceite no momento em que é ouvido ou lido.

A Dança do Embaralhamento. Série Matemática na Escola. Objetivos 1. Introduzir a noção de grupo de permutação; 2. Mostrar uma aplicação de MMC.

Outras Máquinas de Turing

Compiladores. Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal. S. Melo de Sousa Compiladores

Relações. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Relações 1

Problemas decidíveis para LICs

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Projecto Delfos: Escola de Matemática Para Jovens 1 TEORIA DOS NÚMEROS

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

Algoritmo e Pseudo-código

Análise Sintática. Análise Sintática. Tipos de Analisadores Gramáticais: PARSERS

OBSERVAÇÕES: EXERCÍCIOS

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular TEORIA DA COMPUTAÇÃO Ano Lectivo 2013/2014

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular TEORIA DA COMPUTAÇÃO Ano Lectivo 2017/2018

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Cálculo proposicional

Jogos Bayesianos Estratégias e Equilíbrio Aplicações. Jogos Bayesianos. Prof. Leandro Chaves Rêgo

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

Análise Léxica. Sumário

1 O que é árvore de decisão

Placas Gráficas. Placas Gráficas. Placas Gráficas. Placas Gráficas. O que é? Para que serve? Resolução (cont.) Resolução

A integral indefinida

Cálculo I -A- Humberto José Bortolossi. Aula 1 18 de agosto de Departamento de Matemática Aplicada Universidade Federal Fluminense

Matrizes e Sistemas Lineares. Professor: Juliano de Bem Francisco. Departamento de Matemática Universidade Federal de Santa Catarina.

Árvores de Derivação para GLC Ambigüidade nas GLC Precedência, Prioridade e Associatividade de operadores

Pelo que foi exposto no teorema de Carnot, obteve-se a seguinte relação:

Tabela Periódica. Este trabalho é uma apresentação sobre a tabela periódica destinada ao ensino básico ou

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

Prof. Neckel FÍSICA 1 PROVA 1 TEMA 2 PARTE 1 PROF. NECKEL POSIÇÃO. Sistema de Coordenadas Nome do sistema Unidade do sistema 22/02/2016.

Pedro Vasconcelos DCC/FCUP. Programação Funcional 10 a Aula O Jogo da Vida

Forma Normal de Boyce-Codd

Gramáticas Adaptativas Estado Atual da Pesquisa aplicada em Autômatos Adaptativos

CAPÍTULO 7 AUTÓMATOS DE PILHA

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

PARTE 11 VETOR GRADIENTE:

- Cálculo 1 - Limites -

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Aplicações das derivadas ao estudo do gráfico de funções

TOM, SEMITOM, SUSTENIDO, BEMOL.

Simão Melo de Sousa. Computer Science Department University of Beira Interior, Portugal

Teoria da Computação

Transcrição:

Teoria da Computação Máquinas de Turing Simão Melo de Sousa Computer Science Department University of Beira Interior, Portugal

Plano 1 2 O que é uma máquina de Turing? O Processo de Execução 3 Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis 4 Funções Computáveis 5 6 7

Aviso Prévio A redacção dos apontamentos da disciplina documento baseou-se fortemente na bibliografia indicada. Parece-nos então óbvio que a leitura e a aprendizagem directa pelas obras originais é recomendada, e mesmo essencial à compreensão profunda das noções aqui apresentadas; O português não é a ĺıngua materna do autor e o presente documento encontra-se em fase (constante) de elaboração/melhoramento pelo que se agradece e até se incentiva qualquer sugestão ou correcção;

Referencias bibliográficas (Principal) C. H. Papadimitriou, H. R. Lewis. Elements of the Theory of Computation por Prentice Hall, 1997. Tradução brasileira: Elementos de Teoria da Computação, 2a Edição. Bookman, Porto Alegre, 2000. (Introdutório, em francês - embora deva existir algo em inglês algures) P. Wolper. Introduction à la calculabilité, 3 a edição, Dunod, 2006. (introdutório e de leitura agradável) P. Linz. An introduction to formal languages and automata. Jones and Bartlett Publisher, 2006. (Uma obra de referência e muito completo... um must ) John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation (3nd Edition). Addison Wesley, 2006 (existe em português do Brasil). (Abordagem abrangente) M. Sipser. Introducton to the Theory of Computation. PWS Publishing, 2006.

Plano 1 2 3 4 5 6 7

Os autómatos com pilha tem acesso a uma memória potencialmente infinita, mas mesmo assim não conseguem reconhecer linguagens como a n b n c n. Mas parece simples reconhecer esta linguagem por um processo baseado em estados : let rec recognize l n m estado = match l with [] -> estado = 3 && n = 0 a :: li -> if estado = 1 then (recognize li (n+1) m 1) else false b :: li -> if estado = 1 then (recognize li n 1 2) else if estado = 2 then (recognize li n (m+1) 2) else false c :: li -> if estado = 2 then if m=n then (recognize li (n-1) m 3) else false else S. Melo if destado Sousa = Teoria 3 then da Computação (recognize li (n-1) m 3)

Limites dos autómatos com pilha: gestão da memória. A limitação vem da disciplina LIFO da memória: uma utilização possível por cada memorização. O exemplo anterior reutiliza (duas vezes) o valor de a s que foram lidos. Um para contabilizar os b s e outras para os c s. As máquinas de Turing permitam libertar-se deste inconveniente.

Plano O que é uma máquina de Turing? O Processo de Execução 1 2 O que é uma máquina de Turing? O Processo de Execução 3 4 5 6 7

O que é uma máquina de Turing? O Processo de Execução Vamos aqui nos limitar às máquinas de Turing deterministas (veremos mais adiante que isso não é uma limitação). Uma máquina de Turing é uma maquina de estados finitos (alguns deles iniciais ou finais), a semelhança dos autómatos que vimos até aqui. A diferença reside no seguinte: a fita de entrada é também de saída. Ou seja dá para ler e para escrever. fita = memória. Tem um início (a esquerda), mas não tem fim (infinita a direita). Com tal, equipamos a máquina com a possibilidade de se deslocar na fita (para a direita ou para a esquerda, quando possível).

Numa imagem O que é uma máquina de Turing? O Processo de Execução

As transições O que é uma máquina de Turing? O Processo de Execução uma transição entre estados (q 1, a, b, d, q 2) denota a seguinte situação: Se a máquina se encontra no estado q 1 e que a cabeça de leitura aponta para um a então escrever b (a é assim substituido por b na fita), deslocar a cabeça para a célula seguinte (se d é a célula seguinte é a célula a esquerda, se d é a célula seguinte é a célula a direita) e finalmente entrar no estado q 2.

Algumas considerações iniciais O que é uma máquina de Turing? O Processo de Execução Vamos diferenciar o alfabeto de entrada Σ do alfabeto da fita Γ (de facto Σ Γ): os elementos de Σ forma a palavra (finita) que inicialmente está no inicio da fita. Uma máquina não pode aceder a posições que estão a esquerda do início da fita. Como a fita é infinita (a direita) as restante posições contém um símbolo branco notado. A máquina tem a possibilidade de escrever na fita os símbolos de Σ mais, eventualmente, outros. Estes símbolos formam Γ. Neste sentido uma máquina de Turing é uma máquina com output (a palavra contida na fita).

Algumas considerações iniciais O que é uma máquina de Turing? O Processo de Execução Dado um momento da execução da máquina só uma quantidade finita de células da fita foram exploradas. Ou seja, há sempre uma quantidade finita de fita ocupada por letras. Dada uma posição da cabeça de leitura na fita há uma quantidade finita de letras a esquerda e uma quantidade finita de letras a direita até uma posição em que a direita só há símbolos. As deslocações na fita são representadas pelos símbolos (L, R) ou (, ) Vamos considerar que não há transições que saem dos estados finais. Embora possa parecer uma restrição, é possível transformar qualquer máquina de Turing em máquinas de Turing com esta propriedade. Uma palavra é aceite quando a execução levar o seu reconhecimento pára um estado final.

Formal O que é uma máquina de Turing? O Processo de Execução Definition (Máquina de Turing) Uma máquina de Turing é um 7-tuplo (Q, Γ, Σ, δ, s, B, F ) onde Q é um conjunto de finito de estados Γ é o alfabeto de fita Σ ( Γ) é o alfabeto de entrada (alfabeto utilizada para as palavras inicialmente colocados na fita) s Q é o estado inicial F ( Q) é o conjunto dos estado finais B Γ Σ é o símbolo branco (notação habitual: ) δ : (Q Γ) (Q Γ {L, R}) é a função de de transição.

Configurações O que é uma máquina de Turing? O Processo de Execução Para formalizar a noção de execução precisamos, como já é habitual, de precisar o conceito de configuração. lembrete: configuração = estado preciso e completo da máquina de Turing. Aqui: precisamos de saber o estado da fita, o estado em que a máquina se encontra, a posição da cabeça de leitura/escrita. Como vimos nos acetatos anteriores num determinado momento temos sempre uma situação semelhante ao gráfico seguinte.

Configurações O que é uma máquina de Turing? O Processo de Execução

Configurações O que é uma máquina de Turing? O Processo de Execução Definition (Configuração duma máquina de Turing) Uma configuração é um elemento do conjunto Q Γ ({ɛ} Γ.(Γ {B}))

Derivações O que é uma máquina de Turing? O Processo de Execução Definition (Derivação num passo e Derivação generalizada) Seja C = (q, α 1, α 2) uma configuração duma máquina M. Vamos assumir que temos sempre a situação α 2 = bα 2. No caso de α 2 = ɛ, tomamos b =. As configurações deriváveis de C são definidas da seguinte forma: Se δ(q, b) = (q, b, R) então temos (q, α 1, bα 2 ) M (q, α 1 b, α 2 ) Se δ(q, b) = (q, b, L) (neste caso α 1 ɛ, ou seja α 1 = α 1 a) então temos (q, α 1 a, bα 2 ) M (q, α 1, ab α 2 ). Uma configuração C é derivável em vários passos de C pela máquina M (notação C M C ) se existe um k N, k 0 e configurações intermédias C 0, C 1, C 2,... C k tais que C = C 0 C = C k C i C i+1 para 0 i < k

Palavras e Linguagens Aceites O que é uma máquina de Turing? O Processo de Execução Uma palavra w é aceite por uma máquina de Turing M se a execução por M começando com fita inicializada com esta palavra e partindo do estado inicial de M termina num estado final. Definition (Linguagem aceite por uma máquina M) A linguagem L(M) aceite por uma máquina de Turing M é o conjunto das palavras das palavras aceites w, ou seja, tais que (s, ɛ, w) M (p, α 1, α 2) (com p F )

Exemplos uma máquina com M = (Q, Γ, Σ, δ, s, B, F ) Q = {q 0, q 1, q 2, q 3, q 4 } Γ = {a, b, X, Y, } Σ = {a, b} s = q 0 B = F = {q 4 } δ é definido da seguinte forma: o seu grafo O que é uma máquina de Turing? O Processo de Execução a b X Y q 0 (q 1, X, R) (q 3, Y, R) q 1 (q 1, a, R) (q 2, Y, L) (q 1, Y, R) q 2 (q 2, a, L) (q 0, X, R) (q 2, Y, L) q 3 (q 3, Y, R) (q 4,, R) q 4

Exemplos O que é uma máquina de Turing? O Processo de Execução uma máquina com Q = {q 0, q 1, q 2, q 3, q 4 } Γ = {a, b, X, Y, } Σ = {a, b} s = q 0 B = F = {q 4 } M = (Q, Γ, Σ, δ, s, B, F ) δ é definido da seguinte forma a b X Y q 0 (q 1, X, R) (q 3, Y, R) q 1 (q 1, a, R) (q 2, Y, L) (q 1, Y, R) q 2 (q 2, a, L) (q 0, X, R) (q 2, Y, L) q 3 (q 3, Y, R) (q 4,, R) q 4 a sua execução (q 0, ɛ, aaabbb) (q 1, X, aabbb) (q 1, Xa, abbb) (q 1, Xaa, bbb) (q 2, Xa, aybb) (q 2, X, aaybb) (q 2, ɛ, XaaYbb) (q 0, X, aaybb) (q 1, XX, aybb). (q 1, XXXYY, b) (q 2, XXXY, YY ) (q 2, XXX, YYY ) (q 2, XX, XYYY ) (q 0, XXX, YYY ) (q 3, XXXY, YY ) (q 3, XXXYY, Y ) (q 3, XXXYYY, ɛ) (q 4, XXXYYY, ɛ)

Plano Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis 1 2 3 Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis 4 5 6

Considerações sobre palavras aceites Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis Uma máquina de Turing pode entrar em ciclo Basta considerar uma máquina com dois estados e as transições a,a,r,,r b,b,r seguintes: q 0 q 0, q 0 q 0 e q 0 q 1 onde q 1 é final. De facto vários casos podem ocorrer. Consideramos assim a execução a partir da configuração (s, ɛ, w). Assim, a execução gera uma sequência de configurações tal que: Esta termina numa configuração que contém um estado final. Neste caso a palavra w é aceite. Esta termina numa configuração a partir da qual não é possível continuar a derivar porque a função de transição não está definida para esta configuração ou porque a função de transição define uma deslocação para a esquerda e a cabeça de leitura se encontra na posição inicial. Esta nunca passa por um estado final e é infinita.

Considerações sobre palavras aceites Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis Nos dois primeiros casos temos, a máquina nos permite determinar com exactidão se uma palavra é ou não aceite. no último caso não se pode decidir com toda a certeza. Não é porque a máquina ainda não conseguiu chegar a um estado final num tempo considerado razoável que isto não irá acontecer mais além. Assim as máquinas de Turing parecem ir além do que se entende ser uma algoritmo (ver aula de introdução) Vamos assim revisitar e precisar a noção de execução e introduzir o conceito de linguagem decidia (diferente da noção de linguagem aceite).

Execução Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis Definition (Execução) A execução duma máquina de Turing M numa palavra w é a sequência de configuração (s, ɛ, w) M C 1 M C 2 M... M C k M... máxima, isto é: é infinita, ou termina numa configuração em que o estado é final ou termina numa configuração em que o estado não é final.

Máquinas de Turing sem execuções infinitas (que decidam linguagens) são, finalmente, a nossa formalização de procedimento efectivo! (voltaremos já a seguir sobre S. Melo a de fundamentação Sousa Teoria da desta Computação afirmação) Linguagem aceite, linguagem decidida Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis Estamos assim em medida de revisitar e refinar a noção de linguagem associada a uma máquina de Turing. Definition (linguagem aceite) A linguagem L(M) aceite por uma máquina de Turing M é o conjunto das palavras das palavras aceites w, ou seja, tais que (s, ɛ, w) M (p, α 1, α 2) (com p F ) Definition (linguagem decidida) Uma linguagem L é decidida por uma máquina de Turing M se M aceita L M não tem execução infinitas

Linguagem Decidida e Autómatos Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis DFA: linguagem aceite=linguagem decidida NDFA: qualquer linguagem aceite pode ser aceite por um DFA. Autómatos pushdown: os PDAs podem ter execuções infinitas, mas o algoritmo CYK demonstra que é possível decidir linguagens livre de contexto (com um mecanismo mais expressivo que os PDAs: as MTs). PDA deterministas (DPDA): não apresentam execuções infinitas, ou seja, linguagem aceite = linguagem decidida.

Linguagem Aceite e Linguagem Decidida Linguagem Decidida e Autómatos Linguagens Recursivas e Linguagens Recursivamente Numeráveis Linguagens Recursivas e Linguagens Recursivamente Numeráveis Definition (Linguagens Recursivas e Linguagens Recursivamente Numeráveis) Uma linguagem é dita recursiva se é decidida por uma máquina de Turing Uma linguagem é dita recursivamente enumerável se é aceite por uma máquina de Turing

Plano Funções Computáveis 1 2 3 4 Funções Computáveis 5 6 7

Funções Computáveis Uma equação para a posteridade: MT=Algoritmo Retomemos agora e finalmente a problemática fundamental a teoria da computação: como podemos definir formalmente a noção de algoritmo? Por uma máquina de Turing. (ver aula de apresentação para uma discussão completa (mas informal) sobre esta problemática)

Funções Computáveis As linguagens reconhecidas por um procedimento efectivo são exactamente as linguagens decididas por uma máquina de Turing. ou ainda: As linguagens reconhecidas por um algoritmo são exactamente as linguagens decididas por X (em que X denota qualquer modelo da computação equivalente às máquinas de Turing, como por exemplo funções recursivas totais de Kleene, os λ-termos fortemente nomalizáveis do λ-calculo etc...)

Funções Computáveis

Plano 1 2 3 4 5 6 7

Plano 1 2 3 4 5 6 7

Plano 1 2 3 4 5 6 7