Você está na página 1de 39

Indecidibilidade

Prof.: Edson Holanda edsonholanda@gmail.com Teoria da computao

Programa Hello, World


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

?????
O programa P com a entrada E, imprime a string Hello, world?

Programa Hello 2
main() { 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++; } }

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); }

ltimo teorema de Fermat


No

existem solues inteiras para a equao

xn + y n = z n ,
se n > 2.

Testador hipottico
P

Testador de Hello, world

Sim

H
No

Testador hipottico
P H1 E Hello, World

Sim

Testador hipottico

Sim
P H2 Hello, World

O que acontece quando. ?

Sim
H2 H2 Hello, World

Vamos chamar esse problema de Hello, world

Princpio da Reduo
Problema Hello, world

Reduo de

Hello, world
Problema Chamar F1

Reduzindo um problema a outro


Sim

Instncia de P1

Construir

Instncia de P2

Decidir

No

Um exemplo de reduo

Vamos mostrar que o problema: O programa P, dada a entrada E,chamar a funo f1? indecidvel. Obs.: Vamos supor que o programa possui uma funo chamada f1

Prova:

Usaremos uma demonstrao por absurdo; Como s conhecemos um problema indecidvel, Hello, world far o papel de P1 no diagrama mostrado anteriormente.

Prova: (cont.)

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

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.

Prova: (cont.) A construo


1.

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

Prova: (cont.) A construo


2.

Adicione a P1 uma funo F1. Essa funo no faz nada e no chamada. ( vamos chamar esse novo programa de P2)

Prova: (cont.) A construo


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)

Prova: (cont.) A construo


4.

Modifique P3 de forma que, sempre que executar qualquer instruo de sada, ele verifique em seguida no vetor V se escreveu 12 caracteres ou mais e, se for o caso, se Hello, world so esses 12 primeiros caracteres. Nesse caso, chame a nova funo F1. O programa resultade R e a entrada Z igual a E.

Prova: (cont.) concluso


Dessa forma transformamos um problema Hello, world em um caso do problema chamar F1. Logo, se o problema chamar F1 fosse decidvel, ento o problema Hello, world tambm seria. O que um absurdo pos sabemos que Hello, world indecidvel. Portanto, o problema chamar F1 tambm indecidvel.

Importante:
Sobre a prova atravs de reduo: Observe a importncia do raciocnio recursivo na implementao do programa H 2.

Importante:
A tese de Church estabelece uma correspondncia entre as noes de Algoritmo e Mquina de Turing.

Ou seja, podemos pensar num algoritmo como uma mquina de turing que sempre pra, para qualquer entrada, aceitando ou rejeitando.

Importante:
Lembre que L uma linguagem recursivamente enumervel (RE) SSE L = L1(M) para alguma Mquina de Turing M. Ling. Recursivas Decidveis MT sempre pra.

Uma modificao na MT
Seja M = (Q ,, , q0, , F) uma Mquina 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 smbolos diferentes do branco, desde o mais a esquerda at o mais o direita.

Outro problema indecidvel


Vamos provar que indecidvel a linguagem que consiste em pares (M,w) tais que: 1. M uma mquina de turing (codificada em binrio), com alfabeto de entrada { 0, 1 } 2. w um string de 0s e 1s. 3. M aceita a entrada w.

Enumerao dos strings binrios


Ordene todos os strings de acordo com o comprimento e os de mesmo comprimento por ordem lexicogrfica. Ex: , 0, 1, 00, 01, ...

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

Codificao para mquinas de Turing


Seja M = (Q ,, , q0, , F), precisamos atribuir nmeros naturais aos estados, aos smbolos 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 aceitao (final).

Codificao para mquinas 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 smbolos so atribudos de maneira aleatria aos prximos naturais.

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

Codificao para mquinas de Turing


Agora podemos codificar o funo de transio (qi, Xj) = (qk, Xl, Dm), para alguns naturais i, j, k, l e m.

Codificaremos essa regra pelo string


i j k l m 0 10 10 10 10

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

Codificao para mquinas de Turing


Um cdigo para a MT M inteira consiste em todos os cdigos para as transies, em alguma ordem, separados por pares de 1s:

C111C211...Cn-111Cn

Codificao para mquinas de Turing


Exerccio: 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),

Codificao para mquinas de Turing

Lembrem que precisamos codificar pares que consistem em uma MT e uma string, (M, w). Para esse par usamos a codificao anterior para M, seguida de 111 e por w.

Obs.: Em um cdigo para uma MT no contm trs 1s consecutivos.

Enumerao de MTs

Agora podemos ordenar todas as MTs de acordo com o comprimento e as de mesmo comprimento por ordem lexicogrfica.
Assim, podemos falar da Mi(i-sima mquina de Turing).
Obs.: Se o string no for uma representao bem formada de alguma MT, ento ela representa um MT sem movimentos. L(M)={ }

A linguagem da diagonalizao

A linguagem Ld, a linguagem da diagonalizao, o conjunto de strings wi tais que wi no est em L(Mi).
Vetor caracteristico: Formado por todas as strings que so aceitas pela MT Mi. O complementa da diagonal no o vetor caracterstico de nenhuma MT.

Teorema: Ld no RE

Ou seja, no 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 construmos, ou seja, existe um cdigo para M, digamos que seja i ( M = Mi).

Teorema: Ld no RE

Wi est em Ld ?
Se wi est em Ld, ento Mi aceita wi. Entretanto, por definio de Ld, wi no est em Ld, porque contm somente os valores wj tais que Mj no aceita Mj.

Teorema: Ld no RE

Wi est em Ld ?
Se wi no est em Ld, ento Mi no aceita wi. Portanto, por definio de Ld, wi est em Ld. O que uma contradio (absurdo) !!

Você também pode gostar