Si está viendo ejemplos del mundo real donde la unificación es utilizada y útil, eche un vistazo a las gramáticas basadas en la unificación que se utilizan en lingüística computacional, por ejemplo, HPSG y LFG. En la superficie, esto se parece a otro sabor de unificación, pero en realidad son lo mismo.
La gramática basada en unificación se puede considerar como una CFG (gramática libre de contexto) donde las producciones se amplían con la unificación. Cada término en el CGF obtiene una MAV (matriz de valor de atributo), que es un gráfico acíclico dirigido de características y valores. La idea aquí es algo similar a las gramáticas de atributos utilizados en los compiladores.
Imagínese este juguete gramática:
S -> NP VP
NP -> Kim
NP -> The cats
VP -> V NP
V -> see
V -> sees
Tenemos una ligera overgeneration aquí en el acuerdo:
* Los gatos ve Kim [S [NP Los gatos] [VP [V ve] [ NP Kim]]]
con el fin de solucionar este problema podríamos refinar el CFG para incluir la noción de acuerdo:
S -> NP_sg VP_sg
S -> NP_sg VP_pl
NP_sg -> Kim
NP_pl -> The cats
VP_sg -> V_sg NP_sg
VP_sg -> V_sg NP_pl
V_sg -> sees
V_pl -> see
VP_pl -> V_pl NP_pl
VP_pl -> V_pl NP_sg
Aquí rechazaremos la sobregeneración de antes. Pero esto lleva a una explosión combinatoria muy rápidamente. Sin embargo podríamos aumentar cada término con una MAV y unificar juntos, cuando regrese de análisis:
S -> NP VP , C = A unified with B.
NP -> kim /[ AGR sg ]. We mark Kim as being singular
NP -> The cats/[ AGR pl ]
VP[ AGR #1 ] -> V [ AGR #1 ] NP
El # 1-notación están reentrancies, lo que significa que el valor de esta función debe ser la misma, de hecho ellos señalarán al mismo nodo en el gráfico después de la unificación, si es exitoso. Aquí en la práctica decimos que la característica de acuerdo de una frase verbal es la misma que la del verbo en la frase.
V -> See/[ AGR pl ]
V -> Sees/[ AGR sg ]
Con nuestra gramática aumentada juguete "Kim ver los gatos" es rechazado debido a que el NP y el vicepresidente no unificar, que tiene un valor diferente para su característica AGR. Cuando estamos analizando unificamos los AVM juntos, y por lo tanto ganamos mucha expresividad, lo que facilita a los ingenieros de gramática el escribir gramáticas. Por lo general, una UBG de cobertura amplia tiene en el orden de cien reglas, mientras que las CFG equivalentes, que pueden no existir, las CFG con unifacción están completas, tendrán reglas en el número de miles o más.
Para más detalles ver HPSG y LFG.
¿tratar aquí? http://stackoverflow.com/questions/1133289/simplest-example-of-need-un-unification-in-type-inference –
gracias, pero de alguna manera creo que esto es algo completamente diferente que estoy buscando. Estoy más interesado en la parte lógica de la unificación que en la parte de programación. –