Zwei-Zustands-Turingmaschine für die Klammeranpassung

9

Im College haben wir etwas über die Theorie der Berechnung im Allgemeinen und Turing-Maschinen im Besonderen gelernt. Eines der großartigen theoretischen Ergebnisse ist, dass Sie auf Kosten eines potenziell großen Alphabets (Symbole) die Anzahl der Zustände auf nur 2 reduzieren können.

Ich habe nach Beispielen für verschiedene Turingmaschinen gesucht und ein allgemeines Beispiel ist der Parenthesis Matcher / Checker. Im Wesentlichen wird geprüft, ob eine Folge von Klammern, z. B. (()()()))()()()ausgeglichen ist (das vorherige Beispiel würde 0 für unsymmetrisch zurückgeben).

Versuchen Sie, wie ich kann, ich kann nur erreichen, dass dies eine Drei-Zustands-Maschine ist. Ich würde gerne wissen, ob jemand dies auf das theoretische Minimum von 2 reduzieren kann und wie ihre Herangehensweise / Zustände / Symbole waren!

Zur Verdeutlichung sind die Klammern zwischen leerem Band "eingeklemmt", so dass im obigen Beispiel - - - - - - - (()()()))()()() - - - - - - -die Eingabe auf dem Band wäre. Das Alphabet würde (, ), 1, 0, -, und der *halt*Staat zählt nicht als Staat.

