ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:

Documentos relacionados
Universidade Federal de Alfenas

Computabilidade e Complexidade (ENG10014)

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

SCC-5832 Teoria da Computação

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

SCC Teoria da Computação e Linguagens Formais

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

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

Computabilidade e Complexidade (ENG10014)

Universidade Federal de Alfenas

Linguagens Formais e Autômatos Apresentação da Disciplina

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.

I.2 Introdução a Teoria da Computação

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

Máquinas de Turing - Computabilidade

Linguagens Formais e Autômatos Decidibilidade

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Teoria da Computação. Computabilidade e complexidade computacional

Universidade Federal de Alfenas

Noção de Computabilidade

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

Teoria da Computação. Aula 01

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Teoria da Computação. Computabilidade

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Teoria da Computação (BBC244)

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Universidade Federal de Alfenas

Universidade Federal de Uberlândia Mestrado em Ciência da Computação

Capítulo 2: Procedimentos e algoritmos

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Linguagens recursivamente enumeráveis

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

Teoria da Computação. Computabilidade e complexidade computacional

Linguagens Livres do Contexto. Adaptado de H. Brandão

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

Turing e Complexidade

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

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 18. Cap O Problema da Parada

Linguaguens recursivamente enumeráveis e recursivas

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

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

Aula 10: Decidibilidade

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

Problemas Computáveis

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

Linguaguens recursivamente enumeráveis

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

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

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

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Faculdade de Computação

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

Técnicas de Extensão de MT

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Introdução à Teoria da Computação Exercícios

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

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

O que é a Teoria em Ciência da Computação. Introdução à Ciência da Computação Mário S. Alvim

PCS3616. Programação de Sistemas (Sistemas de Programação) Máquinas de Turing

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

Linguagens Formais e Autômatos P. Blauth Menezes

PCC104 - Projeto e Análise de Algoritmos

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Máquinas de Turing 3

Linguagens Formais e Autômatos (LFA)

MT como calculadoras de funções parciais

Modelos Universais de Computação

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

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

COMPUTABILIDADE 2. Indecidibilidade

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

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

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Autómatos determísticos de k-pilhas

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

Linguagens Formais e Autômatos

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

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

Os Limites da Computabilidade. Dois Conceitos Distintos. Tese de Church Turing. O Que É Computável? O Que É Possível De Ser Computado?

Resolução Exe 2.12 Monolítico Recursivo

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

1. Uma linguagem de uma máquina de Turing

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Teoria da Computação Aula 8 Noções de Complexidade

Aula 10: Decidibilidade

PCS3616. Programação de Sistemas (Sistemas de Programação) Visão Geral

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

Linguagem Universal. assim como a entrada ser processada por a. (b) A segunda fita de representa a fita de

Transcrição:

ECO026 TEORIA DA COMPUTAÇÃO Prof: Rafael Santos Email: rafafic@gmail.com Site: http://sites.google.com/site/rafafic

Máquinas de Turing Uma linguagem Turing-reconhecível (Linguagem recursivamente enumeravel), se alguma máquina de Turing a reconhece. Três resultados podem ser obtidos por uma máquina de turing. Aceitar, rejeitar ou entrar em loop. Uma máquina que nunca entra em loop é chamada decidível. Uma linguagem Turing-decidível (Linguagens Recursivas) ou simplesmente decidível se alguma máquina de Turing a decide.

Máquinas de Turing Relacionamento entre classes de linguagens Turing-reconhecível Decidível Livre-do-contexto Regular

Linguagens

Máquinas de Turing Algumas Variações de MTs Máquina com cabeçote imóvel Máquina com múltiplas trilhas Máquina com fita ilimitada em ambas as direções Máquina com múltiplas fitas Máquina não determinística O modelo original e suas variantes razoáveis todos têm o mesmo poder eles reconhecem a mesma classe de linguagens.

Questões pertinentes à Teoria da Computação 1. Quais as capacidades e limitações fundamentais dos computadores? 2. O que pode e o que não pode ser resolvido pelos computadores? 3. O que faz alguns problemas serem computacionalmente mais difíceis que outros?

Definição de Algoritmo Um algoritmo é uma coleção de instruções simples para realizar alguma tarefa em tempo finito. Procedimentos ou receitas. Algoritmos desempenham um importante papel na matemática. Algumas descrições de algoritmos na matemática antiga contemplam: Como encontrar números primos Máximo divisor comum e outros.

Problema de Hilbert Em 1900, o matemático David Hilbert definiu 23 problemas matemáticos e que seriam desafios para o próximo século. O décimo problema dizia respeito a algoritmos. O décimo problema era conceber um processo com o qual ela possa ser determinada por um número finito de operações (algoritmo), que testasse se um polinômio tinha uma raiz inteira. Ele aparentemente assumiu que um tal algoritmo tinha que existir e que alguém só precisava encontrar

