20
Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Embed Size (px)

Citation preview

Page 1: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Teorema da Recursão

Teoria da Computação

Pós-graduação em Ciência da Computação

Profa. Sandra de Amo

Page 2: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Auto-referência

Máquina de Turing SELF

SELF = No input w

1. Apaga w da fita;

2. Insere na fita o string <SELF>

<SELF> = código da máquina SELF

Page 3: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Como construir a máquina SELFPasso 1 : Máquina Pw = máquina que imprime w na fita

Pw = No input x1. Ignora x2. Imprime w na fita

Exemplo : w = 00 Código da máquina P00

δ(q0,x) = (q1,0,R), para qualquer simbolo x da fita δ(q1,x) = (q2,0,R), para qualquer simbolo x da fita δ(q2,x) = (q2,B,R), para x ≠ B δ(q2,B) = (qa,B,R).

Page 4: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Como construir a máquina SELFPasso 2 : Máquina Q = máquina que no input w imprime o código da máquina que imprime w.

Q

w <Pw>

Máquina de 2 fitas:

Q = No input w

1. Constrói o string <Pw>

na fita 2

2. Apaga w da fita 1

3. Copia <Pw> na fita 1

Input = wOutput = <Pw> (código da máquina Pw)

Page 5: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Como construir a máquina SELFPasso 3 : Máquina B B = No input <M>

1.Computa Q(<M>) = < P<M>>

2.Imprime na fita < P<M> . M >

3.Pára

< P<M> . M > é o código “concatenado” de < P<M>> e <M>

δ(q0,..) = (q1,...) δ(q’_0, ...) = ... δ(q0,...)= (q1,...)

........ ........ ... .....

δ(q,..) = (qa,..) δ(q’,..) = (q’a,....) δ(q,...) = (q’_0,...)

........

δ(q’,...) = (q’a,...)< M > <P< M > >

Page 6: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Como construir a máquina SELF Passo 4 : Máquina A

A = P<B>

Passo 5 : Máquina SELF

SELF = A . B

Page 7: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Máquina SELF

Self = No input x faça

1. Ignora x

2. Executa A: Imprime código da máquina B na fita

3. Executa B sobre o string da fita (no caso <B>) : Imprime código da máquina que imprime B na fita seguido do código de B

4. Resultado na fita = <A.B>

Page 8: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Máquina SELF = A.B

Input w a1 a2 a3 a4 a5

A

< B > qB0 0 q1 0 R

B

#

qA0 0 q4 1 L #

< P <B> > = <A>

< A .B > qB0 0 q1 0 R #

q1 0 ...

q1 0

< B >

Page 9: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Teorema da Recursão

Seja T máquina de Turing a duas fitas que recebe como input dois strings : w na primeira fita e u na segunda fita

T : (w, u) z

Então existe máquina de Turing R com uma fita tal que

R(u) = T(<R>, u)

Page 10: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Prova do Teorema da RecursãoConsidere a máquina Pw a duas fitas

Pw = No input x

1. Transporta x para a segunda fita

2. Imprime w na primeira fita

Seja A = P <BT>

R = A.B.T

Page 11: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Input w a1 a2 a3 a4 a5

A

< B.T > qBT0 0 q1 0 R

B

#

qA0 0 q4 1 L #

< P <BT> > = <A>

< A.B.T > qBT0

0 q1 0 R #

q1 0 ...

q1 0

< B.T >

1a fita

1a fita

T

a1 a2 a3 a4 a5 2a fita

1a fita

LOGO : ABT (a1a2....a5) = T(<ABT>,a1a2...a5)

Page 12: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Característica da Máquina R Constrói uma réplica de seu próprio código.

Continua o restante de seu cálculo que pode incluir ações envolvendo seu próprio código.

Programas de vírus contém construção análoga à descrita na prova do teorema da recursão.