Als Referenz ist der Drei-Zustands-Ansatz, den ich habe, wie folgt: Beschreibung der Zustände:

 State s1: Looks for Closing parenthesis

 State s2: Looks for Open parenthesis

 State s3: Checks the tape to ensure everything is matched

 Symbols: ),(,X

Übergänge Aufgeführt als:

Action: State Symbol NewState WriteSymbol Motion
// Termination behavior
Action: s2 - *halt* 0  -
Action: s1 -  s3    -  r

//Transitions of TM
Action: s1 (  s1  (   l
Action: s1 )  s2  X  r
Action: s1 X  s1  X  l
Action: s2 ( s1 X  l
Action: s2 X  s2 X r
Action: s3 (  *halt* 0 -
Action: s3 X  s3     X r
Action: s3 -  *halt* 1 -

Vergib die informelle Art, das alles aufzuschreiben. Ich lerne immer noch die theoretischen Konstrukte dahinter.

Vier Spaß
quelle
Dürfen wir ein größeres Alphabet verwenden?
Raphael
@Raphael Nach dem theoretischen Ergebnis kann man Zustände gegen Alphabet austauschen und umgekehrt. Wenn Sie also die Zustände auf zwei reduzieren, müssen Sie höchstwahrscheinlich ein größeres Alphabet verwenden. Also ja, die kurze Antwort lautet: Das Alphabet kann beliebig groß sein
Four_FUN
Ich denke, in einem Zwei-Band-TM kann dies ohne zusätzliche Symbole und gemacht werden.
Karolis Juodelė
@Four_FUN bist du vom MIT?

Antworten:

8

Nur ein "Quellcode" -Kompendium von Raphaels Antwort: Dies ist eine Arbeitsversion, die denselben Trick verwendet (im Zustand q1) und das Bandalphabet hat:
_ ( ) [ { / \ (wobei das anfängliche leere Symbol ist)_

q0:  _ -> accept  // accept on empty string and on balanced parenthesis
     ( -> {,R,q1  // mark the first open "(" with "{" and goto q1
     ) -> reject  // reject if found unbalanced ")"
     \ -> /,L,q0  // go left
     / -> \,R,q0  // go right

q1:  ( -> [,R,q1  // replace "(" with "[" and continue ...
     ) -> /,L,q1  // ... until first ")", replace it with "/" and goto left
     [ -> \,R,q1  // found matching "(" bracket, goto right and search for another ")"
     _ -> reject  // no ")" found for the first "{", reject
     { -> \,R,q0  // this must be the last match, goto q0 and check if it is true
     \ -> /,L,q1  // go left
     / -> \,R,q1  // go right

Sie können es bei der Arbeit mit einem Turing-Maschinen-Online-Simulator sehen . Der Quellcode lautet:

0 _ Y r halt
0 ( { r 1
0 ) N r halt
0 \ / l 0
0 / \ r 0
1 ( [ r 1
1 ) / l 1
1 [ \ r 1
1 _ N r halt
1 { \ r 0
1 \ / l 1
1 / \ r 1

Ein letzter Hinweis: Wenn Sie sehen möchten, wie diese Technik an ihre Grenzen gebracht werden kann, lesen Sie (und versuchen Sie zu verstehen :-) den Aufbau der Universal Turing-Maschine mit 2 Zuständen und 18 Symbolen von Y. Rogozhin in "Small Universal Turing" Maschinen "

Vor
quelle
Haben wir nicht entschieden, dass Antworten, die nur Quellcode enthalten, nicht gut für die Informatik sind ? ;)
Raphael
1
@ Raphael: Ich stimme Ihnen zu, aber meine kann wie ein Nachtrag zu Ihrer angesehen werden (das scheint in Ordnung zu sein, auch wenn ich die Details nicht überprüft habe). Ich werde eine Notiz dazu hinzufügen.
Vor dem
1
@ Raphael: Ich habe es nur zum Spaß codiert, um die Bandsymbole zu minimieren, und es "scheint" :-) zu funktionieren, also habe ich beschlossen, es zu posten.
Vor dem
@Vor. Vielen Dank für Ihre zusätzlichen Beiträge zu diesem Problem. Das alles sagt mir, dass ich mehr Übung in diesem Zeug brauche. Vielen Dank, dass Sie Ihren Quellcode trotzdem veröffentlicht haben, obwohl die Theorie genau das war, wonach ich gesucht habe.
Four_FUN
1
@Four_FUN: Die Rogozhin Universal TM (2,18) ist eine Standard-Turing-Maschine (dh abgesehen von der Eingabe enthält das ursprüngliche Band nur leere Symbole), die ein beliebiges 2-Tag-System simuliert (das ein universelles Modell ist). Das 2-Zustands-3-Symbol 1 ist eine schwach Turing-Maschine (das ursprüngliche Band muss mit einer unendlichen Folge eines Musters gefüllt sein), und die Universalität wird "erreicht", indem die zellularen Automaten Regel 110 simuliert werden (die sich als Turing-vollständig erwiesen hat) ). Es gibt einen (behaupteten?) Beweis dafür, dass ein Standard-TM (2,3) nicht vollständig sein kann.
Vor dem
7

Dumme Antwort: Ihr Ergebnis verspricht, dass es eine universelle Turing-Maschine mit zwei Zuständen gibt. Erstellen Sie ein beliebiges TM für die Dyck-Sprache, berechnen Sie den Index und codieren Sie es fest in die Universalmaschine.

{#,(,),x}}ein^ein

  • q0

    )einein^)x^
    )#x^q1

    (^(^x
    )^#

  • q1(^+x^#x^


  1. x
Raphael
quelle
Wenn es Ihnen nichts ausmacht, wenn ich Sie frage, wie genau verspricht meine Lösung ein universelles TM mit zwei Zuständen? (Sehr kluge Lösung übrigens danke für Ihre Eingabe)
Four_FUN
1
@Four_FUN: Weil Sie in Ihrer Frage sagen: "... Eines der großartigen theoretischen Ergebnisse ist, dass Sie auf Kosten eines potenziell großen Alphabets (Symbole) die Anzahl der Zustände auf nur 2 reduzieren können ..." . Sie können also auch eine beliebige Universal Turing-Maschine auswählen und die Anzahl der Zustände auf nur 2 reduzieren. Wenn Sie einige Experimente durchführen, werden Sie auch feststellen, dass es nicht schwierig ist, eine automatische Prozedur zu erstellen, die ein beliebiges TM in ein Äquivalent umwandelt 2 state TM (wenn Sie sich nicht für die Minimierung der Anzahl der Alphabetsymbole interessieren).
Vor dem