Wörter, die das gleiche rechts- und linksassoziative Produkt haben


9

Ich habe begonnen, nicht deterministische Automaten mit dem Buch von Hopcroft und Ullman zu studieren . Ich stecke in einem Problem fest, das ich sehr interessant fand:

Geben Sie einen nicht deterministischen endlichen Automaten an, der alle Zeichenfolgen akzeptiert, die denselben Wert haben, wenn sie von links nach rechts wie von rechts nach links ausgewertet werden, indem Sie gemäß der folgenden Tabelle multiplizieren:

×abcaaacbcabcbca

Wenn wir also die Zeichenfolge , ist das Produkt von links nach rechts und das Produkt von rechts nach links ist( a × b ) × c = a × c = c a × ( b × c ) = a × b = aabc
(a×b)×c=a×c=c
a×(b×c)=a×b=a

Daher sollte für die Automaten nicht akzeptabel sein. Für mich ist es offensichtlich, dass jede Zeichenfolge oder oder eine akzeptable Zeichenfolge ist (ihre rechte und linke Auswertung funktionieren mit denselben Teilzeichenfolgen). Es ist einfach, eine NFA anzugeben, die die Auswertung von links nach rechts beschreibt, aber das Problem ist, dass die Maschine, wenn sie versucht, die Auswertung von rechts nach links zu berechnen , meiner Meinung nach die Länge der Zeichenfolge kennen muss (daher ist unendlicher Speicher erforderlich).a a b b c c abcaabbcc

Wie können also nicht deterministische Automaten von rechts nach links ausgewertet werden, um sie mit der Auswertung von links nach rechts zu vergleichen?

Antworten:


6

Der erste Trick besteht darin, sich die Multiplikationstabelle als Übergangstabelle eines Automaten vorzustellen, wobei jeder Zustand einen Buchstaben in Ihrer Multiplikationstabelle darstellt, sich aber noch keine Gedanken über die Akzeptanz macht. Die Buchstaben links und im Hauptteil der Tabelle sind also tatsächlich Zustände - es wäre genauer, sie als q a , q b , q c zu schreiben , aber ich werde es nicht tun. Die Buchstaben oben sind Eingaben.EINqa,qb,qc

Konstruieren Sie dann den Automaten (" T " für die Transponierung) für die umgekehrte Multiplikation durch Transponieren von A :ATTA

ATabcaacbbaacccba

So führt in den Zustand c , und ebenfalls bewegt sich in den Zustand von , wie Sie beachten.A(abc)ca A T.AT(cba)aAT

geht jedoch davon aus , Sie von rechts nach links gehen, und wir möchten weiterhin von links nach rechts gehen. Der zweite Trick besteht also darin , den Automaten umzukehren (nicht die Multiplikation, die uns nur zurückbringen würde, wenn wir begonnen hätten), indem alle Pfeile umgekehrt werden, was zu einem nicht deterministischen Automaten , der in der folgenden Übergangstabelle angegeben ist. mit Teilmengen, die durch verkettete Buchstaben angezeigt werden, damit das Huhn nicht zerkratzt, so dass wirklich . (Ich hoffe, ich habe alles richtig gemacht - scheint zu funktionieren).A T R a c { a , c }ATATRac{a,c}

ATRabcaabbcbcaccabababbcacbccacabcacabcabbcabcabcabcabc

Sie können dies als nicht deterministischen Automaten mit nur den drei Zeilen über der Zeile oder als bestimmte Version mit allen 8 Zeilen interpretieren.

Schließlich ist die Maschine das Problem zu lösen das Kreuzproduktautomaten der ursprünglichen und , das ist den Schnittverhalten der beiden Automaten auszuführen (wir nicht brauchen jede Mehr). hat Zustände, die Paare wie . Die Übergangsfunktion führt und unabhängig voneinander aus. Ein einzelner Startzustand geht in unter Eingabe , in unter Eingabe usw. A T R A × A T R A T A × A T Ra , a c A A T R1 , 1 a , a a b , b bEINEINT.R.EIN×EINT.R.EINT.EIN×EINT.R.a,acAATR1,1a,aab,bb