Page 13: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Outra formulação do Teorema da Recursão Seja T máquina de Turing a duas fitas. Para cada w fixo, seja a máquina de Turing a uma fita

Tw : u z

Existem infinitas máquinas deste tipo.

O teorema da Recursão afirma que existe uma máquina de Turing R a uma fita tal que

T<R> = R

Page 14: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Aplicações do Teorema da RecursãoVirus: Dada uma máquina T, é possivel construir uma máquina T’

equivalente a T que replica seu próprio código na fita.T’ = A.B.T

T’: No input x faça Executa A Executa B % Após a execução do passo 2, tem-se o código de T’

na fita 1 e x na fita 23) Executa T sobre x (que está na 2a fita)4) Se T aceita x, aceita. Se T rejeita x, rejeita.

Page 15: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Aplicações do Teorema da RecursãoOutra prova que o Problema da Parada é indecidível.

Suponha que Halt fosse decidível. Seja H uma MT que decide Halt. Considere a máquina H que retorna o oposto de H:

H(<M,w>) = qa se H(<M,w>) = qr

H(<M,w>) entra em loop se H(<M,w>) = qa

Considere a máquina H’ = ABH

H’ : No input w faça:

1) Executa A

2) Executa B

% Após a execução do passo 2, tem-se o código <H’ > de H’ na fita 1 e w na fita 2

3) Executa H em <H’,w>

H’(w) = qa (pára) se H(H’,w) = qr (isto é, se H’ não pára ao ser executada em w)H’(w) entra em loop (não pára) se H(H’,w) = qa (isto é, se H’ pára ao ser

executada em w) ABSURDO !

Page 16: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Aplicações do Teorema da RecursãoM é uma máquina minimal se não é possivel encontrar

máquina M’ equivalente com código mais curto.

Problema MIN = {<M> | M é uma MT minimal}

não é Turing Reconhecível.

É fácil ver que o MIN é infinito (existem infinitas máquinas que são minimais).

Page 17: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

ProvaSuponha que MIN fosse Turing Reconhecível.

Seja E uma máquina enumeradora de MIN.

Seja E a seguinte máquina:

E : No input x faça:1) Aciona o enumerador E2) A primeira vez que aparece um código de máquina de

Turing D no dispositivo de impressão de E que seja maior do x, simule D em x.

Repare que como MIN é infinito, sempre vai aparecer um código D maior do que x no dispositivo de impressão de E.

Page 18: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Prova (continuação)Considere a máquina M’ = ABEM’ = No input w faça

1) Executa A

2) Executa B

% Após a execução do passo 2, tem-se o código <M’ > de M’ na fita 1 e w na fita 2

3) Executa E em <M’>

M’(w) = D(w). Como o código de D é maior do que o de M’ então D não pode estar em MIN. Mas o código de D aparece na enumeração dos códigos de MIN !! ABSURDO

Page 19: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Teorema do Ponto FixoSeja f: ∑* ∑* uma função computável qualquer.

f pode ser aplicada sobre códigos de máquina de Turing, produzindo como resposta um string que pode ou não ser código de máquina de Turing.

Teorema do Ponto Fixo: Existe uma máquina de Turing F tal que f(<F>) é um código de MT equivalente a F

Isto é: o comportamento da máquina F fica inalterado após a transformação de seu código via f.

Page 20: Teorema da Recursão Teoria da Computação Pós-graduação em Ciência da Computação Profa. Sandra de Amo

Prova do Teorema do Ponto FixoConsidere a seguinte máquina G G(<M,w>) = f(<M>)(w)

Considere a máquina F = ABG. Vamos mostrar que F é equivalente à máquina f(<F>)

F = No input w faça:1. Execute A2. Execute B

% Após a execução do passo 2, tem-se o código <F > de F na fita 1 e w na fita 2

3. Execute G em (<F,w>)

Logo: F(w) = G(<F,w>) = f(<F>)(w). Portanto F é equivalente a f(<F>).