Wie viel größer kann ein LR (1) -Automat für eine Sprache sein als der entsprechende LR (0) -Automat?

10

In einem LR (0) -Parser besteht jeder Status aus einer Sammlung von LR (0) -Elementen, bei denen es sich um Produktionen handelt, die mit einer Position versehen sind. In einem LR (1) -Parser besteht jeder Status aus einer Sammlung von LR (1) -Elementen, bei denen es sich um Produktionen handelt, die mit einer Position und einem Lookahead-Zeichen versehen sind.

Es ist bekannt, dass bei einem gegebenen Zustand in einem LR (1) -Automaten der Konfigurationssatz, der durch Ablegen der Lookahead-Token von jedem LR (1) -Element gebildet wird, einen Konfigurationssatz ergibt, der einem Zustand im LR (0) -Automaten entspricht. In diesem Sinne besteht der Hauptunterschied zwischen einem LR (1) -Automaten und einem LR (0) -Automaten darin, dass der LR (1) -Automat mehr Kopien der Zustände im LR (0) -Automaten enthält, von denen jeder mit Lookahead versehen ist Information. Aus diesem Grund sind LR (1) -Automaten für ein bestimmtes CFG typischerweise größer als der entsprechende LR (0) -Parser für dieses CFG.

Meine Frage ist, wie viel größer der LR (1) Automat sein kann. Wenn das Alphabet der Grammatik verschiedene Terminalsymbole enthält, müssen wir im Prinzip möglicherweise jeden Zustand im LR (0) -Automaten mindestens einmal pro Teilmenge dieser n verschiedenen Terminalsymbole replizieren , was möglicherweise zu einem LR (1) führt ) Automat, der 2 n- mal größer ist als der ursprüngliche LR (0) -Automat. Da jedes einzelne Element im LR (0) -Automaten aus einer Reihe verschiedener LR (0) -Elemente besteht, kann es zu einer noch größeren Vergrößerung kommen.nn2n

Trotzdem kann ich keinen Weg finden, eine Grammatikfamilie zu konstruieren, für die der LR (1) -Automat erheblich größer ist als der entsprechende LR (0) -Automat. Alles, was ich versucht habe, hat zu einer bescheidenen Vergrößerung geführt (normalerweise um das 2-4-fache), aber ich kann anscheinend kein Muster finden, das zu einer großen Explosion führt.

Gibt es bekannte Familien kontextfreier Grammatiken, deren LR (1) -Automaten exponentiell größer sind als die entsprechenden LR (0) -Automaten? Oder ist bekannt, dass Sie im schlimmsten Fall keine exponentielle Explosion bekommen können?

Vielen Dank!

templatetypedef
quelle
Probleme wie diese sind manchmal empirischen Tests zugänglich. Was halten Sie von einzelnen Instanzen, die zufällig generiert wurden und ausgewählt wurden, um eine Explosion zu zeigen? Es gibt ein Muster in diesen Arten von Fragen, dass "zufällig aussehende" Konstruktionen die größte "Komplexität" aufweisen ...
vzn
2
Worst-Case-Instanzen sind in der Regel durch Zufallsstichproben schwer zu finden, zumindest wenn der durchschnittliche Fall signifikant besser ist.
Raphael
ps es wäre hilfreich, wenn Sie Beispiele der 2x-4x Blowup-Fälle irgendwo einschließen, nicht notwendig in der Post ...
vzn
Idee / Leitung: LR Parsing Permutationen (cstheory.se)
vzn
LALR (1) wird allgemein als ein Weg vorgestellt, um der LR (1) -Power ausreichend nahe zu kommen, um mit viel weniger Zuständen nützlich zu sein (um die Wörter des Drachenbuchs zu verwenden). Ich frage mich, ob ein bloßer Faktor von 2 bis 4 ausgereicht hätte, um LR (1) bis zur Erfindung von LALR (1) als unerschwinglich abzutun. Wenn ich darüber nachdenke, wenn sie zugänglich sind, werde ich einen Blick auf Aho & Ullman Die Theorie des Parsens, Übersetzens und Kompilierens und auf Grune Parsing-Techniken werfen, wenn sie etwas über die Zahlen haben.
AProgrammer

Antworten:

2

Die Grammatik

ST0TnaTn+1TnbTn+1TnbTn+1tnTNtN

TNtN˙
2N{t0tN1}N2N/N

TNT0

Ein Programmierer
quelle
0

Solche Untergrenzen sind manchmal schwierig zu konstruieren und können eine tiefere CS-Theorie hervorrufen (z. B. in Fällen von Komplexitätsklassentrennungen). Dieses Papier scheint eine theoretische Konstruktion / Untergrenze zu geben, die Sie suchen, z. B. in Satz 5, die eine Untergrenze für Gesamtsymbole und damit auch für Zustände festlegt. Die Referenzen enthalten auch andere ähnliche Konstruktionen / Untergrenzen.

f(n,k)=214(nk)/n2k=0,1;...,n1Lnn3f(n,k)f(n,k)

Zur Größe von Parsern und LR (k) -Grammaren / Leunga, Wotschkeb

vzn
quelle
2(n1)/4/n22n/4/n2gebunden an die Größe des LR (0) -Automaten für diese Sprache. Diese Antwort beantwortet also nicht die gestellte Frage.
DW
1.1892
DW hält Ihren Einwand für legitim und nähert sich dem Haarspalterei. Vielen Dank für die Klarstellung / Detail. Es ist eine relevante / fast direkte wissenschaftliche Antwort auf eine systematische Untersuchung seiner Frage, bei der es im Wesentlichen um Worst-Case-Sprachkonstruktionen in Blowup (n) geht. Es ist möglich, dass dies (fast?) "bekannteste Ergebnisse" in der Region sind. Eine legitime Antwort auf die Frage könnte negativ sein, auch bekannt als NEIN. Es sind keine besseren Ergebnisse bekannt als die, die der Fragesteller (er hat noch keine ausgestellt ) oder in der Literatur gefunden hat. Ich bin gespannt auf weitere endgültige Antworten!
VZN