Computabilidade e Complexidade (ENG10014)

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

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

Teoria da Computação. Computabilidade e complexidade computacional

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

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

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

Problemas Computáveis

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

Universidade Federal de Alfenas

Aula 10: Decidibilidade

Computabilidade e Complexidade (ENG10014)

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

Faculdade de Computação

Linguagens Formais e Autômatos Decidibilidade

Universidade Federal de Alfenas

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

Teoria da Computação. Computabilidade

Teoria da Computação

Aula 10: Decidibilidade

Máquinas de Turing - Computabilidade

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

COMPUTABILIDADE 2. Indecidibilidade

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

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

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

Modelos Universais de Computação

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

SCC-5832 Teoria da Computação

Teoria da Computação. Aula 01

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

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

Primeira Lista de Exercícios 2005/1... Exercício 1 Desenhe Diagrama de Estados para Máquinas que Decidem as Linguagens:

SCC Teoria da Computação e Linguagens Formais

Teoria da Computação 19 de Abril de 2017 Teste 1A Duração: 1h30

14.1 Linguagens decidíveis ou Turing reconhecíveis

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

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

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

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

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

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

Máquinas de Turing 3

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Limites da Computação Algorítmica: Problemas Indecidíveis

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

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

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

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

Análise e Projeto de Algoritmos

Que tipo de problemas são insolúveis por computador? Todos eles são teóricos?? A resposta é não!

Técnicas de Extensão de MT

Que tipo de problemas são insolúveis por computador? Todos eles são teóricos?? A resposta é não!

Teoria da Computação. Computabilidade e complexidade computacional

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

Universidade Federal de Alfenas

Linguagens Formais e Autômatos P. Blauth Menezes

Capítulo 2: Procedimentos e algoritmos

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

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

Que tipo de problemas são insolúveis por computador? Todos eles são teóricos?? A resposta é não!

Linguagens recursivamente enumeráveis

Noção de Computabilidade

UNIDADE UNIVERSITÁRIA:

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

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

Máquina de Turing. Controle finito

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

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

A Teoria Matemática que serviu como Base para Turing.

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

Teoria da Computação 27 de Maio de 2015 Teste 2A Duração: 1h30

Turing e Complexidade

1. Uma linguagem de uma máquina de Turing

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

S. C. Coutinho. Máquina de Turing Universal p. 1/22

Teoria da Computação (BBC244)

Máquina de Turing. Controle finito

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

a n Sistemas de Estados Finitos AF Determinísticos

Linguaguens recursivamente enumeráveis

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Seção 5.1 Problemas indecidíveis. Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima

INTRATABILIDADE e NP-COMPLETUDE

6. Decidibilidade, indecidibilidade e decidibilidade parcial

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

PCC104 - Projeto e Análise de Algoritmos

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

Autômatos Finitos e Não-determinismo

Teoria da Computação

a * Lema do Bombeamento Linguagens regulares e não-regulares

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação 12 de Abril de 2018 Teste 1A Duração: 1h30

Projeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão

Linguagens Formais e Problemas de Decisão

Lema do Bombeamento para Linguagens Livres do Contexto

Linguagens Formais e Autômatos (LFA)

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

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Terceira Lista de Exercícios 2004/2...

Transcrição:

Sistemas de Informação Computabilidade e Complexidade (ENG10014) Profa. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com

Decidibilidade O estudo da decidibilidade objetiva determinar a solucionabilidade de problemas, ou seja, investigar a existência ou não de algoritmos que solucionem determinada classe de problemas. Definimos a noção de algoritmo em termos de MT por meio da tese de Church-Turing. Essa tese afirma que todo algoritmo pode ser expresso mediante uma MT. Vamos estudar alguns problemas solúveis (decidíveis) e não solúveis (indecidíveis).

Decidibilidade Infelizmente, muitos problemas interessantes e importantes para a CC são não solucionáveis. Exemplos: Detector universal de loops (problema da parada): Dados um programa e uma entrada qualquer, não existe algoritmo genérico capaz de verificar se o programa vai parar ou não para a entrada. Equivalência de compiladores: Não existe algoritmo genérico que sempre pare capaz de comparar quaisquer dois compiladores de LLC, e verificar se são equivalentes.

