5
Grupo: Hugo Imperiano Nóbrega 10711467 Lucas Lucena Gambiarra 10711005 Decidibilidade 01 Questão. Procedimentos. Vamos definir um procedimento como sendo uma sequência finita de instruções, e definir instrução como uma operação claramente descrita, que pode ser executada mecanicamente, em tempo finito. "mecanicamente" quer dizer que não há dúvidas sobre o que deve ser feito; "em tempo finito" quer dizer que não há dúvidas de que a tarefa correspondente à instrução pode, em qualquer caso, ser levada até sua conclusão. Para descrever um procedimento podemos usar uma linguagem natural, uma linguagem de programação, ou a linguagem normalmente usada em matemática. Frequentemente, usamos uma mistura de todas estas. (lf2 2-2). A definição de procedimento, dada acima, exigimos que cada instrução possa ser executada em tempo finito, mas não exigimos nada de semelhante para os procedimentos. Isso significa, em particular, que não poderíamos usar como instrução em algum outro procedimento uma chamada do procedimento do exemplo acima, uma vez que não podemos garantir sua parada em tempo finito, para qualquer valor da entrada. Algoritmo. Definimos um algoritmo como sendo um procedimento que sempre pára sejam quais forem os valores de suas entradas. Logo é um caso especial de procedimentos.

Decidibilidade

Embed Size (px)

Citation preview

Page 1: Decidibilidade

Grupo: Hugo Imperiano Nóbrega 10711467Lucas Lucena Gambiarra 10711005

Decidibilidade

01 Questão.

Procedimentos. Vamos definir um procedimento como sendo uma sequência finita de instruções, e definir instrução como uma operação claramente descrita, que pode ser executada mecanicamente, em tempo finito. "mecanicamente" quer dizer que não há dúvidas sobre o que deve ser feito; "em tempo finito" quer dizer que não há dúvidas de que a tarefa

correspondente à instrução pode, em qualquer caso, ser levada até sua conclusão.

Para descrever um procedimento podemos usar uma linguagem natural, uma linguagem de programação, ou a linguagem normalmente usada em matemática. Frequentemente, usamos uma mistura de todas estas.(lf2 2-2). A definição de procedimento, dada acima, exigimos que cada instrução possa ser executada em tempo finito, mas não exigimos nada de semelhante para os procedimentos. Isso significa, em particular, que não poderíamos usar como instrução em algum outro procedimento uma chamada do procedimento do exemplo acima, uma vez que não podemos garantir sua parada em tempo finito, para qualquer valor da entrada. Algoritmo. Definimos um algoritmo como sendo um procedimento que sempre pára sejam quais forem os valores de suas entradas. Logo é um caso especial de procedimentos.

02 Questão.Perguntas como “Qual a menor distância total acumulada para um trajeto entre Cajazeiras e Corumbá” podem ser convertidas em perguntas decisórias como “A distância x do trajeto A entre Cajazeiras e Corumbá é menor que a distancia y do trajeto B entre Cajazeiras e Corumbá?”, onde podemos responder sim ou não para todos os trajetos. Respondendo essa pergunta para todos os trajetos pertencente ao conjunto dos trajetos, acharemos um trajeto X tal que sua distancia x é menor que todas as distancias y dos trajetos Y. Dessa forma precisa-se apenas provar que a pergunta/condição é uma proposição para todo o conjunto de trajetos.

Conclusão:

Page 2: Decidibilidade

Livros e artigos fazem suas provas sobre problemas em versão decisória devido ao fato de nem todos os problemas possuírem um numero finito de instâncias, tornando inviável a solução através da versão quantitativa. Porém substituindo por uma versão decisória pode-se usar indução para chegar a uma reposta. 03_ Os problemas de decisão são problemas de determinar se um determinado elemento de algum universo pertence ou não a um determinado conjunto (ou equivalentemente, se satisfaz uma determinada propriedade). Se existir um algoritmo que receba como entrada um elemento x e retorne como saída 'sim', caso x pertença ao conjunto A, ou 'não', caso contrário, então diz-se que o problema de decisão para o conjunto A é decidível. Do contrário, se não existir um algoritmo capaz de fazer essa avaliação, então diz-se que o problema de decisão para o conjunto A é indecidível.

