Upload
marcos-rogerio
View
56
Download
0
Embed Size (px)
Citation preview
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 > >
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>