Zuhause Persönliche Finanzen Java Programming Challenge: Erstellen einer einfachen Turing-Maschine - Dummies

Java Programming Challenge: Erstellen einer einfachen Turing-Maschine - Dummies

Video: Category Theory 1.1: Motivation and Philosophy 2025

Video: Category Theory 1.1: Motivation and Philosophy 2025
Anonim

Im Jahr 1936 erfand der Mathematiker Alan Turing eine täuschend einfache Art von Rechenmaschine, genannt Turing Machine . Turing hat nie eine Turingmaschine gebaut. Stattdessen war es ein hypothetisches Gerät, das er zusammengestellt hatte, um beim Studium der Berechenbarkeit zu helfen - das heißt, ob komplexe Probleme durch Rechenschritte gelöst werden können und ob eine Maschine entwickelt werden kann, die jedes berechenbare Problem lösen kann. (Wenn Sie mehr über die Geschichte oder Anwendung von Turing-Maschinen erfahren möchten, finden Sie viele Artikel über sie im Internet. Verwenden Sie einfach einen beliebigen Suchanbieter, um nach "Turing machine" zu suchen.)

Der Betrieb einer Turingmaschine ist einfach. Es enthält nur ein paar grundlegende Konzepte:

  1. Das Herz einer Turing-Maschine ist ein unendlich langes Band, das in Zellen unterteilt ist, auf die Informationen geschrieben werden können.

    In der tatsächlichen Praxis kann natürlich kein physikalisches Gerät eine unendliche Anzahl von Zellen haben. Aber in der Theorie einer Turing-Maschine ist das Band unendlich.

  2. Die Information, die auf jede Zelle geschrieben werden kann, ist auf ein einzelnes Symbol beschränkt, wie z. B. eine 0 oder eine 1. Die Information kann jedoch durch die kombinierten Werte von aufeinander folgenden Zellen dargestellt werden.

    Zum Beispiel könnten Sie numerische Werte durch aufeinanderfolgendes Vorkommen des Symbols 1, gefolgt von einer 0, repräsentieren. Somit repräsentieren 1110 den Wert 3, da es drei Einsen gibt; 111111011110 könnte die Werte 6 und 4 darstellen (sechs Einsen, gefolgt von einer Null, gefolgt von vier Einsen, gefolgt von einer weiteren Null).

  3. Die Turing-Maschine enthält einen Lese-Schreib-Kopf , der immer über einer (und nur einer) der Zellen des Bandes positioniert ist.

    Dieser Schreib-Lese-Kopf kann das Symbol lesen, das in der Zelle enthalten ist. Es kann auch das Symbol löschen und, falls gewünscht, ein neues Symbol an seine Stelle schreiben. Die Zelle, über der der Lese-Schreibkopf positioniert ist, wird als die aktuelle Zelle oder die Kopfzelle bezeichnet.

  4. Das Band ist motorisiert, so dass es jeweils um eine Zelle nach links oder rechts unter den Schreib-Lese-Kopf bewegt werden kann.

  5. Die Maschine hat einen -Zustand , der durch ein Symbol wie einen Buchstaben des Alphabets dargestellt wird.

Wie bei jedem Computer kann auch eine Turing-Maschine programmiert werden. Ein Programm für eine Turing-Maschine ähnelt jedoch nicht im entferntesten einem Java-Programm.

Stattdessen ist ein Turing-Maschinen-Programm einfach ein Satz von Regeln, die ausgewertet werden, um zu bestimmen, welche Aktionen die Maschine ausführen soll. Jede Regel identifiziert eine Aktion, die ausgeführt werden soll, wenn die aktuelle Zelle ein bestimmtes Symbol enthält und sich die Maschine in einem bestimmten Zustand befindet.Beispielsweise kann eine Regel bestimmen, was zu tun ist, wenn die aktuelle Zelle eine 1 enthält und der Maschinenzustand "a" ist.

Jede Regel kann eine von drei Aktionen angeben:

  • Löscht die aktuelle Zelle oder schreibt einen neuen Wert in die Zelle.

  • Bewegen Sie das Band um eine Zelle nach links oder eine Zelle nach rechts.

  • Ändern Sie den Status der Maschine in einen neuen Zustand.

Zum Beispiel könnte eine Regel festlegen, dass, wenn die aktuelle Zelle eine 1 enthält und der Maschinenzustand "a" ist, die Turing-Maschine eine 0 in die aktuelle Zelle schreiben, das Band um eine Zelle nach rechts verschieben und ändern soll. der Maschinenzustand auf "b. "

Zusätzlich zu einem Programm kann das Band der Turing-Maschine einen Anfangswert haben.

