Decidibilidade e Indecidibilidade

Slides:



Advertisements
Apresentações semelhantes
Linguagens Livre-de-contexto
Advertisements

FAPE - Curso de Ciência da Computação
Variantes de Máquina de Turing
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Software Básico Silvio Fernandes
Ling. Formais e Autômatos Autômatos finitos
Máquinas de Turing Teoria da Computação.
Mestrado em Ciência da Computação Profa. Sandra de Amo
Envolvendo Autômatos e Linguagens Livres do Contexto
Complexidade de Linguagens Influência do Modelo de Computação
Teorema da Recursão Teoria da Computação
Resolução.
Linguagens Não Decidíveis
Problemas Algoritmicos
esquerda p/ direita,read only
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode.
Identificando Linguagens Não Regulares
Máquina de Turing e Computabilidade
Construção de Compiladores
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Erick Vagner Cabral Igor Lucena Vitor Baptista
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
4 - DECIDIBILIDADE Universidade Federal da Paraíba
SIPSER – Capítulo 3: A tese de Church-Turing
Informática Teórica Engenharia da Computação
Ling. Formais e Autômatos AFN-ε
Conceitos básicos em grafos
Inteligência Artificial
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Máquina de Turing Universal
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Introdução a Algoritmos
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
Máquinas de Turing.
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Computabilidade e Linguagens Formais
MÁQUINAS DE TURING Acadêmicos: Karen Juliani Tosta Tomaz RA – 47566
Informática Teórica Aula 7 Tarcisio Coutinho da Silva
Informática Teórica Aula 8 Por: Tarcisio Coutinho da Silva
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Reverso de uma Linguagem Regular
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação. Autômatos Com Pilha São como autômatos finitos não-determinísticos mas com uma pilha. São como autômatos.
Informática Teórica Engenharia da Computação. REDUTIBILIDADE POR MAPEAMENTO Formalizaremos a noção de redutibilidade de uma dentre várias maneiras. Formalizaremos.
Informática Teórica Engenharia da Computação. REDUTIBILIDADE Uma redução é uma maneira de converter um problema em outro Uma redução é uma maneira de.
1 Máquinas de Turing 3 Exercícios Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens.
Transcrição da apresentação:

Decidibilidade e Indecidibilidade Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Decidibilidade e Indecidibilidade Teoria da Computação 2005.1

Problemas Decidíveis ( LR ) Linguagens Regulares Problemas computacionais relacionados a AF’s : saber se um AF aceita uma palavra saber se a linguagem de um AF é vazia saber se dois AF’s são equivalentes etc.

Problemas Decidíveis ( LR ) Representação do problema Podemos formular problemas computacionais em termos de teste de pertinência em uma linguagem. Por exemplo: Saber se um dado AFD B aceita uma dada entrada w pode ser expresso como o problema: Saber se <B,w> é um membro da linguagem: AAFD= {<B,w> : B é um AFD que aceita w}. Mostrar que a linguagem é decidível implica em mostrar que o problema computacional é decidível

Problemas Decidíveis ( LR ) Teorema 18 : AAFD é uma linguagem decidível. Prova: M = “Com entrada <B, w>, onde B é um AFD e w é uma palavra: 1. Simular B para a entrada w. 2. Se a simulação termina num estado final de B, aceitar. Se termina num estado não final, rejeitar.”

Problemas Decidíveis ( LR ) Teorema 19: AAFND = { <B,w> : B é um AFND que aceita w} é decidível.  Prova: N = “Com entrada <B, w>, onde B é um AFND e w uma palavra: 1. Converter B para um AFD equivalente C 2. Executar MT M com entrada <C,w>. 3. Se M aceita a entrada, aceitar. Caso contrário, rejeitar.”

Problemas Decidíveis ( LR ) Teorema 20: EAFD = { <A> : A é um AFD e L(A) = Ø} é decidível. Prova: T = “Com entrada <A>, onde A é um AFD: 1. Marcar o estado inicial de A. 2. Repetir até que nenhum novo estado seja marcado 3. Marcar todo o estado que tenha uma transição chegando de qualquer estado já marcado 4. Se nenhum estado final estiver marcado, aceitar. Caso contrário, rejeitar.”

Problemas Decidíveis ( LR ) Teorema 21: EQAFD = {<A,B> : A e B são AFDs e L(A) = L(B) } é decidível. L(C)= ( L(A)  L(B) )  ( L(A)  L(B) ) Prova: F = “Com entrada <A, B>, onde A e B são AFDs: 1. Construir o AFD C como descrito. 2. Executar MT T com entrada <C>. 3. Se T aceita <C>, aceitar. Caso contrário, rejeitar.”

