Indecidibilidade Prof.: Edson Holanda [email protected] Teoria da computação.

39
Indecidibilidade Prof.: Edson Holanda [email protected] Teoria da computação

Transcript of Indecidibilidade Prof.: Edson Holanda [email protected] Teoria da computação.

Page 1: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Indecidibilidade

Prof.: Edson Holanda

[email protected]

Teoria da computação

Page 2: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Programa Hello, World

main( ){ printf( "Hello, World \n"); getch( );}

Page 3: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

?????

“O programa P com a entrada E, imprime a string ‘Hello, world’?”

Page 4: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Programa Hello 2main(){ int n, total, x, y, z; scanf("%d", &n); total = 3; while(1) {for (x = 1; x <= total - 2; x++)

for ( y = 1; y <= total -1; y++) { z = total - x - y;

if (exp(x,n) + exp(y,n) == exp (z,n)) { printf("Hello, World");} }

total++; }}

Page 5: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Programa Hello 2

int exp(int i, int n){ int res, j; res = 1; for ( j = 1 ; j <= n ; j++ )

{ res = res * i; } return(res);}

Page 6: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Último teorema de Fermat “Não existem soluções

inteiras para a equação

xn + yn = zn ,

se n > 2”.

Page 7: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Testador hipotético

Testador de Hello, world

H

P

E

Sim

Não

Page 8: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Testador hipotético

H1

P

E

Sim

Hello, World

Page 9: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Testador hipotético

H2P

Sim

Hello, World

Page 10: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

O que acontece quando…. ?

H2H2

Sim

Hello, World

Page 11: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Vamos chamar esse problema de ‘Hello, world’

Page 12: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Princípio da Redução

Problema Hello, world

Redução de

Hello, world

Problema Chamar F1

Page 13: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Reduzindo um problema a outro

ConstruirInstância de P1

Sim

Não

Instância de P2

Decidir

Page 14: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Um exemplo de redução Vamos mostrar que o

problema: “ O programa P, dada a entrada E,chamará a função f1?” é indecidível.

Obs.: Vamos supor que o programa possui uma função chamada f1

Page 15: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: Usaremos uma demonstração

por absurdo; Como só conhecemos um

problema indecidível, Hello, world fará o papel de P1 no diagrama mostrado anteriormente.

Page 16: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.)

Precisamos projetar um algoritmo que converta o problema Hello, world no problema de chamar F1.

Page 17: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.)

Ou seja, dado o programa P e sua entrada E, devemos contruir uma programa R e uma entrada Z tais que R, com a entrada Z, chame F1 SSE P com a entrada E imprimir Hello, world.

Page 18: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.) A construção

1. Se P tem uma função F1, renomeie essa função e todas as chamadas a ela. ( vamos chamar esse novo programa de P1)

Page 19: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.) A construção

2. Adicione a P1 uma função F1. Essa função não faz nada e não é chamada. ( vamos chamar esse novo programa de P2)

Page 20: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.) A construção

3. Modifique P2 para memorizar os 12 primeiros caracteres que ele imprime (armazenando em um vetor global V. ( vamos chamar esse novo programa de P3)

Page 21: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.) A construção

4. Modifique P3 de forma que, sempre que executar qualquer instrução de saída, ele verifique em seguida no vetor V se escreveu 12 caracteres ou mais e, se for o caso, se Hello, world são esses 12 primeiros caracteres. Nesse caso, chame a nova função F1. O programa resultade é R e a entrada Z é igual a E.

Page 22: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Prova: (cont.) conclusão

Dessa forma transformamos um problema Hello, world em um caso do problema chamar F1.

Logo, se o problema chamar F1 fosse decidível, então o problema Hello, world também seria. O que é um absurdo poís sabemos que Hello, world é indecidível.

Portanto, o problema chamar F1 também é indecidível.

Page 23: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Importante:

Sobre a prova através de redução:

Observe a importância do raciocínio recursivo na implementação do programa H2.

Page 24: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Importante:

A tese de Church estabelece uma correspondência entre as noções de Algoritmo e Máquina de Turing.

Ou seja, podemos pensar num algoritmo como uma máquina de turing que sempre pára, para qualquer entrada, aceitando ou rejeitando.

Page 25: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Importante:

Lembre que L é uma linguagem recursivamente enumerável (RE) SSE L = L1(M) para alguma Máquina de Turing M.

Ling. Recursivas Decidíveis MT sempre pára.

