cap 7 indecidibilidade
DESCRIPTION
Aula do Prof.: Edson HolandaTeoria da computaçãoTRANSCRIPT
![Page 2: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/2.jpg)
Programa Hello, World
main( ){ printf( "Hello, World \n"); getch( );}
![Page 3: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/3.jpg)
?????
“O programa P com a entrada E, imprime a string ‘Hello, world’?”
![Page 4: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/4.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/5.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/6.jpg)
Último teorema de Fermat “Não existem soluções
inteiras para a equação
xn + yn = zn ,
se n > 2”.
![Page 7: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/7.jpg)
Testador hipotético
Testador de Hello, world
H
P
E
Sim
Não
![Page 8: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/8.jpg)
Testador hipotético
H1
P
E
Sim
Hello, World
![Page 9: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/9.jpg)
Testador hipotético
H2P
Sim
Hello, World
![Page 10: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/10.jpg)
O que acontece quando…. ?
H2H2
Sim
Hello, World
![Page 11: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/11.jpg)
Vamos chamar esse problema de ‘Hello, world’
![Page 12: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/12.jpg)
Princípio da Redução
Problema Hello, world
Redução de
Hello, world
Problema Chamar F1
![Page 13: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/13.jpg)
Reduzindo um problema a outro
ConstruirInstância de P1
Sim
Não
Instância de P2
Decidir
![Page 14: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/14.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/15.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/16.jpg)
Prova: (cont.)
Precisamos projetar um algoritmo que converta o problema Hello, world no problema de chamar F1.
![Page 17: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/17.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/18.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/19.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/20.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/21.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/22.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/23.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/24.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/25.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/26.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/27.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/28.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/29.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/30.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/31.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/32.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/33.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/34.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/35.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/36.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/37.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/38.jpg)
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: Cap 7 Indecidibilidade](https://reader035.vdocuments.mx/reader035/viewer/2022062312/553c6b454a79595c038b490a/html5/thumbnails/39.jpg)
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) !!