Problemas Decidíveis ( LLC ) Linguagens Livre-de-contexto AGLC = { <G, w> | G é uma GLC que gera a cadeia w} O problema de saber se um string é um membro de uma linguagem livre de contexto é relacionado com o problema de reconhecimento e compilação de programas em uma linguagem de programação.

Problemas Decidíveis ( LLC ) Teorema 22: AGLC é uma linguagem decidível. Prova: S = “Com entrada <G, w>, onde G é uma GLC e w uma cadeia: Converter G em uma gramática equivalente G’ na Formal Normal de Chomsky. Listar todas as derivações com 2n-1 passos, onde n é o comprimento de w. Se alguma destas derivações gera w, aceitar. Senão, rejeitar.”

Problemas Decidíveis ( LLC ) Teorema 23: EGLC = {<G> | G é uma GLC e L(G) = } é decidível. Prova: R = “Com entrada <G>, onde G é uma GLC: 1. Marcar todos os símbolos terminais de G. 2. Repetir até que nenhuma variável seja marcada: 3. Marcar cada variável A de G aparecendo em uma regra do tipo A  U1U2...Uk onde cada símbolo U1, ... Uk já tenha sido marcado. 4. Se o símbolo inicial não estiver marcado, aceitar. Senão, rejeitar.”

Problemas Decidíveis ( LLC ) Teorema 24: Toda linguagem livre de contexto é decidível. Prova: Seja G uma GLC para a linguagem: MG = “Com entrada w: 1. Executar a MT S com entrada <G, w> 2. Se S aceita, aceitar. Senão, rejeitar.”

Indecidibilidade Teorema 25: AMT não é decidível Prova: Vamos assumir que AMT é decidível e chegar a uma contradição Supor que H é uma MT que decide AMT : aceite se M aceita w rejeite se M não aceita w H(<M, w>) =

Indecidibilidade Vamos construir uma outra MT D que usa H da seguinte forma : D recebe como entrada uma MT M e chama H para determinar o que M faz quando tem como entrada sua própria descrição <M>. Uma vez D tenha determinado isso, ela faz o oposto: ela rejeita se M aceita e aceita se M rejeita.

Indecidibilidade D = “com entrada<M>, onde M é uma MT: 1. Execute H para a entrada <M, <M>>. 2. Retorne o contrário do que H retorna, isto é, se H aceita, rejeitar, se H rejeita, aceitar.” ou seja : aceite se M não aceita <M> rejeite se M aceita <M> D(<M>) =

Indecidibilidade O que acontece quando executamos D com sua própria descrição <D> como entrada ? aceite se D não aceita <D> rejeite se D aceita <D> D(<D>) = CONTRADIÇÃO !!!!!!!!!!!!!!!!!!! Portanto, nem MT D nem MT H podem existir. Esse problema é uma versão do Problema da Parada

Decidibilidade Teorema 26: Uma linguagem é decidível se e somente se ela e seu complemento são Turing -reconhecíveis Prova: ) Se A é decidível, podemos ver facilmente que tanto A quanto seu complemento são Turing- reconhecíveis, visto que qualquer linguagem decidível é Turing-reconhecível e o complemento de uma linguagem decidível é também decidível.

Decidibilidade ) Se ambas, A e seu complemento são Turing- reconhecíveis , então sejam M1 e M2 reconhecedores para elas, respectivamente. Então : M = “ com entrada w” 1. Executar simultaneamente M1 e M2 com entrada w. 2. Se M1 aceita, aceitar; se M2 aceita, rejeitar.

Indecidibilidade Corolário: O complemento de AMT não é Turing-reconhecível Prova: AMT é Turing-reconhecível. Se o seu complemento fosse Turing-reconhecível, pelo teorema 26, AMT seria decidível o que contraria o teorema 25.

Redução O problema A é redutível ao problema B implica em que uma solução para B leva a uma solução para A. Em termos da Teoria da Computação: Se A é redutível a B e B é decidível, então A é decidível. Se A é indecidível e redutível a B, então B é indecidível

O Problema da Parada (versão 2) HaltMT = {<M,w> : M é uma MT e M pára para w} Teorema 27: HaltMT é indecidível Prova: Vamos mostrar que AMT é redutível a HaltMT. Vamos assumir que HaltMT é decidível. Então seja R a MT que decide HaltMT. Se R existe, podemos construir uma MT que decide AMT:

O Problema da Parada (versão 2) S =“ com entrada <M,w>, onde M é uma MT e w string: 1. Executar R com entrada <M,w> 2. Se R rejeitar, rejeitar. 3. Se R aceitar, simular M com w até parar. 4. Se M aceitar, aceitar; senão rejeitar “. Se R decide HaltMT então S decide AMT. Como AMT é indecidível, HaltMT também deve ser, ou seja, R não pode existir.