Decidibilidade Porque estudar a insolubilidade? Para saber que o problema terá que ser simplificado ou alterado antes que possa se encontrar uma solução algorítmica. Para evitar a pesquisa de soluções inexistentes. Para conhecer as capacidades e limitações dos computadores. Para verificar que outros problemas também são insolúveis(utilizando redução).

A classe das Lrec está ligada ao conceito de decidibilidade. Um problema de decisão P é decidível se, e somente se, certa linguagem associada a P for recursiva Para problemas de decisão temos que: Se um PD tem solução, então existe uma MT que o decide. Decidibilidade A classe das linguagens recursivas está ligada ao conceito de decidibilidade. Um problema de decisão P é decidível se, e somente se, certa linguagem associada a P for recursiva. Logo, determinar se certo problema é decidível é basicamente, estabelecer se determinada linguagem é recursiva. Se um PD tem solução, então existe uma MT que o decide.

Linguagens decidíveis 1) Problema da aceitação: testar se um AFD específico aceita uma dada cadeia. Linguagem que traduz esse problema: A AFD = { <B, w> B é um AFD que aceita a cadeia de entrada w} Essa linguagem contém as codificações de todos os AFDs juntamente com cadeias que os AFDs aceitam. O problema de se testar se um AFD B aceita uma cadeia w é o mesmo que o problema de se testar se <B, w> A AFD.

Linguagens decidíveis Mostrar que essa linguagem é decidível é o mesmo que mostrar que o PD é decidível. A AFD é uma linguagem decidível. Prova: apresentamos uma MT M que decide A AFD. M = Sobre a entrada <B, w>, onde B é um AFD e w uma cadeia: 1. Simule B sobre a entrada w. 2. Se a simulação termina em um estado de aceitação, aceite. Se ela termina em um estado de não-aceitação, rejeite.

Linguagens decidíveis Representação de MT para PD: <B,w> M w L(B) w L(B) SIM NÃO

Linguagens decidíveis 2) Problema da aceitação: testar se um AFN específico aceita uma dada cadeia. Linguagem que traduz esse problema: A AFN = { <B, w> B é um AFN que aceita a cadeia de entrada w} A AFN é uma linguagem decidível. Prova: Apresentamos uma MT N que decide A AFN. Poderíamos projetar N para operar como M, simulando um AFN em vez de um AFD. Ao invés disso, fazemos N usar M como uma sub-rotina.

Linguagens decidíveis Como M foi projetada para funcionar com AFDs, N primeiro converte o AFN que ela recebe como entrada para um AFD antes de passá-lo para M. N = Sobre a entrada <B, w>, onde B é um AFN e w uma cadeia: 1. Converta o AFN B em um AFD equivalente C, usando o procedimento estudado em sala. 2. Rode a MT M (apresentada anteriormente) sobre a entrada <C, w>. 3. Se M aceita, aceite. Caso contrário, rejeite.

Problema da parada Um dos mais importantes problemas não solucionáveis é conhecido como problema da parada. Ele pode ser usado como base na demonstração de que outros problemas também são não solucionáveis. Problema da parada: o problema de se determinar se uma MT aceita uma cadeia de entrada. A MT = {<M, w> M é uma MT e aceita a cadeia w} A MT é indecidível.

Problema da parada A MT é indecidível, mas é Turing-reconhecível. A MT U a seguir reconhece A MT. U = Sobre a entrada <M, w>, onde M é uma MT e w uma cadeia: 1. Simule M sobre a entrada w. 2. Se M em algum momento entra no seu estado de aceitação, aceite; se M em algum momento entra em seu estado de rejeição, rejeite. Essa máquina entra em loop sobre a entrada <M, w> se M entra em loop sobre w e é por isso que essa máquina não decide A MT.

Problema da parada Prova: O problema da parada é indecidível.supomos que A MT é decidível e encontramos uma contradição. Se A MT é decidível então existe H que é um decisor para A MT. Para a entrada <M, w>, H pára e aceita se M aceita w e H pára e rejeita se M falha em aceitar w. Aceite, se M aceita w H(<M,w>) = Rejeite, se M não aceita w (rejeita ou entra em loop)