Annahme von Zuständen in der nicht-deterministischen Version usw. In der deterministischen Version Annahme Zustände sind Paare , bei denen die erste Komponente des zweiten Komponentensatzes, wie einen , ein oder b , b c .a,aa,ab,bc

, wie gezeigt vergrößert und bestimmt, hat 25 = 3 8 + 1 Zustände. Verzeihen Sie mir also, wenn ich es nicht im Detail schreibe. Die nicht deterministische Version hat jedoch nur 10 = 3 3 + 1 Zustände.EIN×EINT.R.25=38+110=33+1


Vielen Dank, es hat mir wirklich geholfen, die Antwort hinter dem Nichtdeterminismus und der "Umkehrung" von Automaten zu verstehen. Ich hatte Probleme, diese Konzepte mit dem Buch von Hopcroft zu verstehen. Jetzt verwende ich das Buch von Sipser "Einführung in die Theorie der Berechnung", das wirklich gut ist.
Herr Ariel

Betrachten Sie die Eingabe . 1 , 1 bewegt zu b , b nach Eingabe b und dann an c , unter Eingang a , so b ein nicht akzeptiert wird, soll aber sein? ba1,1b,bbc,aba
Cemulate

8

Wenn L eine reguläre Sprache ist, ist L R , die Sprache, die aus derUmkehrungaller Wörter in L besteht , ebenfalls regulär. Nehmen Sie dies als Übung.()L.L.R.L.