Redução EMT = {<M> : M é uma MT e L(M) = } Teorema 28: EMT é indecidível. Prova: Vamos assumir que EMT é decidível e então mostrar que isso leva a conclusão que AMT é decidível !!!!

Redução Seja R uma MT que decide EMT. Como mostrar que a existência de R leva a existência de S que decide AMT? Idéia para S: 1. Rodar R com entrada <M> e ver se ela é aceita. Se ela aceita, sabemos então que L(M) =Ø e portanto M não aceita w. Mas, se R rejeita<M>, tudo que sabemos é que L(M)  Ø e portanto aceita algum string não necessariamente w.

Redução 2. Em vez de rodar R com <M>, rodar R com uma modificação de M: Modificamos M para garantir que ela rejeita todos os strings exceto w, e com entrada w, ela trabalha normalmente. Então usamos R para testar se a máquina modificada reconhece a linguagem vazia. O único string que a máquina pode aceitar agora é w. Então a linguagem será não nula se e somente se ela aceita w.

Redução M1 = “ com entrada x : ” 1. Se x  w, rejeitar; 2. Se x = w, executar M com entrada w e aceitar se M aceita. S = “ com entrada<M,w>, M MT e w string: 1. Construir M1, a partir de M e de w; 2. Executar R com entrada <M1>; 3. Se R aceita, rejeitar; se R rejeita, aceitar. Se R é um “decider” para EMT ,S seria um “decider” para AMT . Um “decider” de AMT não pode existir, então também não existe um para EMT.

Redução REGULARMT ={<M> : M é MT e L(M) é regular} Teorema 29 REGULARMT é indecidível Prova: Redução de AMT. Vamos assumir que temos uma MT R que decide REGULARMT . Vamos usar R para construir S que que decide AMT. Vamos modificar M de tal forma que a resultante M2 reconheça uma linguagem regular se e somente se aceita w:

Redução ( M2 reconhece a linguagem não-regular { 0n1n: n>0} se M não aceite w e reconhece a linguagem regular Σ* se M aceita w ) S = “ com entrada <M,w>: 1. Construa a seguinte MT M2. M2 = “ com entrada x : 1. Se x tem a forma 0n1n, aceitar. 2. Se x não tem essa forma, rodar M com entrada w e aceitar se M aceita w.” 2. Rodar R com entrada <M2> 3. Se R aceita, aceitar. Se R rejeita, rejeitar.”

Redução LIVRE-DE-CONTEXTOMT = { <M> : M é MT e L(M) é livre de contexto} DECIDÍVELMT ={<M> : M é MT e L(M) é decidível} FINITOMT ={<M> : M é MT e L(M) é finito} Teorema 30: LIVRE-DE-CONTEXTOMT,DECIDIVELMT e FINITOMT são indecidíveis. Teorema de Rice: Qualquer propriedade de linguagem reconhecidas por Máquinas de Turing é indecidível.

Redução Teorema 31: Prova: EQMT={<M1, M2> :M1 e M2 são MT’s e L(M1) = L(M2) } Teorema 31: EQMT é indecidível. Prova: Redução de EMT. Vamos supor que temos MT R que decide EQMT. Vamos construir S para decidir EMT: S =“com entrada <M>, onde M é uma MT: 1. Rodar R com entrada <M,M1>, onde M1 é uma MT que rejeita todas as entradas. 2. Se R aceita, aceitar. Se R rejeita, rejeitar.” Então, se R decide EQMT, S decide EMT. Como EMT é indecidível, então EQMTtambém é.

Redução Seja M uma MT e w um string de entrada Uma história da computação de aceitação, para M com w é uma sequência de configuração c1, c2, ..., cl, onde: - C1 é a configuração inicial de M com w - Cl é uma configuração de aceitação - cada Ci segue de Ci-1 de acordo com a resposta de M Uma história da computação de rejeição para M com w é definida simultaneamente, exceto que Cl é uma configuração de rejeição.

Redução Histórias da computação são seqüências finitas. Se M não pára para w, não existe história da computação para M com w. Máquinas determinísticas tem no máximo uma história da computação para qualquer dada entrada.

ALBA = { <M,w> : M é LBA e aceita w } Redução ALBA = { <M,w> : M é LBA e aceita w } Teorema 32: ALBA é decidível

