Turingmaschine quadrieren

Neue Frage »

Auf diesen Beitrag antworten »
schultz Turingmaschine quadrieren

Hallo Community.

Ich soll eine Turingmaschine konstruieren, die die Funktion f(x)=x^2 simuliert.
D.h wenn ich habe eingaben der form 111 für 3 zum Beispiel und die ausgabe wäre in diesem Fall dann 111111111.
nun weiß ich nicht so recht wie ich das bewerkstellen soll. ich hatte die idee, für jede 1 soviel einsen zu schreiben wie insgesamt vorhanden sind und dann die 1 zu löschen und so weiter. leider weiß ich nicht so ganz wie ich das hinkriegen soll.
hoffe auf hilfreiche antworten
mfg schultz
 
Auf diesen Beitrag antworten »
Karlito

Wenn du deine Eingabe nicht binär kodierst wäre es m.E. günstiger für deine Eingabewörter keine Einsen zu verwenden.

Ich denke auch du kommst besser wenn du die Eingabe binär kodierst oder ist das in der Aufgabenstellung anders gefordert?

Für die binäre Kodierung schau dir die schriftliche Addition von binärzahlen an, dann kannst du damit eine Turingmaschine erstellen, welche das bewerkstelligt.

VG,

Karlito
Auf diesen Beitrag antworten »
schultz

nein die eingabe erfolgt wie gesagt als eine folge von einsen...ist halt von der aufgabenstellung her so gewählt.hast du dazu auch einen ansatz?
Auf diesen Beitrag antworten »
Karlito

Naja, einfach die schrifliche unäre Multiplikation anschauen Augenzwinkern

D.h. wie bei der normalen Multipliation die Zahlen versetzt untereinanderschreiben und dann "addieren". Wobei hier jede einzelne eins in der "treppe" eine eins im ergebnis ist.

Ohne nachzudenken, ob das jetzt elegant ist:

Die Eingabe kopieren (hinter ein Trennzeichen), dann Zustand wechseln in "Rechenzustand", dann Ergebnis hinter weiterem trennzeichen berechnen, indem du das eingabewort hinter die Kopie schreibst, dann von der Kopie immer ein zeichen wegstreichst und dann das eingabewort solange an dein ergebnis anhängst, bis die kopie verschwunden ist...

Je nach aufgabenstellung dann noch aufräumen...

Also exemplarisch an 111² (b= blank, # = trennzeichen):

1. Eingabewort kopieren:
b111b -> b111#111b
2. kopieren bis kopie aufgebraucht
b111#111b ->
b111#11##111b ->
b111#1###111111b ->
b111#####111111111b

Sollte vom ablauf her funktionieren...

VG,

Karlito
 
 
Neue Frage »
Antworten »


Verwandte Themen

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