• No se han encontrado resultados

Arboles de an´ alisis sint´ actico

2.2. Arboles

2.2.2. Arboles de an´ alisis sint´ actico

Hasta el momento se han representado las derivaciones de las cadenas generadas por las gram´aticas, tal y como han sido definidas, como una secuencia de derivaciones can´onicas directas. En la pr´actica, se suele optar por compactar estas secuencias en forma de´arboles de derivaci´on.

20 CAP´ITULO 2. CONCEPTOS PREVIOS Notaci´on Significado

T, T1, T2, ...,P, D Arboles etiquetados y ordenados

|T| N´umero de nodos en un ´arbolT

ra´ız(T) Nodo ra´ız del ´arbolT

prof(T) Profundidad de un ´arbolT

u, v,· · · ∈T Nodos de un ´arbolT

etiqueta(u) Etiqueta asociada al nodou

padre(u) Nodo padre del nodou

hijo(i, u) Hijoi-´esimo del nodou

hijos(u) Conjunto de nodos hijos del nodou

desc(u) Conjunto de nodos descendientes del nodou

anc(u) Conjunto de nodos ancestros del nodou

pre(u), post(u) Indices del nodouen preorden y postorden, respectivamente

t[i], con 1≤i≤ |T| Nodoi-´esimo del ´arbolT seg´un un orden dado T[i], con 1≤i≤ |T| Sub´arbol con ra´ız en el nodoi-´esimo del ´arbolT

T[i..j], con 1≤i≤j≤ |T| Bosque formado por los nodos comprendidos entre los nodost[i] yt[j] Cuadro 2.2: Notaciones y convenciones sobre ´arboles

S S + S S S + a a a S S + S S + S a a a

Figura 2.3: Ejemplos de ´arboles de derivaci´on.

Definici´on 2.24 (´arbol de derivaci´on).

Un´arbol de derivaci´onpara una GIC G= (N,Σ, P, S)es un ´arbol ordenado y etiquetado Dverificando: SiX es una etiqueta de un nodo, entonces X ∈Σ∪N ∪ {ε}.

Si u es un nodo etiquetado con un s´ımbolo no terminal A, y sus hijos, ordenados de izquierda a derecha, tienen como etiquetas a X1, . . . , Xn, entonces A → X1· · ·Xn es una producci´on de la

gram´atica.

Tal y como indica la definici´on, los nodos de los ´arboles de derivaci´on est´an etiquetados con los s´ımbolos de la gram´atica. Cada nodo interno estar´a etiquetado con un s´ımbolo no terminal que aparezca en el lado izquierdo de una regla. Adem´as, sus hijos estar´an etiquetados con los s´ımbolos terminales y no terminales presentes en la parte derecha de esa misma producci´on y ordenados, de izquierda a derecha, tal y como aparecen en la parte derecha de dicha regla. De esta forma, es posible representar de forma compacta y manejable un conjunto de derivaciones. Sin embargo, no es posible indicar expl´ıcitamente en un ´arbol de derivaci´on el orden el que se tienen que aplicar las reglas utilizadas. El hecho de no indicar el orden de las derivaciones hace posible que un mismo ´arbol puede representar a m´as de una derivaci´on indirecta que de lugar a una misma forma sentencial.

La figura 2.3 muestra los ´arboles correspondientes a las derivaciones mostradas en el ejemplo 2.2. Como se puede apreciar en esta figura, cada uno de los ´arboles se corresponde con una de las dos posibles derivaciones de la cadena “a+a+a” mostradas en el ejemplo y que se diferencian ´unicamente en el

2.2. ARBOLES 21 S a S a S a + + S S S

Figura 2.4: Representaci´on de bosques de an´alisis como grafosy-o.

orden de aplicaci´on de las reglas. Como tambi´en se puede observar en esta figura, la reconstrucci´on de la forma sentencial representada por un ´arbol de derivaci´on es directa. Simplemente basta con concatenar, en orden, los s´ımbolos asociados a las hojas del ´arbol. Esa idea de concatenaci´on de hojas se recoge en el concepto defrontera

Definici´on 2.25 (frontera de un ´arbol).

Sea una GICG = (N,Σ, P, S)y sea T un ´arbol de derivaci´on para esa gram´atica. La fronteradel ´arbol de derivaci´onT es la cadena,α∈ {Σ∪N}∗, resultante de concatenar, ordenadas de izquierda a derecha,

todas las etiquetas asociadas a las hojas deT.

En la pr´actica, ser´an especialmente interesantes los ´arboles de derivaci´on que representen la generaci´on de las cadenas del lenguaje, esto es, aquellos cuya frontera est´e formada exclusivamente por s´ımbolos terminales. Este tipo particular de ´arboles de derivaci´on se denominan´arboles de an´alisis.