Redução Lema 3: Seja M um LBA com q estados e g símbolos no alfabeto da fita. Existem qngn distintas configurações de M para uma fita de comprimento n. Prova: Uma configuração consiste do estado do controle, da posição do cabeçote e do conteúdo da fita: M tem q estados. O comprimento da fita é n, então o cabeçote pode estar em uma das n posições e gn possíveis strings podem estar na fita. Então o número total de diferentes configurações é q.n.gn .

Redução O lema estabelece que um LBA pode ter apenas um número limitado de configuração quando um string de comprimento n é a entrada.

Redução Retornando : ALBA = { <M,w> : M é LBA aceita w } Teorema 33: ALBA é decidível Prova: Quando M computa com w, ela vai de configuração em configuração. Se M repete uma configuração M vai repetir e repetir entrando em loop.

Redução Como para um LBA apenas um número finito de configuração é possível (lema), basta simular M para um número máximo de passos (dado pelo lema) : L = “ com entrada <M,w>, onde M é um LBA : 1. Simular M com entrada w para qngn passos ou até que pare. 2. Se M tem parado, aceitar se ele aceitou e rejeitar se ele rejeitou. Se M não parou, rejeitar . “

Redução ELBA = {<M> : M é um LBA e L(M) = Ø } Teorema 34: Prova: ELBA é indecidível. Prova: Redução de ALBA Para uma MT M e uma entrada w, podemos determinar se M aceita w pela construção de um certo LBA B e pelo teste então se L(B) é vazio

Redução Construimos B para aceitar sua entrada x se x é uma história da computação aceitante para M com w. # C1 C2 C3 Cl ... MT S que decide AMT na suposição de termos a máquina R que decide ELBA. S = “ com entrada <M,w>, onde M é MT e w string: 1. Construir LBA B de M e w como descrito. 2. Rodar R com entrada <B> 3. Se R rejeita, aceitar. Se R aceita, rejeitar.”

Redução por Mapeamento Reduzir um problema A para um problema B usando uma redução por mapeamento significa que existe uma função computável que converte instâncias do problema A para instâncias do problema B. Se temos uma tal conversão (função de ), chamada uma redução, podemos resolver A com um resolvedor (solucionador) para B. Definição formal: A linguagem A é redutível por mapeamento para a linguagem B (A < B) se existe uma função compatível f : Σ*  Σ* onde para todo w, w є A  f(w) є B. A função f é chamada a redução de A para B.

Redução por Mapeamento Teorema 35: Se A < B e B é decidível, então A é decidível. Prova : Seja M uma MT que decide B e f uma redução de A para B. N = Entrada w 1. Computar f(w) 2. Executar M para entrada f(w). Se M aceita, aceitar. Se não, rejeitar.

Redução por Mapeamento Corolário: Se A < B e A é indecidível, então B é indecidível. Teorema 36: Se A < B e B é Turing-reconhecível, então A também é Turing-reconhecível. Corolário: Se A < B e A não é Turing-reconhecível, então B não é Turing-reconhecível.

Auto Referência (Self-Reference) Vamos construir uma MT que ignore sua entrada e imprime (na fita) como saída sua própria descrição (SELF). Lema 4: Existe uma função computável q: Σ*  Σ* tal que para qualquer string w, q(w) é a descrição de uma MT Pw que imprime w e então pára.

Auto Referência (Self-Reference) Prova: A seguinte MT computa q: Q = “ Entrada string w: 1. Construir a seguinte MT Pw: Pw = “Entrada qualquer: 1. Apagar entrada 2. Escrever w na fita 3. Parar” 2. Escrever Pw na fita Se M é uma MT e <M> sua descrição, q(<M>) = <P<M>>

Auto Referência (Self-Reference) Vamos construir SELF como a função de 2 máquinas A e B <SELF> = <AB> A parte A roda primeiro e depois passa o controle para a parte B. O resultado da execução de A é escrever na fita uma descrição de B, e o resultado da execução de B é escrever convenientemente na fita uma descrição de A. O resultado final então é escrever na fita uma descrição de SELF.

Auto Referência (Self-Reference) A = P<B> e B = “ Entrada <M>, onde M é uma MT: 1. computar q(<M>) 2. combinar o resultado com <M> para ter uma descrição de uma MT. 3. escrever uma descrição e parar.” Obs : q(<B>) = <P<B>> = <A>

Teorema da Recursão Teorema 37: Seja T uma MT que computa uma função t: Σ*x Σ* Σ*. Existe uma MT R que computa uma função r: Σ*  Σ* onde para todo w, r(w) = t(<R>,w)

Teorema da Recursão Prova: R = “entrada w” 1. obter <R> 2. Computar t(<R>,w) obter <R>: A = P<BT> B = “Entrada <M> 1. Computar q(<M>) 2. Combinar remetido com <M> 3. Escrever na fita.