utm

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Loading



Universelle Turingmaschine

(1) Verwenden Sie kfG Edit aus AtoCC, um die folgende kontextfreie Grammatik G für die Sprache der TM-Codierungen zu definieren.




(2) Als Beispiel betrachten wir die Turingmaschine

$M = (\{q_{0},q_{1},q_{2}\},\{\text{0},\text{1}\},\{\$,\text{0},\text{1}\},\delta,q_{0},\$,\{q_{0},q_{1}\})$

Tm-codierung nka.jpg

Tm-codierung nka transition.jpg

Verwenden Sie AutoEdit (aus AtoCC) und simulieren Sie die Anwendung von $M$ auf diverse Eingabewörter. Darunter sollte es Wörter $w$ geben, für die $M(w)$

  • in einem Endzustand stoppt ($\epsilon$, 0, 1, 0101010110),
  • in einem Nicht-Endzustand stoppt (11, 111, 1111),
  • nicht stoppt (10).

Schauen Sie sich auch den Übergangsgraph von $M$ an.




(3) Kodieren Sie $M$ aus dem Beispiel per Hand, indem Sie die folgenden Kodierungsregeln befolgen:

Symbol Kodierung
0 1
1 11
B 111
$q_0$ 1
$q_1$ 11
$\vdots$ $\vdots$
$q_n$ $1^{n+1}$
L 1
R 11
N 111


Zusätzlich müssen die Endzustände definiert werden.

Daraus ergibt sich die folgende Kodierung $\langle M \rangle$ :

1 0 11 0 11 0 11 0 11 0 11 0 1 0 1 0 1 0 1 0 11 0 11 0 111 0 11 0 11 0 111 0 11 0 1 0 11 0 1 00 1 0 11



(4) Als nächstes soll ein Compiler entwickelt werden, der ein syntaktisch korrektes Wort aus $L(G)$, also eine korrekte TM-Codierung, in eine TM in der AtoCC-Repräsentation übersetzt.

(a) Die reduzierte Grammatik ohne die Regel $Trenner -> 0 0$ da es sonst zu shift-reduce-Konflikten kommen kann.

(b) Struktur des Zieldokuments mit weggelassenen Layout-Eigenschaften

(c) Beschreiben und Erzeugen des Compilers

Persönliche Werkzeuge