Tese de Church-Turing A prova do problema de Hilbert teve que esperar pela definição clara do que é um algoritmo. A definição veio nos artigos de 1936 de Alonzo Church e Alan Turing. Church usou um sistema notacional denominado λ- cálculo para definir algoritmos. Turing o fez com suas maquinas. As duas definições foram demonstradas equivalentes. Essa conexão entre a noção informal de algoritmo e a definição precisa veio ser chamada de tese de Church-Turing.

Tese de Church-Turing Noção intuitiva de algoritmos é igual a Algoritmos de máquina de Turing Em 1970, Yuri Matijasevič, mostrou que nenhum algoritmo existe para se testar se um polinômio tem raízes inteiras, respondendo ao 10 problema de Hilbert. A abordagem operacional de Turing permitiu a Von Neuman elaborar o modelo para a construção de máquinas digitais.

Computação efetiva Computação efetiva tem como características: a possibilidade de execução mecânica; produção da mesma saída para as mesmas entradas; execução em tempo finito; etc. Formalizando computação efetiva, é possível mostrar que: um problema é computável (ou decidível, se for Problema de Decisão); um problema é não computável (ou indecidível, se for Problema de Decisão)

Computação efetiva Formalismos igualmente expressivos: máquinas de Turing; sistemas de Post; funções µ-recursivas; λ-cálculo; máquinas abstratas associadas a linguagens de programação,como Java, C, Pascal. Tese de Church-Turing Se uma função é efetivamente computável, então ela é computável por meio de uma máquina de Turing. (Ou: todo algoritmo pode ser expresso mediante uma MT.) Como os formalismos são equivalentes, da tese de Church- Turing segue-se que: se uma função é efetivamente computável, então ela é computável por meio de um programa escrito na linguagem C, etc...

Decidibilidade Vamos investigar questões de computabilidade por meio de situações nas quais o resultado de uma computação é sim ou não. Apesar do poder computacional de uma Máquina de Turing (MT) ser maior do que qualquer computador real, existem problemas que não são Turing Computáveis. Logo,de acordo com a tese de Church-Turing, tais problemas não são solúveis por meio de um algoritmo. Quais são os limites dessa computabilidade? Um caminho seria explorar os limites onde certos problemas podem ser resolvidos algoritmicamente e outros não podem.

Decidibilidade Por que estudar a insolubilidade? A demonstração de que um problema é insolúvel apesar de parecer inútil, principalmente porque em princípio se deseja resolvê-lo, tem duas motivações: 1. A primeira, saber que um problema é insolúvel algoritmicamente é útil pois assim se perceberá que este problema deverá ser alterado ou simplificado para que se encontre uma solução algorítmica. Como qualquer ferramenta, os computadores têm capacidades e limitações que devemos considerar para usá-los eficientemente; 2. A segunda é cultural, mesmo lidando com problemas sabidamente solúveis, uma ideia do insolúvel pode estimular a imaginação e ajudar a adquirir uma nova perspectiva em Computação.

Decidibilidade Problemas de Decisão Estratégia estudar alguns modelos computacionais conhecidos, e ver seus limites computacionais. Por onde começar? Por modelos conhecidos, que em tese resolvem todos problemas computacionais complexos conhecidos.

Decidibilidade Denominamos problemas de decisão a um problema caracterizado por uma classe de perguntas, cuja resposta deve ser sim ou não, exemplos: 1. Dados um Autômato Finito Determinístico M e uma palavra w, determinar se M reconhece w; 2. Dada uma palavra w, determinar se w pode ser gerada por uma Gramática Livre de Contexto; 3. Dados um polinômio com coeficientes inteiros, determinar se ele possui raízes inteiras; 4. Dada uma MT M e uma palavra w, determinar se M pára com a entrada w;

Decidibilidade Relembrando Dizemos que um problema de decisão é computável, ou é decidível, se existe um algoritmo para a solução desse problema. Se tivermos uma MT que para sob quaisquer entradas w, pertencentes ou não à linguagem, temos nessas linguagens a classe das Linguagens Recursivas ou Turingdecidível. O problema é decidível se há um modelo computacional provado de que sempre vamos obter um sim ou um não como saída.

Decidibilidade Problemas Decidíveis (Linguagens Regulares) Aceitação de um AFD descrito pela linguagem: A AFD = { B, w B é um AFD que reconhece a cadeia w } Teorema: A AFD é decidível Prova: devemos mostrar que uma MT M D decide A AFD. M D = entrada: B,w onde B é um AFD e w é uma cadeia 1. simula B com a entrada w; 2. se a simulação termina em um estado final aceita (ou reconhece) w, senão rejeita.