Wie hilft uns das, das Problem zu lösen? Sei die Sprache, die aus allen Zeichenfolgen besteht, die bei der Bewertung von links nach rechts a , b , c ergeben . Die Sprache, die Sie interessiert, ist ( L aL R a ) ( L bL R b ) ( L cL R c ) . Dies zeigt, dass, wenn Sie wissen, wie man beweist (L.ein,L.b,L.cein,b,c

(LaLaR)(LbLbR)(LcLcR).
, dann können Sie eine NFA für die betreffende Sprache erstellen.()

Wenn Sie die Idee des Beweises von , können Sie wahrscheinlich einfach den Automaten konstruieren. Betrachten wir das also. Versuchen wir insbesondere, eine NFA für L R a zu erstellen , die Sprache aller Zeichenfolgen, die bei der Auswertung von rechts nach links zu a ausgewertet werden.()LaRa

Die Idee ist dies. Angenommen, der erste Buchstabe, den Sie sehen, ist . Dann muss der Rest der Zeichenfolge zu b ausgewertet werden (da b x = a x = b impliziert ). Ähnliches gilt, wenn der erste Buchstabe c ist . Wenn der erste Buchstabe a , jedoch kann der Rest entweder bewerten a oder b , oder null sein. Mit einer NFA können wir raten (und später unsere Vermutung überprüfen).bbbx=ax=bcaab

Dieser Hinweis sollte Ihnen genug zum Nachdenken geben und hoffentlich das Problem lösen.


Eine gute Möglichkeit, dies mit der Formel zu beweisen - stimmen Sie dafür ab. Was die alternative Idee des "nicht deterministischen Erraten und Verifizierens" betrifft, so ist dies normalerweise für einen Beweis in Ordnung, aber es ist ziemlich schwierig, sie tatsächlich auszuführen, wie es das Problem erfordert. Ich denke, hier fehlen viele Details, wie zum Beispiel, wie man den String vom Backend aus verfolgt.
David Lewis

@ David, die Details fehlen absichtlich.
Yuval Filmus

@ Yuval - er hat nicht gesagt, dass es Hausaufgaben sind - wir vertrauen den Leuten hier, richtig? Ich denke auch, dass dieser Existenzbeweis zu einer ziemlich großen Maschine führen wird, wahrscheinlich viel größer als nötig.
David Lewis

@ DavidLewis: Gilles gab eine vollständigere Antwort, die zeigt, dass die NFA in der Tat nicht zu groß ist; Nichtdeterminismus macht das für Sie. Der entsprechende DFA könnte jedoch sehr groß sein.
Raphael

@ MohamedAbbas Vielleicht habe ich nicht vor zu überprüfen.
Yuval Filmus

6

Süß.

Erstellen Sie zunächst einen Automaten, der das Produkt von links nach rechts berechnet. Einfach! Setzen Sie einen Übergang wann immerxy=z. Es gibt drei Zustände{a ,b ,c },die die drei möglichen Produkte darstellen. Beginnen Sie in einem vierten Zustand1 mit1xyzxy=z{a,b,c}1 für allex. Der Endzustand istgenau dannx, wenn das Produkt des Eingabeworts von links nach rechtsx ist.1xxxxx

Erstellen wir nun einen Automaten, der das Produkt von rechts nach links berechnet. Dieser wird nicht deterministisch sein. Wie machen wir das? Einfach… Um in die andere Richtung zu gehen, kehren Sie einfach alles um : die Pfeile und die Richtung des Produkts.

Wo wir vorher hatten xyxynehmen wir jetzt : Wenn wir das Wort von links nach rechts konsumieren, wechseln wir von einem Produkt zu seinem rechten Faktor. Oder mit anderen Worten:xxyxyxyyx.

Fügen Sie einen getrennten Knoten um das leere Wort zu erhalten. Alle Knoten sind initial.1

(x1,x2)y(z1,z2)x1yz1x2yz2(1,x)(x,x)x


xyyxführt zu einer endlichen Zustandsmenge? IAC, es ist nicht nur so einfach wie "alles umkehren", da Sie immer noch von links nach rechts konsumieren müssen, sondern von rechts nach links multiplizieren müssen, und ich bin mir nicht sicher, ob Sie das getan haben.
David Lewis

{overleftarrowa,b,b,1}

5

Es scheint, dass Ihr Hauptproblem darin besteht, Nichtdeterminismus zu verwenden. Lassen Sie mich darauf näher eingehen.

Die Grundidee, die die anderen verwenden, ist, dass eine nicht deterministische Maschine das Endergebnis erraten kann .

einbc

  • eineinbceinb
    • abb
      • bc
    • bbc
      • cc
  • ba
  • cabcc
    • cba
      • ac

Wie Sie sehen können, kann die NFA jede mögliche Berechnung von unten nach oben erraten und überprüfen . Da die akzeptierte Sprache als der Satz von Zeichenfolgen definiert ist, der von mindestens einem Lauf akzeptiert wird , werden alle nicht akzeptierenden Läufe für die Eingabe ignoriert. Die NFA "rät immer richtig".

Jetzt fällt es dieser NFA leicht, sich bis zum Ende an ihre erste Wahl zu erinnern. Wenn es akzeptiert, kann es das gespeicherte Symbol mit dem parallel erhaltenen lr-Produkt (deterministisch) vergleichen (wie sich die Sprachschnittstelle auf NFA bezieht, wird sicherlich in Ullman / Hopcroft und jedem anderen grundlegenden Lehrbuch behandelt).


Die Idee, eine Zeichenfolge zu erraten, war seltsam für mich, aber ich habe das Buch von Sipser gelesen und denke, dass dies ein besserer Ansatz für Neulinge wie mich in der Theorie der Berechnung ist.
Herr Ariel

Stellen Sie sich das Erraten als Gabeln mit angenommener Eingabe vor. Sie müssen jedoch mit den Schätzstrategien vorsichtig sein - stellen Sie sicher, dass der für das Erraten erforderliche Speicher für alle gegabelten Threads einheitlich begrenzt ist, da Sie sonst keinen Automaten mit endlichem Status mehr haben. Benötigen Sie auch eine einheitliche Begrenzung der Anzahl der aktiven Gabelgewinde. Ich denke, Raphaels Beschreibung hier funktioniert, aber sie muss zumindest erwähnt werden.
David Lewis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.