Sunteți pe pagina 1din 3

2) Masina Turing

Mașinile Turing sunt mecanisme extrem de elementare de dispozitive de prelucrare a simbolurilor


care — în ciuda simplității lor — pot fi adaptate pentru a simula logica oricărui calculator ce poate
fi construit. Modelele au fost descrise în 1936 de către Alan Turing. Deși modelele erau proiectate
inițial pentru a fi fezabile din punct de vedere tehnic, mașinile Turing nu au fost gândite pentru a fi
tehnologii practice de calcul, ci un experiment mental despre limitele calculului mecanic; astfel, ele
nu au fost niciodată construite. Studiul proprietăților lor abstracte este util în informatică și teoria
complexității. O mașină Turing capabilă de a simula orice altă mașină Turing se numește mașină
Turing universală (sau mașină universală). O definiție mai orientată matematic a fost introdusă
de Alonzo Church, ale cărui lucrări din domeniul calculului lambda s-au împletit cu cele ale lui
Turing într-o teorie formală a calculului cunoscută sub numele de Conjectura Church-Turing.
Aceasta postulează că orice problemă de calcul bazată pe o procedură algoritmică poate fi
rezolvată de către o mașină Turing. Deoarece nu se bazează pe o definiție precisă a conceptului de
procedură algoritmică, nu are o formulare matematică. În schimb, este posibil de a se defini o
noțiune de "sistem acceptabil de programare" și de a se demonstra că "puterea de calcul" a unui
asemenea sistem este echivalentă cu cea a unei mașini Turing (se vorbește în acest caz de un
limbaj de programare Turing-complet).

Descriere informală
La origine, conceptul de mașină Turing reprezenta o persoană virtuală executând o procedură bine
definită, schimbând conținutul căsuțelor unui tablou infinit (vizualizat sub forma unei "benzi"
infinite), plasând în aceste căsuțe simboluri luate dintr-un ansamblu finit de simboluri. Pe de altă
parte, această persoană trebuie să memoreze "starea" în care se află sistemul (sistemul "persoană"
poate ocupa un număr finit de "stări"). Procedura poate fi exemplificată de o manieră foarte simplă
printr-o listă de instrucțiuni, de genul : dacă sunteți în starea 42 și dacă simbolul din căsuța pe care
o priviți este '0', atunci înlocuiți acest simbol printr-un '1', treceți în starea 17, și priviți căsuța
alăturată (dreapta sau stânga) .
O mașină Turing este echivalentă cu un automat cu stivă modificat prin relaxarea constrângerii de
last-in-first-out a stivei acestuia. (Interesant este că această relaxare aparent minoră permite
mașinii Turing să execute o largă varietate de calcule, astfel încât ea poate servi ca model pentru
capabilitățile computaționale ale tuturor software-urilor moderne.)
Mai exact, o mașină Turing constă din:
O bandă împărțită în celule aflate una lângă cealaltă. Fiecare celulă conține un simbol dintr-un
alfabet finit. Alfabetul conține un simbol special vid (notat aici cu '0') și unul sau mai multe alte
simboluri. Banda se presupune ca fiind extensibilă arbitrar la stânga și la dreapta, adică mașina
Turing are întotdeauna suficientă bandă pentru a-și efectua calculele. Celulele care nu au fost
scrise anterior se presupune că sunt ocupate cu simbolul vid.
Un cap care poate scrie și citi simboluri pe sau de pe bandă, și care se poate deplasa la stânga sau
la dreapta
Un registru de stare care stochează starea mașinii Turing. Numărul stărilor diferite este
întotdeauna finit și există o stare inițială cu care este inițializat registrul de stare.
O tabelă de acțiuni (sau funcție de tranziție) care spune mașinii ce simbol să scrie, cum să
deplaseze capul ('L' pentru stânga, și 'R' pentru dreapta) și care va fi noua sa stare, date fiind
simbolul citit de pe bandă și starea curentă. Dacă nu există intrare în tabela de acțiuni pentru
combinația curentă de simbol citit și stare a sistemului, atunci mașina se oprește.
De notat că toate componentele mașinii sunt finite; doar cantitatea nelimitată de bandă îi dă
acesteia un volum nelimitat de spațiu.
Definiție formală
Mașină Turing cu o singură bandă
O mașină Turing este de obicei definită ca un 6-tuplu M = (Q,Γ,s,b,F,δ), unde

{\displaystyle Q}  este o mulțime finită de stări

{\displaystyle \Gamma }  este alfabetul finit al simbolurilor de pe bandă

{\displaystyle s\in Q}  este starea inițială

{\displaystyle b\in \Gamma }  este simbolul vid (singurul simbol care are voie să existe pe
bandă în număr nelimitat și singurul care poate fi pe bandă în orice moment)

{\displaystyle F\subseteq Q}  este mulțimea stărilor finale (sau acceptante)

{\displaystyle \delta :Q\times \Gamma \rightarrow Q\times \Gamma \times \{L,R\}}  este o
funcție parțială numită funcția de tranziție, unde L este deplasarea la stânga și R este deplasarea la
dreapta.
Definițiile din literatura de specialitate diferă uneori, pentru a face demonstrațiile mai ușoare sau
mai clare, dar aceasta se face întotdeauna de așa natură încât mașina să-și păstreze puterea
computațională. De exemplu, schimbarea mulțimii {L,R} în {L,R,S}, unde S permite mașinii să stea
pe aceeași celulă a benzii în loc să se deplaseze la stânga sau la dreapta, nu mărește puterea
computațională a mașinii.
Mașină Turing cu k benzi
O mașină Turing cu k benzi poate fi și ea descrisă ca un 6-tuplu M = (Q,Γ,s,b,F,δ), unde
{\displaystyle Q}  este o mulțime finită de stări

{\displaystyle \Gamma }  este alfabetul finit al simbolurilor de pe bandă

{\displaystyle s\in Q}  este starea inițială

{\displaystyle b\in \Gamma }  este simbolul vid

{\displaystyle F\subseteq Q}  este mulțimea stărilor finale (sau acceptante)


{\displaystyle \delta :Q\times \Gamma ^{k}\rightarrow Q\times (\Gamma \times \{L,R,S\})^{k}}

 este o funcție parțială numită funcția de tranziție, unde L este deplasarea la stânga, R este
deplasarea la dreapta, iar S înseamnă nici o deplasare.
De notat că o mașină Turing cu k benzi nu este mai puternică decât o mașină Turing standard.

S-ar putea să vă placă și