1. Scrieți o MT care să decidă $ L_1 = \{ 0^{2^n} \mid n \ge 0 \}$

Mașina funcționează astfel:

  1. merge de la stânga la dreapta marcând cu X zerouri din doi în doi
  2. dacă a găsit un singur 0 acceptă
  3. dacă a găsit un număr impar de 0 respinge
  4. întoarce capul de citire pe primul simbol și repetă procesul

Toate celulele goale ar trebui interpretate ca tranziții către $ q_{reject}$.

0 X #
init (check, #, R)
check (skip, X, R) (check, X, R) ($ q_{accept}$, #, R)
skip (mark, 0, R) (skip, X, R) (rewind, #, L)
mark (skip, X, R) (mark, X, R)
rewind (rewind, 0, L) (rewind, X, L) (init, #, R)

2. Scrieți o MT care să decidă: $ L_2 = \{ a^nb^mc^nd^m \mid n, m \ge 0 \}$

Următorul tabel descrie o mașină care întâi marchează a-uri și c-uri în perechi, apoi trece la a marca b-uri și d-uri. Toate celule goale ar trebui interpretate ca tranziții către $ q_{reject}$.

a b c d A B C D #
find_a (find_c, A, R) (find_d, B, R) (check_no_cs, C, R) ($ q_{accept}$, #, R)
find_b (find_d, B, R) (check_no_ds, C, R) (check_no_ds, D, R)
find_c (find_c, a, R) (find_c, b, R) (rewind_a, C, L)
find_d (rewind_b, D, L) (find_d, C, R) (find_d, D, R)
rewind_a (rewind_a, a, L) (rewind_a, b, L) (find_a, A, R) (rewind_a, C, L)
rewind_b (rewind_b, b, L) (find_b, B, R) (rewind_b, C, L)
check_no_cs (check_no_cs, C, R) ($ q_{accept}$, #, R)
check_no_ds (check_no_ds, C, R) (check_no_ds, D, R) ($ q_{accept}$, #, R)