Das ist es; das ist die gesamte Definition einer Turingmaschine. Trotz ihrer Einfachheit kann eine Turing-Maschine alles von 2 + 2 bis zur Flugbahn einer Rakete zum Mars berechnen.

Für diese Herausforderung müssen Sie eine sehr einfache Turing-Maschine erstellen. Um das Problem zu vereinfachen, akzeptieren Sie die folgenden Einschränkungen für diese Version der Turing-Maschine:

  • Das Band muss nicht unendlich sein. Sie können jedes Java-Feature verwenden - ein Array, eine Zeichenfolge oder eine Sammlung -, um das Band darzustellen.

    (Beachten Sie, dass das Band zwar nicht unendlich sein muss, Sie sich aber leicht von der aktuellen Zelle nach links oder rechts bewegen müssen. Wenn Sie ein Array verwenden, beginnen Sie nicht mit der aktuellen Zelle am Element. 0, weil Sie sich von dort aus nicht mehr nach links bewegen können.

  • Eine Zelle kann leer sein oder einen beliebigen Buchstaben oder eine Zahl enthalten. Eine leere Zelle wird durch einen Unterstrich dargestellt.

  • Der Status kann ein einzelnes alphanumerisches Zeichen sein.

  • Das Programm für die Turingmaschine wird aus einer Textdatei gelesen. Diese Textdatei enthält eine Regel pro Zeile. Jede Regel enthält fünf durch Leerzeichen getrennte Zeichen, die die Details für jede Regel wie folgt angeben:

    • Aktuelle Zelle: Der Wert, der für die aktuelle Zelle abgeglichen werden soll.

    • Aktueller Status: Der Wert, der für den aktuellen Maschinenzustand angepasst werden soll.

    • Neue Zelle: Der Wert, der in die neue Zelle geschrieben werden soll. _ um die Zelle zu löschen, * um die Zelle unverändert zu lassen.

    • Bewegung: L oder R, um das Band nach links oder rechts zu bewegen; H um das Programm anzuhalten; ein anderes Zeichen, um das Band nicht zu bewegen.

    • Neuer Status: Der neue Wert für den Maschinenzustand.

  • Zum Beispiel sagt das Folgende, dass, wenn die aktuelle Zelle 1 ist und der Status "a" ist, die aktuelle Zelle auf 0 gesetzt werden sollte, das Band um eine Zelle nach links verschoben wird und der Status auf " b: "

    1 a 0 L b
    
    • Die erste Zeile der Textdatei sollte eine Zeichenfolge enthalten, die die Anfangswerte für das Band darstellt.

    • Die zweite Zeile der Textdatei sollte den Anfangsstatus enthalten.

Die folgende Abbildung zeigt die Benutzeroberfläche für die Beispiellösung. Es steht Ihnen jedoch frei, ein beliebiges Benutzeroberflächendesign für dieses Projekt zu verwenden.

Eine potenzielle Turing Machine-Schnittstelle.

Hier einige Überlegungen zum Erstellen der Schnittstelle:

  • Wert und aktuelle Zelle: Mindestens sollten Sie den Wert des Bandes anzeigen und die aktuelle Zelle markieren.

  • Tools und Anzeige: Sie sollten auch die Möglichkeit haben, die Ausführung des Programms zu starten, anzuhalten oder neu zu starten. Außerdem sollten Sie die Ergebnisse der einzelnen Schritte des Programms anzeigen.

  • Programmausführung: Sie können dem Benutzer die Möglichkeit geben, das geladene Programm von Anfang bis Ende auszuführen, und dem Benutzer die Möglichkeit zu geben, das Programm durch Klicken auf eine Schaltfläche schrittweise auszuführen, um jeden Schritt auszuführen. des Programms.

  • Laden des Programms : Sie sollten Schaltflächen bereitstellen, mit denen der Benutzer ein Turing Machine-Programm aus einer Textdatei laden kann und der Benutzer die Maschine zurücksetzen kann, um das Programm erneut auszuführen.

Hier ein Tipp zum Implementieren des unendlichen Bandes: Verwenden Sie drei Stringvariablen, um die Bandwerte zu halten, einen für das in der aktuellen Zelle gespeicherte einzelne Zeichen, einen zweiten für die Zeichen links von der aktuellen Zelle und einen dritten für die Zeichen rechts von der aktuellen Zelle. Sie können die aktuelle Zelle dann einfach nach links oder rechts verschieben, indem Sie die richtige Kombination aus Verkettung und Substring-Operationen verwenden.

Die Lösung für diese Herausforderung finden Sie auf der Registerkarte Downloads der Produktseite Java All-in-One für Dummies, 4th Edition.

Viel Glück!

Java Programming Challenge: Erstellen einer einfachen Turing-Maschine - Dummies

Die Wahl des Herausgebers

Web Marketing: Warum Suchmaschinen existieren - Dummies

Web Marketing: Warum Suchmaschinen existieren - Dummies

Wenn Sie verstehen, warum Suchmaschinen existieren, können sie für Sie in Ihrem Web-Marketing-Geschäft arbeiten. Also, hier ist eine kurze Lektion, warum Suchmaschinen existieren und wie Sie sie nutzen können, um Geld zu verdienen. Suchmaschinen liefern Relevanz. Relevanz bedeutet, dass Besucher auf Suchergebnisse klicken und zufrieden sind mit ...

Was sind Tür- und Informationsseiten? - dummies

Was sind Tür- und Informationsseiten? - dummies

Eine Doorway-Seite wird nur als Zugang von einer Suchmaschine zu Ihrer Website erstellt. Doorway-Seiten werden manchmal als Gateway-Seiten und Geisterseiten bezeichnet. Die Idee besteht darin, hoch optimierte Seiten zu erstellen, die von Suchmaschinen aufgenommen und indiziert werden und die mit etwas Glück gut ranken und somit den Traffic auf eine ...

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Eine Weiterleitung ist das automatische Laden einer Seite ohne Benutzereingriff. Sie klicken auf einen Link, um eine Webseite in Ihren Browser zu laden, und innerhalb von Sekunden verschwindet die geladene Seite, und eine neue wird angezeigt. Designer erstellen häufig Seiten für Suchmaschinen - optimierte, schlüsselwortreiche Seiten -, die Besucher auf die ...

Die Wahl des Herausgebers

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

, Wenn Kunden wissen, dass sie direkt mit ein Geschäft in den sozialen Medien, können sie aus einer beliebigen Anzahl von Gründen mit ihnen in Verbindung treten. Aber sobald sie merken, dass ein Problem mit dem Kundenservice oder einer Produktfrage über einen einzigen Tweet oder Beitrag angesprochen werden kann, ist es wahrscheinlicher, dass sie mit dem Unternehmen Geschäfte machen.

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Die heutige Technologie verändert die Art und Weise, wie wir Geschäfte machen blitzschnell. Auch der Social-Media-Handel bewegt sich blitzschnell, aber durch die Beobachtung von Erwähnungen und Fragen an die Community können Sie einen Eindruck davon bekommen, wie Ihr Markt über bevorstehende Veränderungen denkt. Auch andere Posts können Ihnen helfen, kritisches Feedback aus der Öffentlichkeit zusammenzustellen ...

Manage Social Media Commerce mit HootSuite - dummies

Manage Social Media Commerce mit HootSuite - dummies

HootSuite ist ein Social Media Management System zur Umsetzung von Outreach und Überwachung in sozialen Netzwerken über ein einziges webbasiertes Dashboard. Für Unternehmen wird HootSuite am häufigsten von Social-Media-Teams mit mehreren Agenten verwendet, aber auch viele Einzelanwender mögen es. Wenn Sie auf der Suche nach einer robusten Plattform sind, die alles an einem Ort hält, ...

Die Wahl des Herausgebers

Die 5 Kornsterne der Mittelmeer - Dummies

Die 5 Kornsterne der Mittelmeer - Dummies

Die Mittelmeerdiät ist in der Praxis des Habens begründet ein Vollkorn zu jeder Mahlzeit. Und nein, das bedeutet nicht, eine ganze Platte Vollkornspaghetti mit Fleischsauce zum Abendessen zu essen. Stattdessen machen die Menschen im Mittelmeerraum ihr Getreide zur Beilage oder schaffen durch die Zugabe von magerem Eiweiß mehr Gleichgewicht ...

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Der Verzehr von sieben bis zehn Portionen Obst und Gemüse pro Tag, wie sie für die mediterrane Ernährung empfohlen werden, mag sehr viel erscheinen, aber es muss keine so große Herausforderung sein. Wenn Sie nicht die Früchte und das Gemüse lieben, die spezifisch mit der Mittelmeerdiät verbunden sind, ist das okay! Essen Sie jede Art von Obst oder Gemüse, die Sie ...

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Sie haben vielleicht gedacht, dass der Oregano und Basilikum in Ihrer Spaghetti-Sauce lieferte nur einen deutlichen italienischen oder mediterranen Geschmack, aber diese kleinen Kräuter sind Pflanzen, was bedeutet, dass sie alle Arten von gesundheitlichen Vorteilen haben, die einen großen Einfluss auf Ihre allgemeine Gesundheit haben können. Einfache Gewürze wie Ingwer und Oregano enthalten Phytochemikalien, ...