Page 26: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Uma modificação na MT Seja M = (Q ,, , q0, ß, F) uma

Máquina de Turing.

Assumiremos que a fita é infinita, tanto do lado direito quanto do lado esquerdo.

A palavra de entrada w será formado por todos os símbolos diferentes do branco, desde o mais a esquerda até o mais o direita.

Page 27: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Outro problema indecidível Vamos provar que é indecidível a

linguagem que consiste em pares (M,w) tais que:1. M é uma máquina de turing (codificada em binário), com alfabeto de entrada { 0, 1 }2. w é um string de 0´s e 1´s.3. M aceita a entrada w.

Page 28: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Enumeração dos strings binários Ordene todos os strings de acordo com o

comprimento e os de mesmo comprimento por ordem lexicográfica.

Ex: , 0, 1, 00, 01, ...

Dessa maneira podemos falar do primeiro string (w1), do segundo string (w2), etc.

Page 29: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Codificação para máquinas de Turing

Seja M = (Q ,, , q0, ß, F), precisamos atribuir números naturais aos estados, aos símbolos e aos sentidos (E e D).

1. Sejam q1,q2,...,qr para algum r. Vamos admitir que q1 sempre será o estado inicial e que q2 será o único estado de aceitação (final).

Page 30: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Codificação para máquinas de Turing

2. Sejam X1, X2, ..., Xs para algum s. Vamos admitir que X1 sempre será 0, X2 será 1 e que X3 será ß. Os demais símbolos são atribuídos de maneira aleatória aos próximos naturais.

3. Atribuiremos D1 ao sentido E e D2 ao sentido D.

Page 31: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Codificação para máquinas de Turing

Agora podemos codificar o função de

transição (qi, Xj) = (qk, Xl, Dm), para alguns naturais i, j, k, l e m.

Codificaremos essa regra pelo string

0i10j10k10l10m

Obs.: Como todos os valores i, j, k, l e m são, pelo menos, iguais a 1, não temos dois, ou mais, 1´s consecutivos.

Page 32: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Codificação para máquinas de Turing

Um código para a MT M inteira consiste em todos os códigos para as transições, em alguma ordem, separados por pares de 1´s:

C111C211...Cn-111Cn

Page 33: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Codificação para máquinas de Turing

Exercício: Codifica a MT M abaixo,

M = ({q1,q2,q3},{0,1}, , q1, ß, {q2})

na qual consiste nas regras:

(q1, 1) = (q3, 0, E),

(q3, 0) = (q1, 1, E),

(q3, 1) = (q2, 0, D),

Page 34: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Codificação para máquinas de Turing Lembrem que precisamos codificar pares

que consistem em uma MT e uma string, (M, w).

Para esse par usamos a codificação anterior para M, seguida de 111 e por w.

Obs.: Em um código para uma MT não contém três 1´s consecutivos.

Page 35: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Enumeração de MT´s Agora podemos ordenar todas as MT´s de

acordo com o comprimento e as de mesmo comprimento por ordem lexicográfica.

Assim, podemos falar da Mi(i-ésima máquina de Turing).

Obs.: Se o string não for uma representação bem formada de alguma MT, então ela representa um MT sem movimentos. L(M)={ }

Page 36: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

A linguagem da diagonalização A linguagem Ld, a linguagem da

diagonalização, é o conjunto de strings wi tais que wi não está em L(Mi).

Vetor caracteristico: Formado por todas as strings que são aceitas pela MT Mi.

O complementa da diagonal não é o vetor característico de nenhuma MT.

Page 37: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Teorema: Ld não é RE Ou seja, não existe nenhuma MT que

aceite Ld. Prova: Vamos supor que Ld é L(M) para

alguma TM M. Como Ld é uma linguagem sobre o alfabeto {0,1}, M está na lista de MT que construímos, ou seja, existe um código para M, digamos que seja i ( M = Mi).

Page 38: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Teorema: Ld não é RE Wi está em Ld ?

Se wi está em Ld, então Mi aceita wi. Entretanto, por definição de Ld, wi não está em Ld, porque contém somente os valores wj tais que Mj não aceita Mj.

Page 39: Indecidibilidade Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computação.

Teorema: Ld não é RE Wi está em Ld ?

Se wi não está em Ld, então Mi não aceita wi. Portanto, por definição de Ld, wi está em Ld.

O que é uma contradição (absurdo) !!