0 Daumen
245 Aufrufe

Aufgabe:

Konstruieren Sie die folgenden Turing-Maschinen in Diagrammschreibweise:

(a) Mult, die zwei Zahlen \( n \) und \( m \) multipliziert, d.h
\( s,\left.\left.\#\right|^{n} \#\right|^{m} \underline{\#} \vdash_{\text {Mult }}^{*} h,\left.\#\right|^{n \cdot m} \underline{\#} . \)

(b) Compare, die zwei Zahlen \( n \) und \( m \) vergleicht und genau dann hält, wenn diese gleich sind, d.h.
\( s,\left.\left.\#\right|^{n} \#\right|^{m} \# \vdash_{\text {Compare }}^{*} h, \ldots \text { gdw } n=m \text {. } \)

(c) \( M_{1} \), die \( L_{1} \) akzeptiert mit \( L_{1}=\left\{\left.\right|^{z}: z\right. \) ist eine dritte Potenz und \( \left.z \neq 1\right\} \).

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

*Teil (a): Mult - Multiplikation zweier Zahlen \( n \) und \( m \)*

Ziel: Multiplizieren \( n \) und \( m \), dargestellt als \(\#^n \#^m\).

*Zustände und Arbeitsalphabet:*

- \(q_{s}\): Startzustand
- \(q_{copy}\): Kopieren von m Nullen
- \(q_{mark1}\): Markieren der ersten Stelle von \(n\)
- \(q_{move\_back1}\): Zurück zu den markierten Stellen
- \(q_{dec_n}\): Dekrementieren der n Nullen
- \(q_{halt}\): Haltzustand

*Beschreibung der Zustandsübergänge:*

1. Zustand \(q_{s}\):
- \(q_s, \# \rightarrow q_{copy}, \#, R\)

2. Zustand \(q_{copy}\):
- \(\# \rightarrow q_{copy}, \#, R\)
- \(\underline{\#} \rightarrow q_{mark1}, \#, L\)

3. Zustand \(q_{mark1}\):
- \(\# \rightarrow q_{mark1}, \#, L\)
- \( \Box \rightarrow q_{move\_back1}, X, R\)

4. Zustand \(q_{move\_back1}\):
- \(X \rightarrow q_{move\_back1}, X, R\)
- \(\underline{\#} \rightarrow q_{dec_n}, \underline{\#}, L\)

5. Zustand \(q_{dec_n}\):
- \(X \rightarrow q_{dec_n}, \#, L\)
- \(\Box \rightarrow q_{halt}, \#, R\)

*Teil (b): Compare - Vergleich zweier Zahlen \( n \) und \( m \)*

Ziel: Vergleichen \( n \) und \( m \), dargestellt als \(\#^n \#^m\).

*Zustände und Arbeitsalphabet:*

- \(q_s\): Startzustand
- \(q_{check}\): Überprüfen, ob \(n\) und \(m\) übereinstimmen
- \(q_{true}\): Zustand, falls \(n = m\)
- \(q_{false}\): Zustand, falls \(n \neq m\)

*Beschreibung der Zustandsübergänge:*

1. Zustand \(q_s\):
- \(\# \rightarrow q_{check}, \#, R\)

2. Zustand \(q_{check}\):
- \(\# \rightarrow q_{check}, \#, R\)
- \(X \rightarrow q_{true}, X, R\)
- \(\Box \rightarrow q_{false}, \#, L\)

3. Zustand \(q_{true}\):
- Zustand akzeptiert, falls \(n = m\)

4. Zustand \(q_{false}\):
- Zustand akzeptiert, falls \(n \neq m\)

*Teil (c): \(M_1\) - Erkennung dritter Potenzen*

Ziel: Erkennen dritter Potenzen, \(|^z\) mit \(z = k^3\).

*Zustände und Arbeitsalphabet:*

- \(q_s\): Startzustand
- \(q_{count}\): Zählen der Nullen
- \(q_{dec}\): Dekrementieren der Nullen
- \(q_{check3}\): Überprüfen, ob \(z\) eine dritte Potenz ist
- \(q_{accept}\): Zustand, falls \(z\) eine dritte Potenz
- \(q_{reject}\): Zustand, falls \(z\) keine dritte Potenz

*Beschreibung der Zustandsübergänge:*

1. Zustand \(q_s\):
- \(| \rightarrow q_{count}, |, R\)

2. Zustand \(q_{count}\):
- \(| \rightarrow q_{count}, |, R\)
- \(\Box \rightarrow q_{dec}, \#, L\)

3. Zustand \(q_{dec}\):
- \(| \rightarrow q_{check3}, |, L\)

4. Zustand \(q_{check3}\):
- Falls \(z = k^3\), dann \(q_{accept}\)
- Andernfalls \(q_{reject}\)

5. Zustand \(q_{accept}\):
- Zustand akzeptiert, falls \(z\) eine dritte Potenz

6. Zustand \(q_{reject}\):
- Zustand akzeptiert, falls \(z\) keine dritte Potenz

Dadurch haben wir Turing-Maschinen für Multiplikation, Vergleich und Erkennung dritter Potenzen konstruiert.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community