Decidibilidade Problemas Decidíveis (Linguagens Regulares) Aceitação de um AFN descrito pela linguagem: A AFN = { B, w B é um AFN que reconhece a cadeia w } Teorema: A AFN é uma linguagem decidível Prova: podemos projetar uma MT M N para operar como a MT M D do primeiro exemplo, simulando um AFN ao invés de um AFD. Em particular, teremos M N usando M D como uma sub-rotina M N primeiro converte o AFN que recebe em um AFD antes de seguir para a M D M N = entrada: B,w onde B é um AFN e w é uma cadeia 1. converta B em um AFD equivalente D 2. execute MD para a entrada D,w 3. se MD aceita a entrada, MN aceita, caso contrário rejeita. Executar MD no passo 2 significa incorporar MD ao projeto de MN como numa sub-função.

Decidibilidade Problemas Decidíveis (Linguagens Regulares) Testar a vacuidade para a linguagem de um autômato finito. Seja a linguagem: E AFD = { A A é um AFD e L(A) = } Teorema: E AFD é uma linguagem decidível. Prova: um AFD aceita alguma cadeia se e somente se é possível alcançar algum estado final a partir do estado inicial seguindo os arcos. Para testar se esta condição é satisfeita, podemos criar uma máquina de Turing M VAFD que usa um algoritmo que marca os estados. M VAFD = entrada: A, onde A é um AFD 1. marque o estado inicial de A. 2. repita 3. até que não se marque mais estados 3. marque todos os estados que tenham um arco vindo de um estado marcado. 4. se nenhum estado final estiver marcado, M VAFD aceita; caso contrário rejeita.

Decidibilidade Problemas Decidíveis (Linguagens Livres do Contexto) Testar se uma dada Gramática Livre de Contexto gera uma cadeia w.seja a linguagem: A GLC = { G, w G é uma GLC que gera a cadeia w } Teorema: A GLC é uma linguagem decidível. Idéia da prova: para a GLC G e a cadeia w, queremos testar se G gera w. Uma idéia seria usar G para testar todas as derivações para verificar se há uma derivação para w. Essa idéia não funciona, pois se podem testar infinitas derivações. Se G não gera w, o algoritmo nunca pára, o que nos daria uma máquina de Turing que seria apenas um reconhecedor (que em princípio, tem sua parada garantida apenas nas entradas w pertencentes à linguagem da máquina).

Decidibilidade Problemas Decidíveis (Linguagens Livres do Contexto) Continuação Para obter uma máquina de Turing M GLC que decide A GLC, devemos garantir que M GLC testa apenas um número finito de derivações de G. Se G está na forma normal de Chomsky, qualquer derivação de w, tal que w = n, tem 2n-1 passos. Nesse caso, verificando apenas as derivações com 2n- 1 passos para determinar se G gera w seria suficiente. Se G não está na forma normal de Chomsky, podemos converter G usando o procedimento adequado que foi estudado com as Gramáticas e Linguagens Livres de Contexto.

Decidibilidade Problemas Decidíveis (Linguagens Livres do Contexto) Continuação Por exemplo: Na gramática G ex com produções: S AB A AA a B BB b A geração da palavra w = aabb, que tem comprimento n = w = 4, temos 2*4 1 = 7 derivações: S AB AAB AABB aabb aabb aabb aabb cuja árvore é dada por: Em 7 passos pode-se verificar se w = aabb, com w = 4, foi gerada pela GLC G ex.

Decidibilidade Problemas Decidíveis (Linguagens Livres do Contexto) Testar se uma dada Gramática Livre de Contexto gera uma cadeia w.seja a linguagem: A GLC = { G, w G é uma GLC que gera a cadeia w } Prova: a máquina de Turing M GLC para A GLC M GLC = entrada: G, w, onde G é uma GLC e w uma cadeia: 1. converta G em uma gramática na forma normal de Chomsky. 2. liste todas as derivações com 2n-1 passos, onde n é o comprimento de w. 3. se alguma destas derivações gera w, M GLC aceita; caso contrário rejeita.

Bibliografia utilizada nos slides HOPCROFT, John E.; ULLMAN, Jeffrey D.; MOTWANI, Rajeev. Introdução à teoria de autômatos, linguagens e computação. 2 ed. 9 reimpr. Rio de Janeiro: Elsevier, 2002. 560 p. ISBN 8535210725. SIPSER, Michael. Introdução à teoria da computação. 2 ed. São Paulo: Thomson Learning, 2007. xxi, 459 p. ISBN 8522104999. VIEIRA, Newton José. Introdução aos Fundamentos da Computação: Linguagens e Máquinas. São Paulo: Pioneira Thomson Learning, 2006.