Qual o tamanho de um autômato LR (1) para um idioma que o autômato LR (0) correspondente?


10

Em um analisador LR (0), cada estado consiste em uma coleção de itens LR (0), que são produções anotadas com uma posição. Em um analisador de LR (1), cada estado consiste em uma coleção de itens de LR (1), que são produções anotadas com uma posição e um caractere lookahead.

Sabe-se que, dado um estado em um autômato LR (1), o conjunto de configuração formado pela remoção dos tokens do cabeçote de look de cada item LR (1) produz um conjunto de configuração correspondente a algum estado no autômato LR (0). Nesse sentido, a principal diferença entre um autômato LR (1) e um autômato LR (0) é que o autômato LR (1) possui mais cópias dos estados no autômato LR (0), cada um dos quais é anotado com lookahead em formação. Por esse motivo, os autômatos LR (1) para um determinado CFG são geralmente maiores que o analisador LR (0) correspondente para esse CFG.

Minha pergunta é quanto maior o autômato LR (1) pode ser. Se houver símbolos terminais distintos no alfabeto da gramática, em princípio, talvez seja necessário replicar cada estado no autômato LR (0) pelo menos uma vez por subconjunto desses símbolos terminais distintos, potencialmente levando a um LR (1). ) autômato vezes maior que o autômato LR (0) original. Dado que cada item individual no autômato LR (0) consiste em um conjunto de itens LR (0) diferentes, podemos ter uma explosão ainda maior.n 2 nnn2n

Dito isto, não consigo encontrar uma maneira de construir uma família de gramáticas para a qual o autômato LR (1) seja significativamente maior que o autômato LR (0) correspondente. Tudo o que tentei levou a um aumento modesto no tamanho (geralmente em torno de 2-4x), mas não consigo encontrar um padrão que leve a uma grande explosão.

Existem famílias conhecidas de gramáticas livres de contexto cujos autômatos LR (1) são exponencialmente maiores que os autômatos LR (0) correspondentes? Ou é sabido que, na pior das hipóteses, você não pode realmente obter uma explosão exponencial?

Obrigado!


problemas como esses às vezes são passíveis de testes empíricos. o que você pensaria das instâncias individuais geradas aleatoriamente que (são selecionadas para) exibir blowup? existe um padrão nesses tipos de perguntas que "aleatório-olhando" construções apresentam a "complexidade" mais ...
vzn

2
Geralmente, é difícil encontrar instâncias de pior caso por amostragem aleatória, pelo menos se o caso médio for significativamente melhor.
Raphael

ps seria útil se você incl exemplos dos casos blowup 2x-4x em algum lugar, não nec no post ...
vzn

idea / lead: LR parsing permutations (cstheory.se)
vzn

O LALR (1) geralmente é apresentado como uma maneira de chegar suficientemente perto do poder do LR (1) para ser útil com muito menos estados (para usar as palavras do livro do Dragão). Gostaria de saber se um mero fator de 2 a 4 teria sido suficiente para ter descartado a LR (1) como proibitiva até a invenção da LALR (1). Se eu pensar sobre isso quando eles estiverem acessíveis, darei uma olhada em Aho & Ullman, A teoria da análise, tradução e compilação, e nas Técnicas de análise de Grune, se tiverem alguma coisa sobre os números.
APROGRAMADOR #

Respostas:


2

A gramática

ST0TnaTn+1TnbTn+1TnbTn+1tnTNtN

tem o estado LR (0) expandido para variantes no autômato LR (1), pois todas as partições de são possíveis cabeça que aparecem em diferentes contextos. O número de estados do LR (0) autómato sobre o outro lado é linear em termo de . Assim, é possível um fator de expansão da ordem de

TNtN˙
{ t 0t N - 1 } N 2 N / N2N{t0tN1}N2N/N

Edit: Vou ter que verificar mais tarde quando tiver mais tempo, acho que adicionar daria o fator exponencial em quase todos os estados LR (0). TNT0Isso resulta em um conflito de redução de turno.


0

Tais limites inferiores às vezes são difíceis de construir e podem evocar uma teoria mais profunda da CS (por exemplo, em casos, separações de classes de complexidade). Este artigo parece fornecer uma construção teórica / limites inferiores que você procura, por exemplo, no Teorema 5, que coloca um limite inferior no total de símbolos e, portanto, também declara. As referências também incluem outras construções semelhantes / limites inferiores.

Teorema 5. Seja . Para qualquer gramatical LR (k) com gerando ; onde ; o número de símbolos não terminais deve ser pelo menos ou existe um símbolo não terminal A, de modo que o número de produções diferentes com A no lado esquerdo deva ser pelo menos .k=0,1; . . . ,n-1Lnn3f(n,k)f(n,k)f(n,k)=214(nk)/n2k=0,1;...,n1Lnn3f(n,k)f(n,k)

Sobre o tamanho dos analisadores e LR (k) -grammars / Leunga, Wotschkeb


Isso não nos diz quanto maior o autômato LR (1) é do que o autômato LR (0). Ele fornece um limite inferior de no tamanho do autômato LR (1) e um limite inferior de no tamanho de o autômato LR (0), mas o que queremos é um limite inferior na proporção do tamanho do autômato LR (1) dividido pelo autômato LR (0). Esse resultado não implica absolutamente nada nessa proporção. Para aprender algo sobre a proporção, precisaríamos de um limite superior no tamanho do autômato LR (0) para esse idioma. Portanto, esta resposta não responde à pergunta que foi feita. 2 n / 4 / n 22(n1)/4/n22n/4/n2
DW

Sem mencionar que a diferença entre os dois limites inferiores é apenas um fator de , e o post original diz que o autor já sabe como atingir uma proporção de 2-4x, mas quer saber se é possível uma explosão realmente grande. 1.1892
DW

A DW acha que a sua objeção é legítima e se aproxima de algo muito difícil. thx tanto para o esclarecimento / detalhe. é uma resposta científica relevante / quase direta ao / estudo sistemático de sua pergunta, que é essencialmente sobre a (s) pior (s) construção (ões) da linguagem / explosão em LR (n). é possível que estes sejam (quase?) "resultados mais conhecidos" na área. uma resposta legítima à pergunta pode ser negativa, também conhecida como NÃO, não existem resultados melhores do que os encontrados pelo pesquisador (ele ainda não exibiu nenhum) ou na literatura. aguardando ansiosamente respostas mais definitivas !
vzn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.