Teo Recursao

13
Teorema da Recursão Teoria da Computação – 2010 Mestrado em Ciência da Computação Profa. Sandra de Amo

Transcript of Teo Recursao

Teorema da Recursão

Teoria da Computação – 2010

Mestrado 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

Como construir a máquina SELF Passo 1 : Máquina Pw

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

Como construir a máquina SELF Passo 2 : Máquina Q

Input = w Output = <Pw> (código da

máquina Pw)

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

Como construir a máquina SELF Passo 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 > >

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

A = P<B>

Passo 5 : Máquina SELF

SELF = A . B

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 >

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 a uma fita tal que

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

a1 a2 a3 a4 a5

qBT0 0 q1 0 R # q1 0 ...

Como atua R ?

Input u =

Contrói uma réplica de seu próprio código na fita

Executa outras ações em cima de seu próprio código e do input u

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.

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

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 = T <ABT>

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