Sipser, Capítulo 3 Noção formal de algoritmo, história Modelos de

Propaganda
Sipser, Capítulo 3
Noção formal de algoritmo, história
Modelos de computação: máquina de Turing, máquina URM, linguagens de
programação
Alfabeto finito e linguagem, números naturais
Noção de função (parcial) computável
Postulado de Church-Turing, pseudo-código
Estudo da computabilidade
Enumeração de programas
Existência de funções não-computáveis
Linguagens reconhecíveis e decidíveis
Limites?
%%%% bijecção entre números e pares de números
f(N,N)->N
0 2 5 9 14 20 ...
1 4 8 13 19 ...
3 7 12 18 ...
6 11 17 ...
10 16 ...
15 ...
%%%% representação de números em diversas bases
decimal 0,1,2,3,4,5,6,7,8,9
245 = 2 x 10 x 10 + 4 x 10 + 5
binário 0,1
101 = 1 x 2 x 2 + 0 x 2 + 1 = 5
outras bases ... unário?
%%%% simulador de máquina de Turing
http://morphett.info/turing/turing.html
00xR2
01xR3
0##R8
200R2
211R2
2##R4
40xL6
4 1 1 L reject
4 _ _ L reject
4xxR4
300R3
311R3
3##R5
5xxR5
51xL6
5 0 0 L reject
5 _ _ L reject
600L6
611L6
6xxL6
6##L7
700L7
711L7
7xxR0
8xxR8
8 0 0 L reject
8 1 1 L reject
8 _ _ R accept
%%%% simulador de máquina URM
http://faculty.oxy.edu/rnaimi/home/URMsim.htm
1: J(2,3,5)
2: S(1)
3: S(3)
4: J(1,1,1)
5: Z(2)
6: Z(3)
%%%% programa na linguagem Mathematica
euclides = Function[{m, n}, Module[{x, y, z},
x = Min[m, n];
y = Max[m, n];
While[x != 0,
Print[x, " ", y];
x = Min[y - x, x];
y=y-x
];
y
]];
euclides[2*5*2*3, 2*7*3*5]
60
210
60
150
60
90
30
60
30
30
30
%%%%%
função total não-computável
f(n) = x+1 se Pn(n) = x
= 0 se Pn(n) não termina
%%%%%%
L reconhecível
existe P tal que P(n) = 1 se e só se n está em L
L decidível
existe P tal que P(n) = 1 se n está em L
= 0 se n não está em L
%%%%%%
exercícios
(a) Mostre que é computável a função que determina se uma sequência de 0s e 1s
é alternante, i.e. se tem sempre 0 antes de 1, e 1 antes de 0.
(b) Mostre que é computável a função que determina se numa sequência de 0s e 1s
o número de 0s é igual ao número de 1s.
(c) Mostre que a linguagem dos números pares (pode considerar a representação
decimal e/ou a representação binária) é decidível.
(d) Mostre que se uma linguagem é decidível então é reconhecível.
(e) Mostre que existe uma linguagem reconhecível que não é decidível.
(f) Mostre que uma linguagem L é decidível se e só se L e comp(L) são ambas
reconhecíveis, onde comp(L) é a linguagem complementar de L, i.e. a linguagem
formada por todas as palavras sobre o mesmo alfabeto que não estão em L.
(g) Mostre que se L é uma linguagem infinita reconhecível então L contém uma
sublinguagem infinita decidível.
(h) Mostre que é reconhecível a linguagem formada pelos programas P para os
quais existe n tal que P(n) termina.
(i) Em 1962, Tibor Radó apresentou a função do 'castor atarefado' (busy beaver).
Supondo que o alfabeto das máquinas de Turing é unário, a função busy beaver
(BB) atribui a cada número n o maior número de símbolos que uma máquina de
Turing com n estados consegue deixar na fita ao terminar uma computação iniciada
com uma fita completamente em branco.
A função BB não é computável, pois prova-se que para qualquer função computável
f existe n tal que BB(n+c) > f(n+c). Ainda assim são conhecidos alguns dos seus
valores, nomeadamente, sabe-se que BB(1) = 1, BB(2) = 4, BB(3) = 6 e BB(4) = 13.
Sabe-se ainda que BB(5) > 4097 e é também conhecido um limite inferior
(gigantesco) para BB(6).
(i.1) Obtenha máquinas que comprovem que BB(1) = 1, BB(2) = 4, BB(3) = 6 e
BB(4) = 13.
(i.2) Mostre que se BB fosse computável então seria também computável, dado n,
encontrar uma máquina que determine BB(n).
Nível 1 - (a-e)
Nível 2 - (f-h)
Nível 3 - (i)
Download