Definici´on 2.26 (´arbol de an´alisis).

Dada una GICG= (N,Σ, P, S), un ´arbol de an´alisis es un ´arbol de derivaci´on donde: La etiqueta de la ra´ız esS.

La frontera del ´arbol esw∈ L(G).

Como se desprende de la definici´on, los ´arboles de an´alisis no son m´as que ´arboles de derivaci´on con la restricci´on de que su ra´ız debe ser el axioma de la gram´atica y todas sus hojas deben ser s´ımbolos terminales. De este modo, un ´arbol de an´alisis representar´a como se puede generar un cadena del lenguaje asociado a una GIC, indicando que producciones se deben aplicar, aunque no el orden en el que deben realizarse las derivaciones correspondientes. Los dos ´arboles de la figura 2.3 son posibles ´arboles de an´alisis para la cadena “a+a+a” del ejemplo 2.2 empleando la gram´aticaGN.

Para terminar esta secci´on introducimos una alternativa com´unmente empleada para representar de forma conjunta varios ´arboles de derivaci´on en una ´unica estructura de representaci´on. En estos casos nos referiremos al conjunto as´ı formado comobosque de derivaci´on. Esta situaci´on ocurrir´a t´ıpicamente en el an´alisis de sentencias ambiguas. En esos casos existir´a m´as de una derivaci´on can´onica y se desear´a representarlas todas de forma adecuada. Frecuentemente, los ´arboles implicados en esos bosques de derivaci´on tendr´an sub´arboles comunes, por lo que resultar´a conveniente compartir dichas partes representando el bosque como un grafo y-o al que se denomina bosque compartido. En estos bosques, que estudiaremos con detalle en el cap´ıtulo 7, no se cumple la exigencia de que los ´arboles que los componen tengan nodos diferentes. As´ı, es posible que un mismo conjunto de nodos pertenezca a m´as de

22 CAP´ITULO 2. CONCEPTOS PREVIOS un ´arbol de an´alisis. Si bien esta situaci´on puede complicar ligeramente el procesamiento de esos ´arboles, permitir´a ahorrar espacio en la representaci´on de los m´ultiples an´alisis de la cadena. La figura 2.4 muestra una representaci´on del grafoy-o que representa a los dos an´alisis posibles de la cadena “a+a+a” del ejemplo 2.2. En esta figura las lineas punteadas representan las diferentes alternativas de los nodos-o. Los nodos-yse corresponden con los nodos usuales de los ´arboles de an´alisis. Y los nodos con m´as de un padre, representan la compartici´on de estructuras comunes entre dos o m´as posibles an´alisis de la cadena.

Parte II

Reconocimiento de Patrones en

Arboles

Cap´ıtulo 3

Reconocimiento de patrones en

cadenas

En este cap´ıtulo se realiza una introducci´on al problema del reconocimiento de patrones en cadenas. Como veremos en cap´ıtulos posteriores, es un problema ´ıntimamente relacionado con el reconocimiento de patrones en ´arboles. De hecho, la comparaci´on de cadenas de caracteres resulta ser un caso particular de la comparaci´on de ´arboles. Esto es as´ı, puesto que toda cadena de caracteres puede representarse mediante un ´arbol, en el cual cada car´acter de la cadena se corresponde con una hoja. Ambos problemas se pueden formular como problemas de c´alculo de distancias y, en ambos casos, se sigue la aproximaci´on de medir esa distancia como el coste de una transformaci´on. En un caso, se trata de la transformaci´on de un ´arbol en otro distinto, y en el otro, es la transformaci´on de una cadena en otra.

El reconocimiento de cadenas es un problema ampliamente estudiado [32], por lo que nos limitaremos a presentar una breve introducci´on del mismo y al estudio de un algoritmo cl´asico, el propuesto por Wagner y Fischer [34]. Si bien este algoritmo no es especialmente eficiente, si es de inter´es para nuestro trabajo porque las estrategias de reconocimiento de patrones sobre ´arboles que estudiaremos lo toman como punto de partida. Estos algoritmos pretenden extender la aproximaci´on seguida en el de Wagner y Fischer al caso de los ´arboles.

Comenzaremos este cap´ıtulo introduciendo el reconocimiento de patrones en cadenas, que ser´a formulado como un problema de c´alculo de distancias de edici´on. Veremos a continuaci´on la soluci´on propuesta por Wagner y Fischer, y estudiaremos su funcionamiento. Terminaremos el cap´ıtulo presentando el problema del reconocimiento aproximado de patrones en cadenas. Estudiaremos distintas alternativas a la hora de definirlo y c´omo se puede resolver dentro del marco del algoritmo de Wagner y Fischer.

3.1.

Definici´on del problema

