A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof.: Edson Holanda Teoria da computação

Apresentações semelhantes


Apresentação em tema: "Prof.: Edson Holanda Teoria da computação"— Transcrição da apresentação:

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

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

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

4 Programa Hello 2 main() { int n, total, x, y, z; scanf("%d", &n);
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++; } }

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

6 Último teorema de Fermat
“Não existem soluções inteiras para a equação xn + yn = zn , se n > 2”.

7 Testador hipotético P Testador de Hello, world Sim H E Não

8 Testador hipotético P Sim H1 E Hello, World

9 Testador hipotético Sim P H2 Hello, World

10 O que acontece quando…. ? Sim H2 H2 Hello, World

11 Vamos chamar esse problema de ‘Hello, world’

12 Princípio da Redução Hello, world Problema Hello, world
Redução de Hello, world Problema Chamar F1

13 Reduzindo um problema a outro
Construir Instância de P1 Sim Não Instância de P2 Decidir

14 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

15 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.

16 Prova: (cont.) Precisamos projetar um algoritmo que converta o problema Hello, world no problema de chamar F1.

17 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.

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

19 Prova: (cont.) A construção
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)

20 Prova: (cont.) A construção
Modifique P2 para memorizar os 12 primeiros caracteres que ele imprime (armazenando em um vetor global V. ( vamos chamar esse novo programa de P3)

21 Prova: (cont.) A construção
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.

22 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.

23 Importante: Sobre a prova através de redução:
Observe a importância do raciocínio recursivo na implementação do programa H2.

24 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.

25 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.

26 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.

27 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.

28 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.

29 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).

30 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.

31 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.

32 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

33 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),

34 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.

35 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)={ }

36 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.

37 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).

38 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.

39 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) !!


Carregar ppt "Prof.: Edson Holanda Teoria da computação"

Apresentações semelhantes


Anúncios Google