Die Mathe-Redaktion - 22.06.2018 05:24 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 239 Gäste und 4 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von Bilbo
Informatik » Theoretische Informatik » Turingmaschine
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Turingmaschine
werdas34
Junior Letzter Besuch: in der letzten Woche
Dabei seit: 28.04.2018
Mitteilungen: 12
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-05-25 16:14


Hallo,
ich soll als Aufgabe für die Uni eine Turingmaschine schreiben, die zwei Binärzahlen der Größe vergleicht.
Die Binärzahlen werden durch ein x getrennt. (101x110)
Die Turingmaschine hat keine Einschränkung im Bezug auf das Alphabet, hat nur ein Band das unendlich ist und bewegt den Kopf nach Links bzw. Rechts.
Bsp:
101x11 Ausgabe: 101
10x1101 Ausgabe: 1101
101x110 Ausgabe: 110
101x101 Ausgabe: 101

Mein Problem ist, das ich nicht genau weiß wie ich das umsetzen soll.

Zuerst dachte ich, ich wandle beide Zahlen in Unärzahlen um.
11111c101x11c111 (grob)
Problem nur, wenn ich diese Umwandlung mache dann ändere ich die Binärzahl um und kann dann so nicht mehr auf die eigentliche Zahl zurückgreifen, die ich brauche für die Ausgabe. Also müsste ich diese kopieren. Wäre an sich möglich, aber ich glaube viel zu kompliziert.

Alleine anhand vom sehen, erkennt man schon welche Binärzahl größer ist. Es müsste doch irgendwie gehen sich die beiden letzten Ziffern anzusehen, wenn die gleich sind, dann sind sie irrelevant und man sehe sich die nächsten Ziffern an, sind sie nicht gleich dann irgendwas anderes machen. Genaures ist mir dazu noch nicht eingefallen.

Oder habt ihr einen komplett anderen Ansatz der einfach zu realisieren ist. Dann her damit.

Danke
mfg werdas34



  Profil  Quote  Link auf diesen Beitrag Link
Kitaktus
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.09.2008
Mitteilungen: 5376
Aus: Niedersachsen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-05-26 12:09


Es gibt eine Lösung ohne Kopieren. Neben den Buchstaben 0 und 1 braucht man dann noch min. zwei weitere Buchstaben A und B.

Ich gehe davon aus, dass die Zahlen immer mit 1 beginnen, ansonsten müsste man führende 0en in einem ersten Durchlauf durch Bs ersetzen.

Man läuft an den linken Rand der ersten Zahl, merkt sich (durch Zustandswechsel) die erste Ziffer und überschreibt eine 1 durch ein A (und bei weiteren Durchläufen eine 0 durch ein B). Außerdem "merkt" man sich das Zwischenergebnis "gleich".
Dann läuft man nach rechts bis zum x und weiter zur ersten Ziffer der zweiten Zahl. Diese vergleicht man mit der "gemerkten" Ziffer der ersten Zahl. Bei der ersten Ziffer kann nur das Ergebnis "gleich" herauskommen. Später sind aber drei Fälle möglich. Ist das bisherige gemerkte Zwischenergebnis "gleich", dann "merkt" man sich das Zwischenergebnis "größer", wenn die Ziffer der ersten Zahl größer war als die der zweiten. Man merkt sich "kleiner", wenn sie kleiner war und bleibt bei "gleich", wenn beide Ziffern gleich sind. Hat man sich (in einem der vorherigen Durchläufe) schon "kleiner" oder "größer" gemerkt, dann ändert sich nichts.
Außer dem Vergleich überschreibt man noch eine gelesene 1 durch ein A und eine = durch ein B.
Jetzt läuft man wieder nach links bis zum x und weiter bis zur ersten Ziffer der vorderen Zahl. Das ganze Spiel geht wieder von vorne los.
Das wiederholt sich nun so lange, bis die Ziffern einer oder beider Zahlen aufgebraucht sind.
Hat die erste Zahl weniger (mehr) Ziffern als die zweite, dann ist das Ergebnis "kleiner" ("größer") unabhängig vom gemerkten Zwischenergebnis.
Haben beide Zahlen gleichviele Ziffern, dann ist das gemerkte Zwischenergebnis entscheidend.
Nachdem man nun weiß, welche Zahl größer ist, kann man die andere vom Band löschen und bei der anderen As und Bs wieder durch 1 und 0 ersetzen.


Insgesamt ist das für eine Übungsaufgabe aber schon relativ komplex.



  Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 1504
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2018-05-26 12:11


Der Vergleich der letzten Ziffern erscheint sinnvoll.
Du musst dir nur überlegen, wie du die jeweils letzte unverarbeitete Ziffer finden kannst. Man könnte sie bspw. in irgendeiner Form markieren/ersetzen und anschließend wieder zurückverwandeln

[Die Antwort wurde vor Beitrag No.1 begonnen.]


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



  Profil  Quote  Link auf diesen Beitrag Link
werdas34
Junior Letzter Besuch: in der letzten Woche
Dabei seit: 28.04.2018
Mitteilungen: 12
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2018-05-26 14:17


2018-05-26 12:11 - DerEinfaeltige in Beitrag No. 2 schreibt:
Der Vergleich der letzten Ziffern erscheint sinnvoll.
Du musst dir nur überlegen, wie du die jeweils letzte unverarbeitete Ziffer finden kannst. Man könnte sie bspw. in irgendeiner Form markieren/ersetzen und anschließend wieder zurückverwandeln

[Die Antwort wurde vor Beitrag No.1 begonnen.]

Das herausfinden der letzen  noch zu verarbeitenden Zahl sehe ich weniger als Problem. WIe Kitaktus schon sagte kann man 0 in A umwandeln und 1 in B.
Ich dachte ich schaue mir die letze Ziffer an. Ist die gleich Schau ich mir die nächste Ziffer an. Ist bei der linken Zahl ein 1 und rechts eine 0 dann makiert durch eine l als Zwischenpuffer bzw ain r wenn andersherum.
Problem nur:
1110x1011
rechts steht eine 1 links eine 0 also r
beide gleich nichts machen.
rechts steht eine 0 links eine 1 also l
beide gleich nichts machen.
nun wäre die linke Zahl größer aber meine Idee erkennt das nicht so ganz da einmal r und einmal l steht.
Es gibt ja zwei Fälle.
1. Zahl gleich. Dann dürfte auf dem Band als Puffer nichts stehen
2. Zahl ungleich. Dann steht was als Puffer.

Es wäre wahrscheinlich besser, wenn man bei der ersten verschieden Zahl einmal das Zeichen schreibt, dann wenn die fnächste Ziffernpaar kommt was ungleich ist schreibt man es zweimal.
Also bei 1110x1011 würde dastehen.
erstes verschiedene Zeichenpaar r
gleich
zweites verschiedene Zeichenpaar ll
gleich

Nur hab ich das dumpfe Gefühl, dass so wie ich das denke es Zahlenpaare gibt bei denen es nicht funrktionert.

Wäre dennoch viel was man screiben müsste.

Ich überlege noch vllt fällt mir eine bessere Idee ein.



  Profil  Quote  Link auf diesen Beitrag Link
werdas34 hat die Antworten auf ihre/seine Frage gesehen.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]