La aproximaci´on al reconocimiento de patrones en cadenas que vamos a describir se basa en la noci´on de distancia de edici´on. Se definir´a un conjunto deoperaciones de edici´on que se podr´an aplicar sobre las cadenas para transformarlas. Generalmente se consideran las operaciones de cambio, inserci´on y borrado de caracteres. Para determinar la proximidad entre dos cadenas se determinar´a la mejor forma de transformar una de ellas en la otra, empleando las operaciones definidas. Asociando un coste num´erico a cada operaci´on de edici´on empleada se podr´a obtener un valor num´erico que cuantifique la distancia de edici´on entre las dos cadenas.

Para formalizar el problema, comenzaremos definiendo lasoperaciones de edici´on sobre cadenas que utilizaremos en adelante.

Definici´on 3.1 (operaciones de edici´on sobre cadenas).

Sea x=a1, a2, . . . , an una cadena de longitud n sobre un alfabeto Σ. Se definen los siguientes tipos de

operaciones de edici´on sobre la cadena x:

26 CAP´ITULO 3. RECONOCIMIENTO DE PATRONES EN CADENAS Cambio.Siendo x=uav, la operaci´on de cambiodel car´acter a por el car´acter b, denotada a→b, dar´a lugar a la cadena x’=ubv.

Inserci´on.Siendo x=uv, la operaci´on de inserci´ondel car´acter a , denotadaε→a, dar´a lugar a la cadena x’=uav.

Borrado.Siendo x=uav, la operaci´on de borrado del car´acter a , denotada a→ε, dar´a lugar a la cadena x’=uv.

Siendoε6∈Σun car´acter especial que denotar´a al car´acter nulo.

Intuitivamente, una operaci´on de cambio simplemente sustituye un car´acter de una cadena por otro. La operaci´on de inserci´on a˜nade un nuevo car´acter y la de borrado elimina uno de los presentes en la cadena inicial. Por ejemplo, la operaci´ona→e sobre la cadenax=”casa”da lugar a la cadena x′=”cesa”. La operaci´on de borrado a → ε sobre la misma cadena da lugar a x′=”cas 2 la inserci´on ε r produce

x′=”casar”. Si bien pueden definirse otras posibles operaciones de edici´on sobre cadenas, como por ejemplo el intercambio de caracteres en dos posiciones adyacentes, todas ellas podr´an llevarse a cabo mediante la combinaci´on de dos o m´as de las operaciones anteriores. Por ejemplo, intercambiando la ”c 2 la ”a”de la cadena x=”casa”, obtenemos x′=”acsa”, que es equivalente a realizar la eliminaci´on del car´acter ”c”,c→ε, y su posterior inserci´on,ε→c, a continuaci´on del car´acter ”a”.

Para transformar las operaciones de edici´on en un valor num´erico se define unafunci´on de coste, γ, que asocia a cada operaci´on un n´umero real no negativo.

Definici´on 3.2(funci´on de coste).

Se define la funci´on de coste γ que asocia a cada operaci´on de edici´on a → b, con a, b ∈ Σ∪ {ε}, un n´umero real no negativo,γ(a→b), que verifica las siguientes propiedades:

1. γ(a→b)≥0, ∀a, b∈Σ∪ {ε}

2. γ(a→a) = 0, ∀a∈Σ

3. γ(a→b) =γ(b→a), ∀a, b∈Σ∪ {ε}

4. γ(a→c)≤γ(a→b) +γ(b→c), ∀a, b, c∈Σ∪ {ε}

SiS=op1, op2, . . . opn es una secuencia de operaciones de edici´on , su coste,γ(S), se calcula como:

γ(S) = n X i=1

γ(opi)

Como se aprecia en la definici´on, la funci´on γ es una m´etrica, puesto que debe cumplir las cuatro condiciones anteriores. Una vez definida la funci´on de coste correspondiente se podr´a transformar en un valor num´erico el conjunto de operaciones de edici´on necesarias para transformar una cadena en otra, como se muestra en el ejemplo 3.1.

Ejemplo 3.1.

Suponiendo que el coste de cada operaci´on de edici´on sea 1, la distancia entre la cadena x=”casa” e y=”cesar”ser´ıa 2. Dicha distancia se corresponde con el coste de cambiar el car´acter ”a”por ”e”,

γ(a→e) = 1, m´as el coste de insertar el car´acter ”r”,γ(ε→r) = 1.

Normalmente, dada dos cadenas, existir´an m´ultiples conjuntos de operaciones de edici´on que permitan transformar una en otra. Cada una de ellas emplear´a distintas operaciones y, por lo tanto, podr´an tener diferentes costes. Para calcular la distancia de edici´on entre dos cadenas nos interesa hallar el conjunto de operaciones que den lugar al menor coste de transformaci´on posible. Teniendo esta ´ultima idea en cuenta se define ladistancia de edici´on entre dos cadenas del siguiente modo: