• No se han encontrado resultados

4. Primeras aportaciones

4.2. Algoritmo de Selkow

El algoritmo propuesto por Selkow [37] es una extensi´on del algoritmo de reconocimiento de cadenas de Wagner y Fischer [34], que pretende aplicar la soluci´on propuesta por estos autores al problema de la comparaci´on de ´arboles.

36 CAP´ITULO 4. PRIMERAS APORTACIONES. El algoritmo considera las mismas operaciones de edici´on b´asicas que Wagner y Fischer, en este caso aplicadas a nodos en lugar de a caracteres: inserci´on de un nodo, borrado de un nodo y cambio de la etiqueta de un nodo. Selkow a˜nade una restricci´on importante, se exige que las operaciones de inserci´on y borrado s´olo sean aplicadas en las hojas de los ´arboles.

Definici´on 4.1(operaciones de edici´on de Selkow).

Sea T un ´arbol ordenado y etiquetado y sea Σ el alfabeto de sus etiquetas. Se considera el siguiente conjunto de operaciones de edici´onsobre ese ´arbol:

Cambio de etiqueta. Se reemplazar´a la etiqueta a∈ Σasociada a un nodo u del ´arbol T por otra etiquetab∈Σ. Tal operaci´on se notar´a comoa→b.

Borrado. Se elimina del ´arbol T un nodo hoja u etiquetado como a∈Σ. La operaci´on de borrado del nodo etiquetado comoa, se denotar´a comoa→ε, siendoε /∈Σun s´ımbolo que representa a un nodo nulo.

Inserci´on. Se a˜nade al ´arbol T un nodo hoja etiquetado como b ∈Σ. La notaci´on empleada para representar esta operaci´on ser´aε→b.

De esta forma, al incluir las restricciones sobre inserciones y borrados, s´olo cuando la totalidad de los nodos descendientes de un nodo determinado hayan sido eliminados, se podr´a borrar ese nodo. De modo an´alogo, s´olo se podr´an insertar nodos sin descendientes, es decir, hojas. Esta limitaci´on obliga a que, en el caso de que se decida que un nodo no se debe borrar o insertar, los padres de ese nodo tampoco podr´an ser borrados ni insertados. La distancia calculada por el m´etodo de Selkow representa el coste de transformar un ´arbolT en otroT′ mediante la secuencia de operaciones que, respetando las restricciones sobre inserciones y borrados, ofrezcan el m´ınimo coste.

La aproximaci´on seguida por el algoritmo es recursiva. En la primera llamada al algoritmo se tratan las ra´ıces de los dos ´arboles T y T′, realizando una llamada recursiva al algoritmo para cada par de sub´arboles hijos en ambas ra´ıces. En concreto, dados como entrada un ´arbol patr´onAy un ´arbol datoB, se calcula el coste de la operaci´on cambio de etiquetas de la ra´ız deAa la ra´ız de B y se a˜nade a dicho coste la distancia existente entre el conjunto de sub´arboles hijos de A; A1, A2, . . . , An y el conjunto de sub´arboles hijos deB;B1, B2, . . . , Bm.

Para el c´alculo de la distancia entre los conjuntos de sub´arboles hijos de cada par de ´arbolesAyB, se utiliza una soluci´on id´entica a la del algoritmo de Wagner y Fischer [34]. De hecho, se puede considerar este ´ultimo como una subrutina del algoritmo de Selkow.

Para cada par de ´arboles A y B que recibe el algoritmo, se crea una matriz de distancias D de dimensi´on (n+ 1)×(m+ 1), siendonel n´umero de hijos de la ra´ız de A, ym el n´umero de hijos de la ra´ız deB. La celdaD[0,0] almacena el coste del cambio de etiquetas entre la ra´ız del ´arbolAy la ra´ız de B. Cada entrada de esa matriz se calcula de forma an´aloga a la del algoritmo de Wagner y Fischer [34]. Se utilizan dos funciones auxiliares,inserci´on(Bi) yborrado(Ai). La primera de ellas calcula el coste de insertar todos los nodos del sub´arbolBi. La segunda,borrado(Aj), calcula el coste de eliminar todos los nodos de un sub´arbolAi. De este modo, la distancia que se almacena en la celdaD[i, j] se calcula tomando el m´ınimo coste de las tres posibles opciones para transformar el conjunto de sub´arbolesA1, A2, . . . , Ai en el conjunto de sub´arbolesB1, B2, . . . , Bj:

