This is an old revision of the document!
Mașina Turing
Simulatoare de Mașini Turing
Simulatoarele de Mașini Turing sunt unelte foarte utile pentru vizualizarea modului de lucru al unei mașini. Fiecare simulator vine cu propriul său format de input, deci citiți cu atenție specificația.
turingmachinesimulator.com
Un exemplu ușor de folosit este acesta. Mașina Turing de mai sus rescrisă în formatul dorit arată așa:
name: Binary increment init: q1 accept: q3 q1,0 q1,0,> q1,1 q1,1,> q1,_ q2,_,< q2,0 q3,1,- q2,1 q2,0,< q2,_ q3,1,-
Ștergeți tot textul care apare, înlocuiți-l cu descrierea mașinii și apăsați compile. Va apărea o căsuță de input în care puteți scrie cuvântul care va fi inițial pe bandă; apoi apăsați play.
jflap
JFLAP este un program educațional în Java, dezvoltat pentru ilustrarea mai multor concepte de bază din computer science; îl veți găsi util și în anul 3, la Limbaje Formale și Automate. Pentru a face rost de el, completați formularul din secțiunea “Get JFLAP”. Apoi deschideți programul, selectați “Turing Machine”. Aici puteți să definiți propria mașină sub formă de graf sau să deschideți una (File → Open). Mașina Turing de mai sus în format JFLAP:
Exerciții
În toate exercițiile convenția este că la începutul rulării, pe bandă se află doar inputul (restul celulelor sunt goale), iar capul de citire e poziționat pe cel mai din stânga simbol.
Pentru exercițiile care menționează că inputul este un număr, acesta e fie numărul zero, fie începe cu o cifră diferită de 0. Cifrele numărului sunt scrise de la stânga la dreapta.
- Scrieți o Mașină Turing care primește un șir binar și verifică dacă începe și se termină cu simboluri distincte (e.g. 100110110).
- Scrieți o Mașină Turing care primește un șir binar și verifică dacă are lungime impară și simbolul din mijloc este 0 (e.g. 101100011).
- Rezolvați primele două exerciții pentru input în baza 10.
- Scrieți o Mașină Turing care primește un șir binar și lasă pe bandă complementul lui (e.g. “100110100” → “011001011”)
- Scrieți o Mașină Turing care curăță toată banda (atât la stânga cât și la dreapta) și apoi lasă scris doar “1”.
- Scrieți o Mașină Turing care inversează cuvântul primit pe bandă.
- Scrieți o Mașină Turing care primește un șir de “X”-uri și verifică dacă lungimea acestuia este o putere a lui 2.
- Scrieți o Mașină Turing care primește un șir de paranteze “(”, “)” și verifică dacă sunt echilibrate.
- Scrieți o Mașină Turing care primește un număr în baza 2 și verifică dacă e divizibil cu 5.
- Scrieți o Mașină Turing care primește un cuvânt binar, găsește primul simbol “0” și inserează un “1” în stânga lui (deci tot ce apare la dreapta va trebui mutat cu o poziție).
- Scrieți o Mașină Turing care primește două numere în baza 2, big-endian, separate de un # și lasă pe bandă suma lor (e.g. “1011#11001” → “100100”).