Wann ist die Verkettung zweier regulärer Sprachen eindeutig?


16

In Anbetracht Sprachen und , lassen Sie uns sagen , dass ihre Verkettung ist eindeutig , wenn für alle Wörter , gibt es genau eine Zerlegung mit und und mehrdeutig sonst. (Ich weiß nicht, ob es einen etablierten Begriff für diese Eigenschaft gibt - schwer zu finden!) Als triviales Beispiel ist die Verkettung von mit sich selbst nicht eindeutig ( ), aber die Verkettung von mit sich selbst ist eindeutig.ABABwABw=abaAbB{ε,a}w=a=εa=aε{a}

Gibt es einen Algorithmus, der entscheidet, ob die Verkettung zweier regulärer Sprachen eindeutig ist?


1
Gah, das ist ein total neues CS-Problem, nicht wahr? Ehrlich gesagt habe ich nicht viel versucht; Ich hatte gehofft, dass es irgendwo in der Literatur einen etablierten Algorithmus dafür gibt und ich das Rad nicht neu erfinden müsste. Ich schreibe hier drüben Software. Ich habe nur ein paar CS-Kurse besucht (vor einigen Jahren), also fange ich im Grunde bei Wikipedia an. Ich weiß, dass niemand jemanden mag, der nicht für seine Antwort arbeiten möchte. Wenn es also ein Lehrbuch oder eine Arbeit oder etwas gibt, auf das Sie mich hinweisen könnten, anstatt mir nur einen Algorithmus zu geben, wäre das hilfreich! Vielen Dank!
Stern

Ich habe dies als Kommentar hinzugefügt, da es sich um ein relativ falsches Thema handelt, aber vielleicht kann es Ihnen helfen. Das Unicode-Konsortium verfügt über einige Verfahren zur Ermittlung der Gemeinsamkeiten zwischen Sprachen. Ich habe einen sehr informativen Link auf ihrer Seite gelesen, aber für mein ganzes Leben konnte ich es heute nicht finden, dies stattdessen zu einer Antwort zu machen. Wenn Sie Zeit das hier zu erforschen haben , ist ihre FAQ - Seite unicode.org/faq
htm11h

Antworten:


10

Hinweis: Konstruieren Sie für gegebene DFAs für und eine NFA, die Wörter in mit mindestens zwei verschiedenen Zerlegungen akzeptiert . Die NFA verfolgt zwei Kopien des Standard für NFA (gebildet durch DFAs zum Verbinden und mit Übergängen), um sicherzustellen , dass der Wechsel von zu an zwei unterschiedlichen Punkten geschieht.B A B A B A B ϵ A BABABABABϵAB


Danke für den Tipp! Wenn ich das verstehe, kann ich eine NFA für mehrdeutige Wörter in konstruieren und dann diesen Automaten auf Leere testen. Der knifflige Teil scheint zu sein, "sicherzustellen, dass der Wechsel von A nach B an zwei verschiedenen Punkten erfolgt". Ich bin mir nicht sicher , wie die anderes zu tun , als das Kreuzprodukt unter (?) Von zwei A B DFAs und alle die das Löschen ( A -terminale, A -terminale) Produktzustände-ich ist handwaving, ich bin besorgt , dass der Übergang von A B NFA zu A B DFA würde mit der Idee der Schraube AABABABAAABABA-Terminal. Hört sich allerdings ineffizient an; Gibt es einen bekannten Algorithmus, der für Software geeignet ist?
Stern

Ja, es klingt nicht zu effizient, obwohl es immer die Möglichkeit gibt, es auf intelligente Weise zu tun. Mir ist kein spezifischer Algorithmus für dieses Problem bekannt, aber einer könnte existieren.
Yuval Filmus

7

Aktualisiert (danke an Yuval Filmus).

Bei zwei gegebenen Sprachen und Y von A sei X - 1 YXYA I dadurch gekennzeichnetdaßXYeindeutig istwenn und nur wenn die SpracheX-1XYY-1A+leer ist.

X1Y={uAthere exists xX such that xuY}YX1={uAthere exists xX such that uxY}
XYX1XYY1A+

Beweis . Angenommen, ist mehrdeutig. Dann gibt ein Wort existiert u , die zwei über Zersetzungen hat X Y , etwa u = x 1 y 2 = x 2 y 1 , wobei x 1 , x 2X und y 1 , y 2Y . Ohne Verlust der Allgemeinheit können wir annehmen, dass x 1 ein Präfix von x 2 ist, dh x 2 = xXYuXYu=x1y2=x2y1x1,x2Xy1,y2Yx1x2 für etwas z A + . Daraus folgt, dass u = x 1 y 2 = x 1 z y 1 , woraus y 2 = z y 1 . Also ist z X - 1 X Y Y - 1 .x2=x1zzA+u=x1y2=x1zy1y2=zy1zX1XYY1

Angenommen, enthält ein nicht leeres Wort z . Dann gibt es x 1 , x 2X und y 1 , y 2Y, so dass x 2 = x 1 z und y 2 = z y 1 . Daraus folgt x 2 y 1 = x 1 z y 1 =X1XYY1zx1,x2Xy1,y2Yx2=x1zy2=zy1 und somit ist das Produkt X Y nicht eindeutig.x2y1=x1zy1=x1y2XY

Wenn und Y regulär sind, dann sind beide X - 1 X und Y Y - 1 regulär und somit ist auch X - 1 X Y Y - 1 regulär (siehe Yuvals Antwort für einen Automaten, der diese Sprache akzeptiert).XYX1XYY1X1XYY1


Was ist, wenn das leere Wort ist? z
Yuval Filmus

Hoppla. Ich aktualisiere.
J.-E.
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.