En la informática teórica y la teoría del lenguaje formal , una gramática de árbol regular es una gramática formal que describe un conjunto de árboles dirigidos o términos . [ 1 ] Una gramática de palabras regular puede considerarse un tipo especial de gramática de árbol regular, que describe un conjunto de árboles de ruta única .
Definición
Una gramática de árbol regular G se define mediante la tupla G = ( N , Σ, Z , P ), donde:
- N es un conjunto finito de no terminales,
- Σ es un alfabeto jerarquizado (es decir, un alfabeto cuyos símbolos tienen una aridad asociada ) disjunto de N ,
- Z es el no terminal inicial, con Z ∈ N , y
- P es un conjunto finito de producciones de la forma A → t , con A ∈ N , y t ∈ T Σ ( N ) , donde T Σ ( N ) es el álgebra de términos asociada , es decir el conjunto de todos los árboles compuestos a partir de símbolos en Σ ∪ N según sus aridades, donde los no terminales se consideran nulos.
Derivación de árboles
La gramática G define implícitamente un conjunto de árboles: cualquier árbol que pueda derivarse de Z utilizando el conjunto de reglas P se dice que está descrito por G. Este conjunto de árboles se conoce como el lenguaje de G. Formalmente, la relación ⇒ G en el conjunto T Σ ( N ) se define de la siguiente manera:
Un árbol t 1 ∈ T Σ ( N ) puede derivarse en un solo paso en un árbol t 2 ∈ T Σ ( N ) (en resumen: t 1 ⇒ G t 2 ), si existe un contexto S y una producción ( A → t ) ∈ P tales que:
- t 1 = S [ A ], y
- t 2 = S [ t ].
Aquí, un contexto significa un árbol con exactamente un agujero; si S es tal contexto, S [ t ] denota el resultado de llenar el árbol t en el agujero de S.
El lenguaje de árbol generado por G es el lenguaje L ( G ) = { t ∈ T Σ | Z ⇒ G * t } .
Aquí, T Σ denota el conjunto de todos los árboles compuestos por símbolos de Σ, mientras que ⇒ G * denota aplicaciones sucesivas de ⇒ G .
Un lenguaje generado por alguna gramática de árbol regular se llama lenguaje de árbol regular .
Ejemplos

