Wie konvertiere ich eine kontextfreie Grammatik ohne Einbettung in reguläre Grammatik?

  • Bitte beachten Sie, dass mir die Unentscheidbarkeit der Umwandlung kontextfreier Grammatik in reguläre Grammatik bekannt ist. Gibt es einen Algorithmus, der die Eingabe in kontextfreie Grammatik einfügt, um sie in reguläre Grammatik oder direkt in DFA zu konvertieren?

    15 June 2014
    David Tchepak
1 answer
  • Überprüfen Sie this link . Dies ist eine einfachere Version eines Beweises von Chomsky, dass NSE-Grammatiken reguläre Sprachen darstellen. Glücklicherweise zeigt die Beweismethode, wie aus einer gegebenen NSE-Grammatik eine links-reguläre Grammatik erstellt wird. Hier ist meine Erklärung:

    1. Für jedes der $ \ lvert V \ rvert (\ lvert V \ rvert +1) / 2 $ Paare $ (v_1, v_2) $ von Elementen von $ V $, entscheiden, ob $ v_1 \ le v_2 $ basierend auf der angegebenen Definition gilt: $ v_1 \ le v_2 $ wenn $ v_2 *: = V ^ * v_1 V ^ * $.
    2. Konstruieren Sie Äquivalenzklassen so, dass sich $ v_1 \ le v_2 $ und $ v_2 \ le v_1 $, $ v_1 $ und $ v_2 $ in derselben Äquivalenzklasse befinden. Dies ist eine Partition aller Elemente von $ V $ in eine oder mehrere Äquivalenzklassen.
    3. Nun wird für jedes Paar $ (VE_1, VE_2) $ von Äquivalenzklassen von $ V $ wie beschrieben Bestimmen Sie oben, ob $ VE_1 \ le VE_2 $, indem Sie prüfen, ob $ v_1 $ in $ VE_1 \ le v_2 $ in $ VE_2 $ liegt.
    4. Konstrukt legt $ UE $ den Äquivalenzklassen $ VE $ fest Wenn also $ VE_i \ le VE_k $, ist $ VE_i $ eine Untermenge von $ UE_k $. Jeder $ UE_k $ muss auch die Alphabetsätze $ E $ enthalten. Sie erhalten für jedes $ VE $ ein $ UE $, und jedes $ UE $ enthält zusätzlich zu allen Alphabetsymbolen Variablen in Äquivalenzklassen "weniger als" dem entsprechenden $ VE $.
    5. Ermitteln Sie $ P (v) $ für jede Variable $ v $ wie folgt: $ P (v) $ ist die Menge aller Produktionen in $ P $, deren linke Seiten zu der Äquivalenzklasse gehören, die die Variable $ v $ enthält .
    6. Konstruieren Sie für jede Variable $ v $ eine Grammatik wie folgt: $ G (v) = (VE \ cup UE, UE, P (v), v) $, wobei $ VE $ ist die Äquivalenzklasse, die $ v $ enthält, und $ UE $ ist diejenige, die dem $ VE $ entspricht.
    7. Die Autoren haben ein Lemma bewiesen, das behauptet, dass $ G (v) $ ist eine lineare Grammatik. Daraus können wir reguläre Ausdrücke über $ UE $ für jede Variable $ v $ schreiben. Beachten Sie dies für das $ UE $, das dem & # 34 entspricht
    15 March 2013
    Raphael