Sumar al coste de transformarA1, A2, . . . , Ai en B1, B2, . . . , Bj−1, el coste de insertar el sub´arbol Bj, calculado por la subrutinainserci´on.

Sumar al coste de transformarA1, A2, . . . , Ai−1 en B1, B2, . . . , Bj, el coste de borrar el sub´arbol Ai, calculado por la subrutinaborrado.

Sumar al coste de transformar A1, A2, . . . , Ai−1 en B1, B2, . . . , Bj−1, el coste de transformar el sub´arbolAi enBj, calculado por una llamada recursiva al algoritmo.

4.2. ALGORITMO DE SELKOW 37 d b a h e M c g f d b a c f g h e Y X c h e W Z a

T’’

T

T’

d(T,T’)=6 d(T,T’’)=6

Figura 4.1: Ejemplos de distancias Selkow.

El c´alculo de esta ´ultima opci´on supondr´a realizar una llamada recursiva al algoritmo, pas´andole como par´ametro los dos nuevos sub´arboles,Ai yBj. Como en el algoritmo para la distancia entre cadenas, al finalizar tendremos en la celdaD[n, m], la distancia entre los dos ´arboles. En el algoritmo 4.1 se muestra el pseudoc´odigo propuesto por Selkow.

Algoritmo 4.1Distancia de Selkow

function

distancia(A, B)

return

real;

Entrada: A: ´arbol patr´on,B: ´arbol dato

Salida: distanciaSelkow entreAyB

/*inicializaci´on matriz*/

n= n´umero de hijos dera´ız(A) m= n´umero de hijos dera´ız(B) D[0,0] =γ(ra´ız(A)→ra´ız(B))

fori= 1to ndo

D[i,0] =D[i−1,0] +borrado(Ai) end for forj= 1to mdo D[0, j] =D[0, j−1] +inserci´on(Bj) end for /*c´alculo de distancias*/ fori= 1to ndo forj= 1to mdo D[i, j] =min    D[i, j−1] + inserci´on(Bj), D[i−1, j] + borrado(Ai),

D[i−1, j−1] + distancia(Ai, Bj) /*llamada recursiva*/ end for

end for

return(D[n, m]);

Pese a su simplicidad, la t´ecnica de reconocimiento de patrones de Selkow presenta un problema importante. La propuesta de este autor utiliza un concepto de distancia demasiado restrictivo, que no se ajusta a las necesidades del tipo de aplicaciones en las que pretendemos utilizar este tipo de t´ecnicas. En efecto, el exigir que las operaciones de borrado e inserci´on se apliquen s´olo sobre nodos hoja, da lugar

38 CAP´ITULO 4. PRIMERAS APORTACIONES. a inconsistencias como la mostrada en la figura 4.1, y origina unos valores de distancias que no reflejan adecuadamente la proximidad entre dos ´arboles.

Suponiendo un coste unitario para cada operaci´on de edici´on sobre los ´arboles de la figura 4.1. Las distancias entreT yT′ y entreT yT′′son id´enticas. En el caso deT yT, la distancia resulta de cambiar la etiqueta del nodocpor la etiquetaM, eliminar los nodosf ygdeT e insertar los nodosc,f ygdeT′. ParaT yT′′, se insertan los nodosW yZ, se elimina af y agdeT y se cambia abporX y adporY. Sin embargo, pese a las distancias obtenidas, es razonable pensar que el ´arbolT′ es mucho m´as pr´oximo aT queT′′, puesto que s´olo difieren en un nodo. Este ejemplo pone de manifiesto la principal debilidad del algoritmo de Selkow. El uso de un conjunto de operaciones de edici´on demasiado restrictivas, que no permite evaluar la similaridad entre ´arboles de forma adecuada.