Sea G 1 = ( N 1 ,Σ 1 , Z 1 , P 1 ), donde
- N 1 = { Bool , BList } es nuestro conjunto de no terminales,
- Σ 1 = { true , false , nil , cons (.,.) } es nuestro alfabeto clasificado, las aridades indicadas por argumentos ficticios (es decir, el símbolo cons tiene aridad 2),
- Z 1 = BList es nuestro no terminal inicial, y
- El conjunto P 1 consta de las siguientes producciones:
- Booleano → falso
- Booleano → verdadero
- BList → nulo
- BList → contras ( Bool , BList )
Un ejemplo de derivación de la gramática G 1 es
BList ⇒ cons ( Bool , BList ) ⇒ cons ( false , cons ( Bool , BList )) ⇒ cons ( false , cons ( true , nil )).
La imagen muestra el árbol de derivación correspondiente ; es un árbol de árboles (imagen principal), mientras que un árbol de derivación en gramáticas de palabras es un árbol de cadenas (tabla superior izquierda).
El lenguaje de árbol generado por G 1 es el conjunto de todas las listas finitas de valores booleanos, es decir, L ( G 1 ) resulta ser igual a T Σ1 . La gramática G 1 corresponde a las declaraciones de tipos de datos algebraicos (en el lenguaje de programación Standard ML ):
tipo de dato Bool = false | verdadero tipo de dato BList = nil | cons de Bool * BListCada miembro de L ( G 1 ) corresponde a un valor Standard-ML de tipo BList.
Para otro ejemplo, sea G 2 = ( N 1 , Σ 1 , BList 1 , P 1 ∪ P 2 ) , utilizando el conjunto no terminal y el alfabeto de arriba, pero extendiendo el conjunto de producción por P 2 , que consta de las siguientes producciones:
- BList 1 → contras ( verdadero , BList )
- BList 1 → contras ( falso , BList 1 )
El lenguaje L ( G₂ ) es el conjunto de todas las listas finitas de valores booleanos que contienen verdadero al menos una vez. El conjunto L ( G₂ ) no tiene un tipo de dato equivalente en Standard ML, ni en ningún otro lenguaje funcional. Es un subconjunto propio de L ( G₁ ). El término del ejemplo anterior también pertenece a L ( G₂ ), como muestra la siguiente derivación:
BList 1 ⇒ contras ( falso , BList 1 ) ⇒ contras ( falso , contras ( verdadero , BList )) ⇒ contras ( falso , contras ( verdadero , nulo )).
Propiedades del lenguaje
Si L 1 , L 2 son ambos lenguajes de árbol regulares, entonces los conjuntos de árboles L 1 ∩ L 2 , L 1 ∪ L 2 , y L 1 \ L 2 también son lenguajes de árbol regulares, y es decidible si L 1 ⊆ L 2 , y si L 1 = L 2 .
Caracterizaciones alternativas y relación con otros lenguajes formales
- Las gramáticas de árboles regulares son una generalización de las gramáticas de palabras regulares .
- Los lenguajes de árbol regulares son también los lenguajes reconocidos por los autómatas de árbol ascendentes y los autómatas de árbol descendentes no deterministas. [ 2 ]
- Rajeev Alur y Parthasarathy Madhusudan relacionaron una subclase de lenguajes de árboles binarios regulares con palabras anidadas y lenguajes visiblemente apilados . [ 3 ] [ 4 ]
Aplicaciones
Las aplicaciones de las gramáticas de árboles regulares incluyen:
- Selección de instrucciones en la generación de código del compilador [ 5 ]
- Un procedimiento de decisión para la teoría de la lógica de primer orden de fórmulas sobre igualdad (=) y pertenencia a un conjunto (∈) como únicos predicados [ 6 ]
- Resolución de restricciones sobre conjuntos matemáticos [ 7 ]
- El conjunto de todas las verdades expresables en lógica de primer orden sobre un álgebra finita (que siempre es un lenguaje de árbol regular) [ 8 ]
- Búsqueda en grafos [ 9 ]
Véase también
- Restricción de conjuntos : una generalización de las gramáticas de árboles regulares.
- Gramática de adjunción de árboles
Referencias
- ↑ "Gramáticas de árboles regulares como formalismo para la subespecificación de alcance". CiteSeerX 10.1.1.164.5484 .
- ^ Común, Hubert; Dauchet, Max; Gilleron, Remi; Loding, Christof; Jacquemard, Florent; Lugiez, Denis; Tison, Sophie ; Tommasi, Marc (12 de octubre de 2007). "Técnicas y aplicaciones de autómatas de árboles" . Consultado el 25 de enero de 2016 .
- ↑ Alur, R.; Madhusudan, P. (2004). «Lenguajes visiblemente de pila» (PDF) . Actas del trigésimo sexto simposio anual de la ACM sobre Teoría de la Computación - STOC '04 . págs. 202–211 . doi : 10.1145/1007352.1007390 . ISBN 978-1581138528. S2CID 7473479 . Sección 4, Teorema 5,
- ↑ Alur, R.; Madhusudan, P. (2009). "Añadiendo estructura de anidamiento a las palabras" (PDF) . Journal of the ACM . 56 (3): 1– 43. CiteSeerX 10.1.1.145.9971 . doi : 10.1145/1516512.1516518 . S2CID 768006 . Sección 7
- ↑ Emmelmann, Helmut (1991). "Selección de código mediante reescritura de términos controlada regularmente". Generación de código: conceptos, herramientas y técnicas . Talleres de informática. Springer. págs. 3–29 .
- ↑ Comon, Hubert (1990). "Fórmulas ecuacionales en álgebras ordenadas". Proc. ICALP .
- ↑ Gilleron, R.; Tison, S .; Tommasi, M. (1993). "Resolución de sistemas de restricciones de conjuntos mediante autómatas de árbol". 10.º Simposio Anual sobre Aspectos Teóricos de la Informática . LNCS. Vol. 665. Springer. pp. 505–514 .
- ↑ Burghardt, Jochen (2002). "Axiomatización de álgebras finitas". Avances en Inteligencia Artificial . LNAI. vol. 2479. Saltador. págs. 222–234 . arXiv : 1403.7347 . Código Bib : 2014arXiv1403.7347B . ISBN 3-540-44185-9.
- ↑ Ziv-Ukelson, Smoly (2016). Algoritmos para la búsqueda en redes de gramática de árboles regulares y su aplicación a la minería de patrones de infección humano-viral . J. of Comp. Bio.
Lecturas adicionales
- Las gramáticas de árboles regulares ya fueron descritas en 1968 por:
- Brainerd, WS (1968). "La minimización de los autómatas de árbol" . Information and Control . 13 (5): 484– 491. doi : 10.1016/s0019-9958(68)90917-0 . hdl : 10945/40204 .
- Thatcher, JW; Wright, JB (1968). "Teoría generalizada de autómatas finitos con una aplicación a un problema de decisión de lógica de segundo orden". Mathematical Systems Theory . 2 (1): 57– 81. doi : 10.1007/BF01691346 . S2CID 31513761 .
- Un libro dedicado a las gramáticas de árboles es: Nivat, Maurice; Podelski, Andreas (1992). Autómatas de árboles y lenguajes . Estudios en informática e inteligencia artificial. Vol. 10. North-Holland.
- Los algoritmos sobre gramáticas de árboles regulares se analizan desde una perspectiva orientada a la eficiencia en: Aiken, A.; Murphy, B. (1991). "Implementing Regular Tree Expressions". ACM Conference on Functional Programming Languages and Computer Architecture . pp. 427– 447. CiteSeerX 10.1.1.39.3766 .
- Dada una correspondencia entre árboles y pesos, la generalización del algoritmo de Dijkstra para encontrar el camino más corto, propuesta por Donald Knuth, puede aplicarse a una gramática de árboles regular para calcular, para cada no terminal, el peso mínimo de un árbol derivable. Con base en esta información, es sencillo enumerar su lenguaje en orden creciente de peso. En particular, cualquier no terminal con peso mínimo infinito produce el lenguaje vacío. Véase: Knuth, DE (1977). "A Generalization of Dijkstra's Algorithm". Information Processing Letters . 6 (1): 1– 5. doi : 10.1016/0020-0190(77)90002-3 .
- Los autómatas de árbol regulares se han generalizado para admitir pruebas de igualdad entre nodos hermanos en árboles. Véase: Bogaert, B.; Tison, Sophie (1992). "Equality and Disequality Constraints on Direct Subterms in Tree Automata". Proc. 9th STACS . LNCS. Vol. 577. Springer. pp. 161–172 .
- Permitir pruebas de igualdad entre nodos más profundos conduce a la indecidibilidad. Véase: Tommasi, M. (1991). Automates d'Arbres avec Tests d'Égalités entre Cousins Germains . LIFL-IT.
- Lenguajes formales