Turingmaschine binäre Zahlen gerade oder ungerade

Neue Frage »

Auf diesen Beitrag antworten »
Takafumi Turingmaschine binäre Zahlen gerade oder ungerade

Hallo zusammen,

im Studium haben wir gerade das Thema Turingmaschine.
Nun sollen wir ein Programm entwerfen, welches erkennen kann, ob eine binäre Zahl gerade oder ungerade ist. Ist sie gerade, soll eine 1 aufs Band, ist sie ungerade eine 0. Diese Markierungen sollen von der eigentlichen Zahl durch ein frei wählbares Zeichen getrennt werden z.B. #

Jetzt ganz ehrlich, ich habe bei dieser Maschine gerade keinen Plan.
Kann mir da jemand helfen?

Eigentlich muss die Maschine die Zahl doch bloß einlesen und durch 2 teilen oder ist dieser Ansatz schon verkehrt? Ich weiß nicht wieso aber ich steh bei diesem Thema voll auf dem Schlauch. verwirrt

Wäre für Hilfe sehr dankbar
 
Auf diesen Beitrag antworten »
eulerscheZahl

Durch 2 teilen ist zu kompliziert.
Schreibe dir ein paar gerade und ungerade Binärzahlen hin. Fällt dir etwas auf?
Auf diesen Beitrag antworten »
Takafumi

Bei den geraden Zahlen ist die letzte Ziffer immer eine 0
Bei den ungeraden immer eine 1

Meinst du das?
Auf diesen Beitrag antworten »
eulerscheZahl

Genau. Du musst also nur ans Ende der Zahl gehen, ein Trennzeichen schreiben und dann das letzte Bit invertiert kopieren.
 
Auf diesen Beitrag antworten »
Takafumi

Also aus der 0 eine 1 und aus der 1 eine 0

Woher weiß die Maschine wo die Zahl endet?
Auf diesen Beitrag antworten »
eulerscheZahl

Du hast einen Zustand 1 (in dem die Turingmaschine startet), der das gelesene Zeichen wieder hinschreibst (also nichts verändert) und den Kopf um eins nach rechts zum Ende der Zahl hin bewegt.
Wenn du das Ende erreicht hast (Blank Symbol), schreibst du dort ein # hin und gehst wieder nach links (Zustand 2) Von da aus geht es je nach gelesenem Zeichen mit Zustand 3 (0 gelesen, also 1 ans schreiben) oder Zustand 4 (1 gelesen, also 0 schreiben) weiter.
Auf diesen Beitrag antworten »
Takafumi

Sorry für die späte Antwort.

Danke damit kann ich die Aufgabe auf jeden Fall abschließen, endlich! Gott
Auf diesen Beitrag antworten »
webmin Bitte um Erklärung

Hallo,
der Beitrag ist zwar schon ein paar Jahre alt, aber betrifft mich gerade auch.
Ich sitze schon seit heute morgen an dieser Aufgabe .. aber ich kapier das einfach nicht.
Theorie ist nicht so mein Ding, wäre es ein Programm in C++ oder C# wäre ich wohl gleich fertig damit.

Ich begreife einfach nicht wie ich das mit dem Trennzeichen realisieren soll.

Bisher bin ich etwa so weit:

Eingabe wurde auf das Band geschrieben, gehe mit dem Lesekopf nach rechts bis Leere Zelle gefunden, dann Schreibe Trennzeichen .... weiter weiss ich aber auch nicht, eigentlich dann wieder nach links, zeichen lesen, nach rechts, schreiben, aber dann ist ja das trennzeichen weg.

oder anderes Konzept:

Eingabe binäre Zahl (hier gehe ich davon aus dass die Zahl Ziffer für Ziffer auf das Band geschrieben wird, und der Kopf sich auf der letzten Zahl befindet) dann wenn Zahl=1 Schreibe 1, Gehe nach Rechts, nächster zustand, aber auch hier begreif ich es einfach nicht wie ich das mit dem Trennzeichen machen soll ..

Hab auch schon versucht das ganze mit einem Simulator nachzubilden damit ich es verstehen kann, aber jeder hat irgendwie eine andere Syntax, da steig ich noch weniger durch ...

Kann mir bitte jemand auf die Sprünge helfen ? Ich möchte keine Lösung, aber vielleicht kann erkennt jemand aus meinem Geschreibsel wo mein Denkfehler ist.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »