Jusqu'à quel point un automate LR (1) pour une langue peut-il être plus grand que l'automate LR (0) correspondant?

10

Dans un analyseur LR (0), chaque état consiste en une collection d'éléments LR (0), qui sont des productions annotées avec une position. Dans un analyseur LR (1), chaque état consiste en une collection d'éléments LR (1), qui sont des productions annotées avec une position et un caractère d'anticipation.

Il est connu que, étant donné un état dans un automate LR (1), l'ensemble de configuration formé en supprimant les jetons de recherche de chaque élément LR (1) produit un ensemble de configuration correspondant à un état dans l'automate LR (0). En ce sens, la principale différence entre un automate LR (1) et un automate LR (0) est que l'automate LR (1) a plus de copies des états de l'automate LR (0), chacun étant annoté avec lookahead information. Pour cette raison, les automates LR (1) pour un CFG donné sont généralement plus grands que l'analyseur LR (0) correspondant pour ce CFG.

Ma question est de savoir à quel point l'automate LR (1) peut être plus grand. S'il y a symboles terminaux distincts dans l'alphabet de la grammaire, alors en principe, nous pourrions avoir besoin de répliquer chaque état dans l'automate LR (0) au moins une fois par sous-ensemble de ces symboles terminaux distincts, conduisant potentiellement à un LR (1 ) automate qui est fois plus grand que l'automate LR (0) d'origine. Étant donné que chaque élément individuel de l'automate LR (0) se compose d'un ensemble d'éléments LR (0) différents, nous pouvons obtenir une explosion encore plus grande.nn2n

Cela dit, je n'arrive pas à trouver un moyen de construire une famille de grammaires pour lesquelles l'automate LR (1) est significativement plus grand que l'automate LR (0) correspondant. Tout ce que j'ai essayé a conduit à une augmentation modeste de la taille (généralement autour de 2 à 4 fois), mais je n'arrive pas à trouver un motif qui mène à une grande explosion.

Existe-t-il des familles connues de grammaires hors contexte dont les automates LR (1) sont exponentiellement plus grands que les automates LR (0) correspondants? Ou sait-on que dans le pire des cas, vous ne pouvez pas réellement obtenir une explosion exponentielle?

Merci!

templatetypedef
la source
de tels problèmes peuvent parfois être soumis à des tests empiriques. Que pensez-vous des instances individuelles générées de manière aléatoire qui (sont sélectionnées pour) présenter une explosion? il y a un modèle dans ces types de questions que les constructions "aléatoires" présentent le plus de "complexité" ...
vzn
2
Les cas les plus défavorables sont généralement difficiles à trouver par échantillonnage aléatoire, du moins si le cas moyen est nettement meilleur.
Raphael
ps il serait utile que vous incluiez des exemples de cas d'explosion 2x-4x quelque part, pas nca dans le post ...
vzn
idée / lead: LR parsing permutations (cstheory.se)
vzn
LALR (1) est généralement présenté comme un moyen de se rapprocher suffisamment de la puissance LR (1) pour être utile avec beaucoup moins d'états (pour reprendre les termes du livre Dragon). Je me demande si un simple facteur de 2 à 4 aurait suffi pour rejeter LR (1) comme prohibitif jusqu'à l'invention de LALR (1). Si j'y pense quand ils sont accessibles, je vais jeter un œil dans Aho & Ullman The theory of parsing, translation, and compiling et dans Grune Parsing Techniques s'ils ont quelque chose à propos des nombres.
AProgrammer

Réponses:

2

La grammaire

ST0TnaTn+1TnbTn+1TnbTn+1tnTNtN

a l'état LR (0) étendu à variantes dans les automates LR (1) car toutes les partitions de sont possibles - tête qui apparaissent dans différents contextes. Le nombre d'états dans l'automate LR (0) d'autre part est linéaire en terme de . Ainsi un facteur d'expansion de l'ordre de est possible.

TNtN˙
2N{t0tN1}N2N/N

Edit: Je devrai vérifier plus tard quand j'aurai plus de temps, je pense que l'ajout de donnerait le facteur exponentiel sur presque tous les états LR (0). TNT0Il en résulte un conflit de réduction des déplacements.

AProgrammer
la source
0

Ces limites inférieures sont parfois délicates à construire et peuvent évoquer une théorie CS plus profonde (par exemple dans les cas, les séparations de classes de complexité). Cet article semble donner une construction théorique / des limites inférieures que vous recherchez, par exemple dans le théorème 5 qui met une limite inférieure sur les symboles totaux et donc également les états. Les références incluent également d'autres constructions similaires / bornes inférieures.

Théorème 5. Soit . Pour tout LR (k) -gramme avec générant ; où ; le nombre de symboles non terminaux doit être au moins ou il existe un symbole non terminal A tel que le nombre de productions différentes avec A sur le côté gauche doit être au moins .f(n,k)=214(nk)/n2k=0,1;...,n1Lnn3f(n,k)f(n,k)

Sur la taille des analyseurs et LR (k) -grammars / Leunga, Wotschkeb

vzn
la source
Cela ne nous dit pas à quel point l'automate LR (1) est plus grand que l'automate LR (0). Il donne une borne inférieure sur la taille de l'automate LR (1), et une borne inférieure sur la taille de l'automate LR (0), mais ce que nous voulons, c'est une borne inférieure sur le rapport de la taille de l'automate LR (1) divisé par l'automate LR (0). Ce résultat n'implique absolument rien sur ce rapport. Pour en savoir plus sur le rapport, nous aurions besoin d'une limite supérieure sur la taille de l'automate LR (0) pour cette langue. Donc, cette réponse ne répond pas à la question qui a été posée. 2(n1)/4/n22n/4/n2
DW
Sans oublier que l'écart entre les deux bornes inférieures n'est qu'un facteur de , et le message original dit que l'auteur sait déjà comment atteindre un rapport de 2-4x mais veut savoir si une explosion vraiment importante est possible. 1.1892
DW
DW pense que votre objection est à la fois légitime et se rapproche des cheveux. merci beaucoup pour la clarification / détail. C'est une réponse scientifique pertinente / presque directe à / une étude systématique de sa question qui concerne essentiellement la ou les constructions / explosions de langage les plus défavorables dans LR (n). il est possible que ce soient (presque?) les "résultats les plus connus" dans la région. une réponse légitime à la question pourrait être négative, c'est-à-dire NON, il n'y a pas de meilleurs résultats connus que ceux trouvés par le questionneur (il n'en a pas encore réellement montré ) ou dans la littérature. attendant avec impatience des réponses plus définitives moi-même!
vzn