Ich verstehe die folgenden Behauptungen als wahr:
- Zwei unterschiedliche Ableitungen eines Strings in einem bestimmten CFG können dem String manchmal denselben Analysebaum zuordnen.
- Wenn in einem bestimmten CFG Ableitungen eines Strings vorhanden sind, die unterschiedliche Analysebäume zuordnen, ist das CFG nicht eindeutig.
- Einige kontextfreie Sprachen, die durch mehrdeutige CFGs generiert werden, werden auch durch eindeutige CFGs generiert.
- Einige Sprachen sind so beschaffen, dass die einzigen CFGs, die sie generieren können (und es gibt solche), nicht eindeutig sind.
Q1. Ich verstehe es auch als unentscheidbar, ob eine willkürliche CFG im Sinne von Punkt 3 mehrdeutig ist. Oder ist es eher unentscheidbar, ob eine kontextfreie Sprache im Sinne von Punkt 4 mehrdeutig ist? Oder sind beide unentscheidbar?
Q2. Welcher der Punkte 1 bis 4 wird falsch, wenn wir "kontextfrei" durch "regulär" ersetzen? Sind reguläre Grammatiken und Sprachen immer eindeutig?
fl.formal-languages
regular-language
context-free
zweifelhaft
quelle
quelle
Antworten:
Zu Q1: Sowohl das Mehrdeutigkeitsproblem (bei einem CFG, ob es mehrdeutig ist) als auch das inhärente Mehrdeutigkeitsproblem (bei einem CFG, ob seine Sprache von Natur aus mehrdeutig ist, dh ob ein gleichwertiges CFG mehrdeutig ist) sind unentscheidbar. Hier sind die Originalreferenzen:
Über Q2: Eine reguläre Grammatik ist eine "einseitige lineare" kontextfreie Grammatik, bei der höchstens ein Nichtterminal in einem rechten Teil der Regel erscheint und bei der dieses Nichtterminal am letzten (in der rechten linearen Grammatik) oder am ersten (in) steht linke lineare Grammatik) Position. Solche Grammatiken lassen sich leicht in äquivalente Automaten mit endlichen Zuständen übersetzen (ungefähr unter Berücksichtigung jedes Nichtterminals als Zustand), die eindeutig sind, wenn die reguläre Grammatik eindeutig ist. Die Klasse der eindeutigen regulären Grammatiken und eindeutigen Automaten wurde insbesondere von Stearns und Hunt (1985) untersucht , die zeigen, dass sie über nachvollziehbare Algorithmen für das Einschlussproblem verfügen.
In einer linearen kontextfreien Grammatik gibt es keine solche Wahl, da es höchstens ein Nichtterminal in einer sententialen Form gibt und es eine einzige Ableitung für einen gegebenen Ableitungsbaum gibt, die sowohl ganz links als auch ganz rechts ist.
und 4. Wenn Sie die Automatenansicht mit endlichen Zuständen verwenden, reicht es aus, Ihren mehrdeutigen Automaten zu bestimmen, um einen eindeutigen Automaten für dieselbe Sprache zu erhalten: Für jedes Wort wird ein einziger Lauf ausgeführt. Dieser deterministische Automat entspricht einer eindeutigen regulären Grammatik.
quelle
Ich habe nicht ganz verstanden, welche Art von Sprachen Sie in 4 sprechen. Jede CF-Sprache hat eine mehrdeutige Grammatik.
Q2. Alles ist entscheidbar, wenn Sie sich mit einer normalen Grammatik beschäftigen. Sie sollten nur ein minimales DFA erstellen und damit eine eindeutige Grammatik erstellen. Wenn Sie sich mit der durch die CF-Grammatik definierten regulären Sprache beschäftigen, lautet die Antwort nein - siehe Q1.
quelle
Es hängt davon ab, ob Sie "kontextfrei" durch "regulär" nur vor "Sprache (n)" oder auch vor "Grammatik (en)" ersetzen.
Alle regulären Sprachen werden durch reguläre Grammatiken erzeugt , insbesondere durch eindeutige reguläre Grammatiken, z. B. LL (1) rechtsreguläre Grammatiken, die alle eindeutig sind.
quelle