Documente Academic
Documente Profesional
Documente Cultură
i Post-Turing;
cunoatei noiunea de main Turing.
5.2. Indicaii metodice pentru unitatea de nvare nr. 5
Materialul trebuie parcurs n ordinea sa fireasc, prezentat n continuare. Se recomand
conspectarea i notarea ideilor principale, precum i consultarea bibliografiei pentru detalii i
informaii suplimentare.
Timpul minim pe care trebuie s-l acordai acestei uniti de nvare este de ore.
5.3. Limbajul
Pentru orice numr natural 0 n > , introducem limbajul
n
S , care lucreaz cu variabile ce sunt
cuvinte ntr-un alfabet A cu A n = . Instruciunile acestui limbaj sunt urmtoarele:
v sv se adaug la stnga cuvntului v litera s
v v
; =
if v ends s goto L dac v se termin cu litera s , se face transfer la prima instruciune
din program cu eticheta L; n caz contrar, se trece la executarea
instruciunii urmtoare
2
Evident n instruciunile de mai sus trebuie s avem
, . La fel ca i n cazul
limbajului , variabilele diferite de variabilele de intrare se consider iniializate cu
(cuvntul vid, corespunztor lui 0), se folosesc macroinstruciuni etc. Diferena fa de S
const numai n aceea c variabilele sunt gndite ca avnd valori n A
, iar forma
instruciunilor difer, fiind acum adecvat lucrului cu cuvinte. Instruciunile din
n
S sunt
naturale pentru cuvinte i nenaturale pentru numere, aa cum instruciunile din S sunt
naturale pentru numere, dar nu i pentru cuvinte.
Definiia 1. Spunem c o funcie ( )
m
f A A
: este (parial) calculabil n
n
S dac este
calculat de un program n limbajul
n
S .
Observaie. Vom ntlni n continuare adeseori secvena:
if v ends
1
s goto
1
B
. . . . . . . . .
if v ends
n
s goto
n
B
pe care o vom scrie prescurtat: if v ends
i
s goto
i
B (1 i n ) i o vom numi filtru.
Prezentm cteva macroinstruciuni n limbajul
n
S , mpreun cu dezvoltrile corespunztoare
(se consider
1
)
n
A {s s } = , ..., :
if v goto L
if v ends
i
s goto L (1 i n )
v
[ ] A
v v
if v goto A
goto L
1
z s z
if z goto L
v v
z
v
[ ] A
if v ends
i
s goto
i
B (1 i n )
goto C
[ ]
i
B 1,...,
i
i
v v
v s v
i n
z s z
A
goto
[ ] C
if v ends
i
s goto
i
D (1 i n )
goto E
[ ]
i
D 1,...,
goto
i
z z
v s v i n
C
3
Teorem. Fie
m
f : N N (parial) calculabil n i
1 n
A {s s } = , .., , funcia
m
n
f A A
| |
|
\
: este (parial) calculabil n
n
S .
Fie P programul din S care calculeaz funcia f . Artm cum se construiete un program
Q n
n
S care simuleaz pas cu pas programul P , n sensul c orice modificare a valorii
variabilei v din n n S corespunde modificrii valorii variabilei v din
1
( )
n
n
1
( )
n
n
n
S .
Este suficient s nlocuim fiecare instruciune din S cu o macroinstruciune n
n
S care s o
simuleze:
- instruciunea if 0 v goto L este simulat de if v goto L;
- instruciunile 1 v v + i 1 v v vor fi simulate respectiv de macroinstruciunile
1 v v i 1 v v din
n
S , unde (presupunnd c n A avem
1 2
)
n
s s s < < ... < , 1 v
va fi "succesorul" lui v , iar 1 v va fi "predecesorul" lui v , definite analog ca pentru
numere.
Exemple. Dac S {a b c} = , , cu a b c < < , atunci: 1 1 1 baac bbaa bcaa bbcc = , = , = .
Rmne de artat c funciile
1 2
f f A A
, : definite prin
1
( ) 1 f x x = i
2
( ) 1 f x x = sunt
calculabile n
n
S .
Propoziia 1.
1
f este calculabil n
n
S .
Este suficient s producem un program care calculeaz aceast funcie:
[ ] B
if x ends
i
s goto
i
A (1 i n )
1
y s y
goto E
[ ]
i
A
1
1
i
x x
y s y i n
C
<
goto
[ ]
n
A x x
1
y s y
goto B
[ ] C
if x ends
i
s goto
i
D (1 i n )
goto E
[ ]
i
D 1
i
x x
y s y i n
C
goto
4
5.4. Limbajul Post-Turing
Fie
1 n
A {s s } = , ..., un alfabet format din n litere. Pe baza lui, vom introduce un nou limbaj:
limbajul Post-Turing
n
T .
Se folosete o band infinit, att la dreapta ct i la stnga, format din celule ce pot conine
fie o liter din A, fie un blanc (notat prin b sau
0
s ). Mai exist un cap de citire/scriere ce
poate explora la fiecare moment de timp o singur celul. ntotdeauna banda va conine
numai un numr finit de celule n care apar litere din A.
Instruciunile limbajului Post-Turing
n
T sunt urmtoarele:
print s n celula din dreptul capului de citire/scriere se scrie litera s
if s goto L
dac celula din dreptul capului de citire/scriere conine litera s , atunci se
face transfer la prima instruciune din program cu eticheta L; n caz contrar,
se trece la instruciunea urmtoare
right capul de citire/scriere este deplasat cu o poziie la dreapta
left capul de citire/scriere este deplasat cu o poziie la stnga
Prin configuraia benzii de intrare la un moment de timp oarecare nelegem coninutul ei,
mpreun cu poziia capului de citire/scriere; dac va apare numai o poriune din band, se va
considera c n celulele din dreapta i stnga sa apar numai blancuri. Pentru a indica poziia
capului de citire/scriere, vom figura ngroat (bold) simbolul din celula n dreptul cruia se
afl.
Configuraia iniial pentru un program n limbajul
n
T ce prelucreaz datele de intrare
1 m
x x A
right
print
left
goto
0
[ ] A
right
print b
left
5) erase a block :
[ ] A right
if b goto E
print b
goto A
n continuare vom demonstra c pentru orice funcie parial
m
f : N N i orice n , sunt
valabile implicaiile din figura 1, ceea ce arat c cele 3 moduri diferite n care s-a introdus
noiunea de calculabilitate sunt echivalente.
Figura 1. Echivalena ntre definiiile noiunii de calculabilitate
Teorema 1.
n
f este parial calculabil n
n n
S f este calculat strict de un program n
n
T .
Fie P un program n
n
S ce calculeaz funcia
n
f . Fie
1 k
z z , .., variabilele de lucru utilizate.
n P apar atunci variabilele
1 1 m k
x x z z y , .., , , .., , pe care le notm n aceast ordine cu
1 l
v v , ..., ;
deci 1 m k = + + .
evident
Teorema 1
Teorema 2
s-a artat
f parial calculabil
f
n
parial calculabil n S
n
f
n
calculat de un
program n T
n
f
n
calculat strict de
un program n T
n
8
La nceputul fiecrui pas, banda va avea urmtoarea configuraie:
1 1 m k
x b bx bz b bz byb ... .... b
n care apar valorile curente ale variabilelor de mai sus. Observm c acest lucru este
convenabil, ntruct configuraia iniial:
1 2 m
x bx b bx b .... b
corespunde iniializrii cu a variabilelor
1 k
z z y , ..., , .
Convenim c dac o macroinstruciune este urmat de un numr natural scris ntre paranteze,
atunci se consider c macroinstruciunea apare de acel numr de ori.
Instruciunile limbajului
n
S sunt simulate n
n
T astfel:
j i j
v s v :
right to next blank ( ) l
move block right ( 1 l j + )
right
print
i
s
left to next blank ( ) j
j j
v v
:
right to next blank ( ) j
left
if b goto A
move block right ( j )
right
goto E
[ ] A left to next blank ( 1) j
s
j i
v L if ends goto
right to next blank ( ) j
left
if
i
s goto A
right
left to next blank ( ) j
goto E
[ ] A left to next blank ( ) j
goto L
Programul Q se obine din P nlocuind fiecare instruciune a lui P cu secvena
corespunztoare n limbajul
n
T , iar la sfrit adugnd macroinstruciunea:
erase a block ( 1) l
9
pentru a obine configuraia final yb b . Deci Q calculeaz strict pe
n
f .
Teorema 2. Dac
n
f este o funcie parial calculat de un program n
n
T , atunci f este
parial calculabil.
Demonstraia acestei teoreme o propunem ca tem de studiu individual.
5.5. Maini Turing
La fel ca n cazul programelor Post-Turing, vom folosi o band infinit att la dreapta ct i la
stnga, format din celule ce conin simboluri dintr-un alfabet T precum i simbolul b. La
fiecare moment de timp pe band se vor afla doar un numr finit de simboluri din T .
Alfabetul T conine o submulime A. Ne va interesa n continuare cum din cuvintele
1 m
x x A
, , ..., .
Schimbrile de configuraie se fac conform quadruplelor din K . Maina Turing se oprete
dac se ajunge ntr-o configuraie de forma
j
s
i
q
i nici un quadruplu din Q nu ncepe cu ( )
i j
q s , .
Definiia 2. Spunem c M calculeaz funcia f parial de aritate m pe A
dac plecnd
de la configuraia iniial, M se oprete pentru
1
( ) ( )
m
m
x x A
, , , , , , ..., ,
unde r este fie numrul primei instruciuni din P etichetate cu L (dac o astfel de
instruciune exist), fie 1 p + (n caz contrar).
O variant de main Turing o constituie maina Turing quintupl, n care Q este format
din quintuple avnd una dintre urmtoarele dou forme (se precizeaz i schimbrile de
configuraie respective):
2)
( )
i j k l
q s s L q , , , ,
m
s
j
s a
m
s
k
s
i l
q q
i maina Turing quintupl va fi considerat determinist, deci nu exist dou quintuple ce
ncep cu aceeai pereche ( )
i j
q s , .
Teorema 2. Dac funcia parial f este calculat de o main Turing, atunci ea este
calculat i de o main Turing quintupl cu acelai alfabet.
Fie
1 1 1
( )
r n
M {q q } {s s } q Q = ,.., , , ..., , , maina Turing ce calculeaz pe f . Construim atunci
maina Turing quintupl
( )
1 2 1 1 r r n
M {q q q } {s s } q Q = , .., ,..., , ,..., , , , unde Q este construit
astfel:
- pentru fiecare ( )
i j l
q s R q , , , introducem ( )
i j j l
q s s R q , , , ,
1)
( )
i j k l
q s s R q , , , ,
j
s
m k
s s a
m
s
i l
q q
12
- pentru fiecare ( )
i j l
q s L q , , , introducem ( )
i j j l
q s s L q , , , ,
- pentru fiecare ( )
i j k l
q s s q , , , introducem ( )
i j k l
q s s R q , , , ,
- n plus introducem quintuplele: { , , , , ) | 1,..., , 0,..., }.
l r j j l
q s s L q l r j n
+
= =
Teorema 3. Dac funcia parial f este calculat de o main Turing quintupl, ea este
calculat i de un program Post-Turing.
Fie ( )
1 1 1 r n
M {q q } {s s } q Q = , ..., , , ...., , , o main Turing quintupl ce calculeaz funcia f .
Pentru fiecare 1 0 i r j n = , ..., , = , ..., asociem :
i
q a eticheta ( )
i i j
A q s ; , a eticheta
ij
B .
n programul Post-Turing pe care l construim, eticheta
i
A apare n faa filtrului:
[ ]
i
A if
j
s goto (0 )
ij
B j n .
Pentru fiecare ( )
i j k l
q s s R q , , , , introducem blocul:
[ ]
ij
B print
k
s
right
goto
l
A
iar pentru fiecare ( )
i j k l
q s s L q , , , , introducem blocul:
[ ]
ij
B print
k
s
left
goto
l
A
Pentru toate perechile ( )
i j
q s , care nu sunt la nceputul vreunui quadruplu din Q, introducem
instruciunea:
[ ]
ij
B goto E .
Programul Post-Turing cutat va fi cel obinut prin concatenarea tuturor blocurilor introduse
mai sus, cu singura restricie c programul ncepe cu filtrul etichetat cu
1
A .
Corolar. O funcie parial f este calculat de un program Post-Turing dac i numai dac
f este calculat de o main Turing.
Mai mult, am obinut c pentru orice funcie parial
m
f : N N, f este parial calculabil
f este calculat de o main Turing. Am obinut astfel o nou caracterizare a funciilor
parial calculabile i anume cu ajutorul mainilor Turing. Am obinut de asemenea un
argument n plus n sprijinul tezei lui Church.
13
Fie
1
( ) M K A q Q = , , , . Un cuvnt u A
= .
Fie
1 n
A {s s } = , ..., un alfabet cu n litere. Reamintim c fiecare u A
poate fi privit ca un
numr natural, notat ( )
n
u . Atunci pentru orice B A
;
2. a cunoate mai multe exemple de programe scrise n limbajul Post-Turing;
3. a cunoate mai multe exemple de maini Turing.
5.7. Testul de autoevaluare nr. 5
Rspunsurile la test se vor da n spaiul liber aflat n continuarea enunurilor!
1. Scriei dezvoltarea macroinstruciunii erase a block din limbajul T
.
14
2. Demonstrai c funcia
1 este calculabil n
n
S .
3. Descriei o main Turing care s nlocuiasc ntr-un ir binar fiecare 0 cu 1 i fiecare 1
cu 0.
15
Rspunsurile la acest test se gsesc pe pagina urmtoare!
5.8. Comentarii i rspunsuri la testul nr. 5 de autoevaluare
1. Dezvoltarea macroinstruciunii erase a block n limbajul T
este urmtoarea:
[ ] A right
if b goto E
print b
goto A
2. Este suficient s scriem un program care calculeaz funcia
1:
[ ] B
if x ends
i
s goto
i
A (1 i n )
goto E
[ ]
i
A
1
1
1
i
x x
y s y i n
C
<
goto
1
[ ] A x x
if x goto
2
C
goto E
2
[ ] C
n
y s y
goto B
1
[ ] C if x ends
i
s goto
i
D (1 i n )
[ ]
i
D
1
1
i
x x
y s y i n
C
goto
3. O main Turing quintupl care nlocuiete ntr-un ir binar fiecare 0 cu 1 i fiecare 1 cu 0
este urmtoarea:
, 0,1,
, unde
, 0,1, ,
, 1,0, ,
.
5.9. Lucrare de verificare pentru studeni
1. Scriei un program n limbajul