¿Cuánto más grande puede ser un autómata LR (1) para un idioma que el autómata LR (0) correspondiente?

10

En un analizador LR (0), cada estado consta de una colección de elementos LR (0), que son producciones anotadas con una posición. En un analizador LR (1), cada estado consta de una colección de elementos LR (1), que son producciones anotadas con una posición y un carácter anticipado.

Se sabe que dado un estado en un autómata LR (1), el conjunto de configuración formado al soltar las fichas anticipadas de cada elemento LR (1) produce un conjunto de configuración correspondiente a algún estado en el autómata LR (0). En ese sentido, la principal diferencia entre un autómata LR (1) y un autómata LR (0) es que el autómata LR (1) tiene más copias de los estados en el autómata LR (0), cada uno de los cuales está anotado con anticipación información. Por esta razón, los autómatas LR (1) para un CFG dado son típicamente más grandes que el analizador LR (0) correspondiente para ese CFG.

Mi pregunta es cuánto más grande puede ser el autómata LR (1). Si hay símbolos terminales distintos en el alfabeto de la gramática, entonces, en principio, podríamos necesitar replicar cada estado en el autómata LR (0) al menos una vez por subconjunto de esos símbolos terminales distintos, lo que podría conducir a un LR (1 ) autómata que es veces más grande que el autómata LR (0) original. Dado que cada elemento individual en el autómata LR (0) consiste en un conjunto de elementos LR (0) diferentes, podemos obtener una explosión aún mayor.n 2 nnn2n

Dicho esto, parece que no puedo encontrar una manera de construir una familia de gramáticas para las cuales el autómata LR (1) sea significativamente más grande que el autómata LR (0) correspondiente. Todo lo que he probado ha llevado a un aumento modesto de tamaño (generalmente alrededor de 2-4x), pero parece que no puedo encontrar un patrón que conduzca a una gran explosión.

¿Existen familias conocidas de gramáticas libres de contexto cuyos autómatas LR (1) son exponencialmente más grandes que los autómatas LR (0) correspondientes? ¿O se sabe que, en el peor de los casos, no se puede obtener una explosión exponencial?

¡Gracias!

templatetypedef
fuente
problemas como estos a veces son susceptibles de pruebas empíricas. ¿Qué pensaría de las instancias individuales generadas al azar que (son seleccionadas para) exhibir explosión? Hay un patrón en este tipo de preguntas que las construcciones de "aspecto aleatorio" exhiben la mayor "complejidad" ...
vzn
2
Los casos más desfavorables suelen ser difíciles de encontrar mediante un muestreo aleatorio, al menos si el caso promedio es significativamente mejor.
Raphael
PD: sería útil si incluye ejemplos de los casos de explosión 2x-4x en alguna parte, no nec en la publicación ...
vzn
idea / liderazgo: permutaciones de análisis de LR (cstheory.se)
vzn
LALR (1) se presenta comúnmente como una forma de acercarse lo suficiente al poder de LR (1) para ser útil con muchos menos estados (para usar las palabras del libro del Dragón). Me pregunto si un mero factor de 2 a 4 hubiera sido suficiente para haber desestimado LR (1) como prohibitivo hasta la invención de LALR (1). Si lo pienso cuando están accesibles, echaré un vistazo en Aho & Ullman La teoría de análisis, traducción y compilación y en Grune Parsing Techniques si tienen algo sobre los números.
Programador

Respuestas:

2

La gramática

ST0TnaTn+1TnbTn+1TnbTn+1tnTNtN

tiene el estado LR (0) expandido a variantes en el autómata LR (1) ya que todas las particiones de son posibles cabeza que aparece en diferentes contextos. El número de estados en el LR (0) autómata por otro lado es lineal en términos de . Por lo tanto un factor de expansión del orden de es posible.

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

Editar: tendré que verificar más tarde cuando tenga más tiempo, creo que agregar daría el factor exponencial en casi todos los estados LR (0). TNT0Eso da como resultado un conflicto de reducción de turnos.

Un programador
fuente
0

Tales límites inferiores a veces son difíciles de construir y pueden evocar una teoría CS más profunda (por ejemplo, en casos, separaciones de clases de complejidad). Este artículo parece dar una construcción teórica / límites inferiores que busca, por ejemplo, en el Teorema 5, que pone un límite inferior en los símbolos totales y, por lo tanto, también establece. Las referencias también incluyen otras construcciones similares / límites inferiores.

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

Sobre el tamaño de analizadores y LR (k) -grammars / Leunga, Wotschkeb

vzn
fuente
2(n1)/4/n22n/4/n2dependiente del tamaño del autómata LR (0) para ese idioma. Entonces esta respuesta no responde la pregunta que se hizo.
DW
1.1892
DW cree que su objeción es legítima y se acerca a la depilación. gracias por la aclaración / detalle. es una respuesta científica relevante / casi directa a / estudio sistemático de su pregunta que se trata esencialmente de la (s) construcción (es) / explosión del lenguaje del peor de los casos en LR (n). es posible que estos sean (¿casi?) "resultados más conocidos" en el área. una respuesta legítima a la pregunta podría ser negativa, es decir, NO, no se conocen mejores resultados que los encontrados por el interrogador (aún no ha exhibido ninguno) o en la literatura. ¡Espero ansiosamente más respuestas definitivas por mí mismo!
vzn