Definitii: ========== 1. Masinia Turing determinista cu o banda: M = (Q, V, U, d, q0, F, B) Q, V, U si F sunt multimi. Toate sunt finite Q - Multimea starilor. Include F. V - Alfabetul de intrare al masinii. Inclus in U. U - Alfabetul intern al masinii. U trebuie sa il includa pe V pentru a putea recunoaste fiecare caracter. Insa, poate avea caractere in plus, de exemplu separatori cum ar fi "#". q0 - Starea initiala. Evident, unica si apartine lui Q. F - Starile finale. Evident, aceasta multime face parte din Q. B - Caracterul "blank". d - Functia de tranzitie. d : (Q\F) x U -> Q x (U\{B}) x {L,R} 2. Masina Turing nedeterminista cu o banda: M = (Q, V, U, d, q0, F, B) Singura diferenta apare la functia de tranzitie: Q x (U\{B}) x {L,R} d : (Q\F) x U -> 2 3. Masina Turing determinista cu n benzi: M = (n, Q, V, U, d, q0, F, B) n n n d : (Q\F) x U -> Q x (U\{B}) x {L,R} 4. Masina Turing nedeterminista cu n benzi: M = (n, Q, V, U, d, q0, F, B) n n n Q x (U\{B}) x {L,R} d : (Q\F) x U -> 2 Relatii: 1. Toate cele 4 modele de calcul prezentate sunt echivalente. Formal, acest lucru inseamna: 1. Oricare din aceste masini, privite ca dispozitive de acceptare, recunosc limbaje generate de aceeasi gramatica: Limbaje recursiv enumerabile, generate de gramatica de tipul 0. 2. Oricare din aceste masini, privite ca dispozitive de calcul, pot calcula orice functie din clasa R ( probleme decidabile, echivalenta cu limbajele recursive, adica pentru orice intrare finita, masina se va opri ). 2. Teoreme care arata relatiile intre masinile Turing.
1. Orice masina Turing, M, cu n benzi, poate fi simulata cu o masina
Turing, M`, cu o singura banda. In plus, daca M este determinista atunci si M` este determinista. 2. Orice masina Turing nedeterminista cu o banda poate fi simulata de o masina Turing cu 3 benzi. Demonstratii: Teorema 1: Orice masina Turing, M, cu n benzi, poate fi simulata cu o masina Turing, M`, cu o singura banda. In plus, daca M este determinista atunci si M` este determinista. Idee: Se construieste o masina M`, cu o banda "foarte lata". Fiecare celula a acestei benzi poate fi vazuta ca un vector, asezat pe verticala ( dar vectorul este de fapt un singur simbol! ). Acest "vector" are 2*n elemente, unde n este numarul de benzi ale masinii initiale, M. Elementele de index par din vector reprezinta simbolul de pe banda aferenta, iar elementele de pe pozitiile impare sunt 0 sau 1 si reprezinta pozitia capului de citire ( marcat priin 1 ). Aceasta notatie ne permite sa "mimam" M cu M`. Exista un numar finit de vectori, adica de simboluri ale lui M` Pentru fiecare miscare a lui M, M` face urmatoarele lucrui: Faza 1: 1. Pozitionam capul de citire pe prima celula ( vazuta ca vector ) 2. Memoreaza starea si apoi simbolurile de pe pistele de ordin par, care sunt deasupra lui 1 pe pistele de ordin impar ( adica simbolurile curente a lui M ). Faza 2: 3. Aplicand functia de tranzitie, M`, prin mai multe miscari isi va modifica banda astfel incat sa devina identica cu a lui M. Teorema 2: Orice masina Turing nedeterminista cu o banda poate fi simulata de o masina Turing cu 3 benzi. Idee: Practic, efectuez backtracking. Consider M o masina Turing nedeterminsta. Notez cu w multimea configuratiilor posibile ale lui M: w = {(q,a,s,b,d) | q stare nefinala, s stare, a simbol, b simbol diferit de blank, d directia, L sau R } (q,a,s,b,d) - Din starea q, citind a, trec in starea s, scriu b si merg in directia d.
Evident, w este o multime finita si poate fi ordonata lexicografic.
Ce va face M`: - Pe banda 1, are sirul de intrare, configuratia initiala. - Copiaza continutul lui B1 pe B3 - Scrie pe B2 primul element din w. 1. Citeste simbolul curent de pe B2 ( va fi ceva de genul qaq`bd ) 2. Verifica daca se afla in starea q`. 2.1. Daca nu, efectureaza R, adica pasul de retur. 3. Verifica daca simbolul citit de pe B1 este a. 4. Scrie b peste a. 5. Schimba starea in q`. 6. Deplaseaza capul de pe B1 in directia d. 7. Deplaseaza capul de citire de pe B2 la dreapta. Se va relua de la pasul 1 daca exista un simbol pe B2. Daca nu, se efectueaza R, pasul de intoarcere. R. Copiaza w de pe B3 pe B1. Scrie pe B2 succesorul elementului aflat pe banda. Intra in q0.