Problema da parada Construímos uma nova MT D com H como uma subrotina. D chama H para determinar o que M faz quando a entrada para M é sua própria descrição <M>. Uma vez que D tenha determinado essa informação, ela faz o oposto. Ou seja, ela rejeita se M aceita e aceita se M não aceita. O que segue é uma descrição de D: D = Sobre a entrada <M>, onde M é uma MT: 1. Rode H sobre a entrada <M, <M>>. 2. Se H aceita, rejeite e se H rejeita, aceite.

Problema da parada Em resumo, Aceite, se M não aceita <M> D(<M>) = Rejeite, se M aceita <M> O que acontece quando rodamos D sobre <D>? Aceite, se D não aceita <D> D(<D>) = Rejeite, se D aceita <D>

Problema da parada Independentemente do que D faz, ela é forçada a fazer o oposto, o que é obviamente uma contradição. Consequentemente, nem a MT D nem a MT H podem existir. Logo, A MT é indecidivel. Resumindo, H aceita <M, w> exatamente quando M aceita w D rejeita <M> exatamente quando M aceita <M> D rejeita <D> exatamente quando D aceita <D>. Essa é a contradição!

Uma linguagem Turing-irreconhecível Vimos que A MT é indecidível, mas é Turingreconhecível. Algumas linguagens não são nem Turing-reconhecíveis. Teorema: Uma linguagem é decidível se e somente se ela e o seu complemento são Turing-reconhecíveis. ( ) Se uma linguagem A é decidível, ela é Turingreconhecível (pois toda Lrec é LRE), e o complemento de uma Lrec também é uma Lrec.

Uma linguagem Turing-irreconhecível ( ) Se A e A são Turing-reconhecíveis, então existem os reconhecedores M1 e M2 para A e A respectivamente. É possível construir uma MT M que é um decisor para A: M = sobre a entrada w: Rode M1 e M2 sobre a entrada w em paralelo. Se M1 aceita, aceite. Se M2 aceita, rejeite. Rodar as duas máquinas em paralelo significa que M tem duas fitas, uma para simular M1 e a outra para simular M2. Nesse caso, M alternativamente simula um passo de cada máquina, o que continua até que uma delas aceite.

Uma linguagem Turing-irreconhecível M decide A pois toda cadeia ou está em A ou está em A. Consequentemente, ou M1 ou M2 tem que aceitar w. Uma vez que M para sempre que M1 ou M2 aceita, M sempre pára, e portanto, é um decisor. Corolário: A MT não é Turing-reconhecível. Sabemos que A MT é Turing-reconhecível. Se A MT também fosse Turing-reconhecível, A MT seria decidível. Como sabemos que A MT não é decidível, portanto A MT não pode ser Turing-reconhecível.

Redutibilidade O estudo da solucionabilidade de um problema pode ser feito usando o princípio da redução. Esse principio consiste em investigar a solucionabilidade de um problema a partir de outro, cuja classe de solucionabilidade é conhecida. Uma redução é uma maneira de converter um problema em outro. Método principal de provar que problemas são computacionalmente insolúveis.

Redutibilidade A redutibilidade sempre envolve 2 problemas de decisão A e B. Suponha que é possível modificar o problema A de tal forma que ele se porte como um caso do problema B. Nesse caso, dizemos que A é redutível a B e: Se B é decidível então A também é decidível Se A é indecidível então conclui-se que B também é indecidível.

Redutibilidade Problema A Decidível Indecidível Redução de A Problema B

Redução de um problema a outro Um PD A é redutível a um PD B, se existe um algoritmo R que, recebendo x como entrada, produz um resultado y tal que a resposta a A para x é idêntica ou complementar (a resposta complementar a sim é não, e a não é sim) à resposta a B para a entrada y, qualquer que seja a entrada x. Dizemos que o algoritmo R pode ser usado para reduzir o problema A ao problema B.

Redução de um problema a outro Assim, o problema de decisão A pode ser solucionado mediante o algoritmo R e um algoritmo para o PD B. Chamamos R de máquina redutora MT para A x R y MT para B SIM NÃO