04_ Ainda considerando as versões decisórias dos problemas, ou seja, para um conjunto de instâncias e uma pergunta que quando aplicada sobre as mesmas retorne apenas sim ou não, temos os problemas não decidíveis (aqueles para os quais não existem algoritmos que determinem respostas correta para todas as instâncias) divididos em duas subclasses. Semi-decidivel: são problemas para os quais existe um procedimento que, quando para alguma instância retorna sim, a resposta esta correta. Indecidível são problemas para os quais não existem procedimentos para nenhuma instncia seja ela qual for que retorne uma reposta, sim ou não, e tenhamos garantia que ela esteja correta.

05_ Exemplo de problema decidível - soma de dois números; exemplo de problema parcialmente decidível - funções com restrições no domínio; e como exemplo de problema totalmente indecidível temos o problema da parada.

06_ O teorema de Parada diz: toda propriedade não trivial de algum conjunto é não decídivel, onde propriedade trivial é aquela que se verifica para todos o elemento do conjunto ou para nenhum.

Prova Algol-likeSuponhamos que existe uma função booleana chamada PARA_COM_VALOR que recebe como argumentos um valor inteiro e um dado procedimento. Essa função retorna verdadeiro garantidamente parando num tempo finito se o procedimento passado como argumento parar para o dado valor inteiro. Construamos agora o seguinte procedimento:

Page 3: Decidibilidade

Procedimento TESTE_DA_PARADA (inteiro INT);{

enquanto PARA_COM_VALOR(INT, TESTE_DA_PARADA)faça{}

}

Obteremos uma contradição, pois teremos duas possibilidades:° PARA_COM_VALOR(INT,TESTE_DA_PARADA) retorna

verdadeiro. Então TESTE_DA_PARADA entrará em loop infinito. O que é absurdo, pois retornando verdadeiro, significaria que esse procedimento pararia, o que não iria acontecer devido ao loop.

° PARA_COM_VALOR(INT,TESTE_DA_PARADA) retorna falso. Dessa forma TESTE_DA_PARADA parará, o que é absurdo pois a função PARA_COM_VALOR retorna falso quando o procedimento não para.

Logo, por contradição, fica provado o teorema da parada usando algol-like.

Prova Usando TuringComo exemplo da técnica de redução, vamos mostrar que o problema da parada das máquinas de Turing (halting problem) é indecidível. Este problema pode ser formulado como "Mi pára com entrada xj?", embora algumas vezes seja confundido o problema da aceitação "Mi aceita xj?". Como sabemos que P(i) = "Mi aceita xi?" é indecidível (veja a linguagem L acima), e sabemos que podemos reduzir P a Q, porque P(i) é equivalente a Q(i, i), concluímos que o problema da parada Q é indecidível. Usualmente, a demonstração de que um problema é indecidível é, feita através de redução, a partir do problema da parada, diretamente, ou então, de forma indireta, a partir de problemas cuja indecidibilidade já foi provada anteriormente.

Questão 09.

O teorema de Rice deve cortar nossas ambições no sentido de que ele implica na existência de problemas para os quais não há algoritmo para resolvê-lo, ou seja, não garantem resposta correta já que são indecidíveis. Logo computadores não podem resolver tudo.

Page 4: Decidibilidade

Questão 10.

O teorema de Rice deve ser considerado um aliado, pois graças a ele, podemos saber quais problemas podemos resolver por meio de algoritmos e os que não podemos. Dessa forma podemos concentrar nossos esforços apenas em problemas decidíveis ou procurar formas não algorítmicas para resolução de problemas não decidíveis.