Pentru exercițiile 1,2,3 puteți alege una din următoarele forme de reprezentare: graf de stări, tabel de tranziții, listă de tupluri.

Alternativ, puteți să scrieți descrieri pentru un simulator de Mașină Turing ca să puteți vizualiza ce se întâmplă. De exemplu:

http://www.jflap.org/

https://turingmachinesimulator.com/

(atenție la sintaxa particulară a fiecărui simulator).

1. Scrieți o Mașină Turing care primește ca input un șir binar arbitrar și îl mută mai la dreapta cu două poziții.

Exemplu:

101110110100001##…

devine

##101110110100001##…

2. Scrieți o Mașină Turing care incrementează la nesfârșit un contor binar. Cel mai semnificativ bit este cel mai din stânga. Banda e inițializată cu un singur simbol 0.

3. Scrieți o Mașină Turing care acceptă limbajul $ L = \{ w\_w \mid w \in \{0, 1\}^* \}$

4. Demonstrați că modelul predat la curs (bandă infinită doar la dreapta, într-o tranziție capul de citire se poate mișca doar cu o celulă la stânga sau la dreapta, o singură stare acceptoare și o singură stare rejectoare) este echivalent cu următoarele:

  • O MT cu bandă infinită atât la stânga cât și la dreapta
  • O MT pentru care, într-o tranziție, capul de citire se poate deplasa la stânga sau la dreapta cu o celulă sau poate sta pe loc
  • O MT cu o mulțime de stări de accept și o mulțime de stări de reject.
Pentru fiecare din aceste variante, trebuie să arătați o MT arbitrară cu aceste proprietăți poate fi convertită algoritmic la una ce respectă convențiile de la curs și care acceptă sau decide același limbaj.

5. Demonstrați că un Automat Finit echipat cu o coadă (adică un APD cu coadă, nu cu stivă) recunoaște aceeași clasă de limbaje ca o Mașină Turing.