Linguagens indecidíveis Mostramos que PD são indecidíveis por contradição: Supomos que o PD é decidível e mostra que um PD indecidível conhecido é redutível a ele. Logo ele não pode ser decidível, pois se fosse o que se reduz a ele também seria (pelo princípio da redução). 1) Real problema da parada: o problema de determinar se uma MT pára (aceitando ou rejeitando) sobre uma dada entrada.

Linguagens indecidíveis PARA MT = {<M,w> M é uma MT e M para sobre a entrada w} é indecidível. Supomos que PARA MT é decidível. Se PARA MT é decidível, então existe uma MT R que a decide. Mostramos que A MT é redutível a PARA MT. Assim, é possível construir uma MT S que decide A MT. Com R, você pode testar se M pára sobre w. Se R indicar que M não pára sobre w, rejeite. Se R indica que M pára sobre w, você pode fazer a simulação sem qualquer perigo de entrar em loop.

Rode a MT R sobre a entrada <M,w>. Se R rejeitar, rejeite. Se R aceitar, simule a máquina M com a entrada w até que ela pare. Se M aceitou, aceite; se M rejeitou, rejeite. Linguagens indecidíveis Prova: Supomos que a MT R decida PARA MT. Construímos a MT S para decidir A MT : S = Sobre a entrada <M, w>, uma codificação de uma MT M e uma cadeia w: 1. Rode a MT R sobre a entrada <M,w>. 2. Se R rejeitar, rejeite. 3. Se R aceitar, simule a máquina M com a entrada w até que ela pare. 4. Se M aceitou, aceite; se M rejeitou, rejeite.

Rode a MT R sobre a entrada <M,w>. Se R rejeitar, rejeite. Se R aceitar, simule a máquina M com a entrada w até que ela pare. Se M aceitou, aceite; se M rejeitou, rejeite. Linguagens indecidíveis Se a MT R existe, podemos decidir A MT ; mas sabemos que A MT é indecidível. Em virtude dessa contradição, podemos concluir que R não existe. Logo, PARA MT é indecidível. 2) Testar vacuidade: determinar se a MT M não aceita nenhuma cadeia. V MT = {<M> M é uma MT e L(M) = } é indecidível.

Rode a MT R sobre a entrada <M,w>. Se R rejeitar, rejeite. Se R aceitar, simule a máquina M com a entrada w até que ela pare. Se M aceitou, aceite; se M rejeitou, rejeite. Linguagens indecidíveis Supomos que V MT é decidível. Assim, existe uma MT R que decide V MT. Mostramos que A MT se reduz a V MT, usando R para construir a MT S que decide A MT. Modificamos <M> para garantir que M rejeite todas as cadeias exceto w, e que sobre a entrada w ela funcione normalmente. Usamos R para determinar se a máquina modificada reconhece a linguagem vazia. A única cadeia que a máquina agora aceita é w, e, portanto, sua linguagem será não vazia se e somente se ela aceita w. Se R aceita quando é alimentada com uma descrição de máquina modificada, sabemos que a máquina modificada não aceita nada e que M não aceita w.

Rode a MT R sobre a entrada <M,w>. Se R rejeitar, rejeite. Se R aceitar, simule a máquina M com a entrada w até que ela pare. Se M aceitou, aceite; se M rejeitou, rejeite. Linguagens indecidíveis Prova: Supomos que a MT R decida V MT e construímos S que decide A MT da seguinte forma. S = Sobre a entrada <M, w>, uma codificação de uma MT e uma cadeia w: 1. Construa a seguinte MT M1. M1 = Sobre a entrada x: Se x w, rejeite. Se x = w, rode M sobre a entrada w e aceite se M aceita. 2. Rode R sobre a entrada <M1>. 3. Se R aceita, rejeite. Se R rejeita, aceite. Se R existisse, S seria um decisor para A MT. Um decisor para A MT não pode existir, portanto sabemos que V MT é indecidível.

Referências Sipser, M.; Introdução à Teoria da Computação. Ed. Thomson, 2007. ISBN: 9878522104994. Diverio, T. A.; Menezes, P. B.. Teoria da Computação: Máquinas Universais e Computabilidade. Porto Alegre: Sagra Luzzato, 2000.