Sunteți pe pagina 1din 9

La métrica de Levenshtein

Abdiel E. Cáceres González
Universidad Juárez Autónoma de Tabasco, DACB

La distancia de Levenshtein, también conocida como distancia de edición, es una


medida frecuentemente utilizada en bioinformática. A pesar de que fué creada a me-
diados del siglo XX, y de que se han hecho implementaciones en muchos lenguajes
de programación, es difı́cil encontrar referencias de una demostración de que esta las
secuencias creadas con un alfabeto finito de sı́mbolos son un espacio métrico con la
distancia de Levenshtein. Determinar formalmente este espacio métrico, es útil para
futuras formalizaciones en la teorı́a de bioinformática.

Levenshtein’s distance, also known as edit distance, it’s a frequently used measure
on bioinformatics. Although it was created in the mid-twentieth century, and that
there have been many implementations in many programming languages, there is no
demonstration that shown that sequences formed with some finite alphabet of symbols
forms a metric space with Levenshtein’s distance. Determine formally this metric
space, it is useful for future formalization of different works related with bioinformatics
theory.

Palabras clave: Distancia de edición, Bioinformática, Espacios métricos.


Keywords: Edit distance, Bioinformatics, Metric spaces.

1. Introducción

La distancia Levenshtein, conocida también como distancia de edición, fué creada e


implementada por Vladimir Levenshtein a mediados del sigle XX [1], con el propósito
de medir la diferencia entre dos secuencias de sı́mbolos. Recientemente, en el campo
de la bioinformática, se ha utilizado esta distancia para determinar la diferencia entre
secuencias genómicas y proteómicas [3].
Desde su creación a la fecha, se han hecho muchas implementaciones compu-
tacionales de esta distancia, en diferentes lenguajes de programación, como una im-
plementación en Perl [4]; en Java, C++ y VB [5], donde incluso, se ofrece una lista
de implementaciones en muchos otros lenguajes de programación, hechas por otros
autores.
A pesar de que esta distancia ha sido estudiada, comparada, implementada y uti-
lizada en muchas oportunidades, es muy difı́cil encontrar referencias que demuestren
que la distancia de Levenshtein es una medida formal de distancia, de acuerdo a los
parámetros establecidos en topologı́a. Contar con referencias tales, es importante
para crear redes de semejanza, o también conocidas como Latices, que determinen las
relaciones entre diversas secuencias, considerando un criterio adecuado para manipu-
lar la clase de información que proporcionan las secuencias de sı́mbolos.
∗ Recibido el 9 de septiembre de 2008 y aceptado el 24 de noviembre de 2008
† Dirección postal: Carr. Cunduacán-Jalpa Km 1, Cunduacán Tabasco, México. A.P. 24 C.P.
86690. Tel.(+52)914 336-0928. Correo electrónico: abdielc@acm.org

Revista de Ciencias Básicas UJAT, volumen 7 número 2 (Diciembre 2008) p 35–43


36 Abdiel E. Cáceres González

En este artı́culo se da una demostración formal para determinar que la distancia


de Levenshtein, denotada por D, determina un espacio métrico para el conjunto de
secuencias de sı́mbolos creadas con un alfabeto predeterminado. Consideraremos el
alfabeto C de las cadenas, que se forman de un conjunto finito de sı́mbolos, colocados
uno después del otro, sin intercalar algún sı́mbolo que no pertenezca al alfabeto.

La distancia de Levenshtein D : C ∗ × C ∗ → [0, N0 ) como se propone en (3), es


una función que considera el conjunto C como generador de todas las secuencias
o subsecuencias1 , el conjunto C ∗ es el conjunto de secuencias finitas generadas con
sı́mbos de C; y la imagen de la función asocia un valor entero no negativo a cada par
de secuencias.

2. Similitud entre secuencias

El concepto de similitud tiene su fundamento en la cantidad de operaciones de edición


que se requieren para transformar una secuencia en otra. Las operaciones de edición
que se consideran son insertar un sı́mbolo, y borrar un sı́mbolo2 . La interpretación
de similitud debe entenderse de acuerdo a las siguientes definiciones:

Definición 1. Sean x =< x1 , x2 , . . . , xn > y y =< y1 , y2 , . . . , ym > dos secuencias


finitas de sı́mbolos en algún alfabeto finito C. y es una subsecuencia de x, denotado
por y ⊂ x, si existe un conjunto de ı́ndices {i1 , i2 , . . . , im } en x, con cada 1 ≤ ik ≤ n,
y 1 ≤ k ≤ m, tales que i1 < i2 < · · · < im y que y =< xi1 , xi2 , . . . , xim >.

Definición 2. Una subsecuencia y es una subsecuencia común para las secuencias


xa y xb , denotado por y ⊂ (xa , xb ), si y ⊂ xa y y ⊂ xb .

Definición 3. La similitud entre dos secuencias x, y ∈ C ∗ , denotada por S(x, y) está


dada por:
S(x, y) = max{|z| : z ⊂ (x, y)}; con z ∈ C ∗ , (1)

donde |z| indica la longitud de la secuencia z, es decir, la cantidad de sı́mbolos que


contiene.

Nótese que S(x, y) = 0 cuando x no tienen sı́mbolos comunes con y, esto es, no
existe alguna subsecuencia común para x y y, de modo que la longitud de la secuencia
vacı́a es 0; en el otro extremo, S(x, y) = min{|x|, |y|} cuando o bien x está contenida
completamente en y, ó y está contenida completamente en x. De modo que

0 ≤ S(x, y) ≤ min{|x|, |y|}. (2)

El problema de determinar la similitud de dos secuencias, se convierte entonces,


en encontrar el tamaño de la subsecuencia común más larga entre las secuencias x y
y.
1 En el caso del genoma se considera el alfabeto de nucleótidos T,C,G,A; de modo similar, el

proteoma tiene un alfabeto determinado de 20 sı́mbolos.


2 Originalmente se consideraba la sustitución como una operación, sin embargo esta no es consi-

derada porque puede crearse a partir de una inserción y un borrado

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43


El espacio eétrico de la distancia de Levinshtein 37

El procedimiento para encontrar la subsecuencia común más larga, se describe con


el siguiente algoritmo, que llena una matriz de orden n × m con números enteros que
indican la similitud de cada subsecuencia. En este algoritmo se considera que |x| = n
y |y| = m.
Algoritmo que encuentra la similitud de dos secuencias[2]:

S(x, y) : C ∗ × C ∗ → N0

1: for i = 0 to n do
2: Si,0 = 0
3: end for
4: for j = 0 to m do
5: S0,j = 0
6: end for
7: for i = 0 to m do
8: for j = 0to n do
max{Si−1,j , Si,j−1 } si 6 yj
xi =
9: Si,j =
Si−1,j−1 + 1 si xi = yj
10: end for
11: end for
12: return z = Sn,m .

3. Distancia de Levenshtein

La distancia de Levenshtein entre dos secuencias x, y ∈ C ∗ , con n = |x|, m = |y|,


está definida como:

D(x, y) = n + m − 2S(x, y), (3)


donde S(x, y) es la similitud entre las secuencias x y y. Los lı́mites de esta distancia
se logran, por un lado cuando la similitud entre las secuencias comparadas es nula, y
en el otro extremo, cuando la similitud entre las secuencias comparadas es máxima.
Cuando la simlitud es nula (secuencias sin sı́mbolos comunes), la distancia es n + m.
Cuando la similitud es máxima (se comparan secuencias iguales), la distancia es 0.
0 ≤ D(x, y) ≤ n + m (4)

La idea general de esta distancia es que dos secuencias distan entre sı́ tanto como
sı́mbolos se deban borrar y sı́mbolos se deban agregar, para hacer iguales ambas
secuencias. De modo que el lı́mite máximo de esta distancia se debe leer como: se
deben borrar todos los n sı́mbolos de x y agregar todos los m sı́mbolos de y.

Tanto las funciones de distancia como la de similitud se encuentran definidas en


[2], donde se hace un estudio de la complejidad algorı́tmica de este procedimiento,
aunque las lı́neas 7 - 11 del algoritmo sugieren que la complejidad es O(n2 ) para
encontrar la similitud, y Θ(1) para encontrar la distancia3 .

3 Recordemos que O(f (n)) dice que existe una función f (n) que acota superiormente el tiempo

de ejecución del algoritmo, y Θ(1) dice que el tiempo de ejecución del algoritmo (para encontrar la
distancia en este caso) es constante. Para un estudio más profundo sobre funciones asintóticas para
acotar comportamientos algorı́tmicos, consulte la referencia [2].

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43


38 Abdiel E. Cáceres González

4. El espacio métrico de las secuencias

Sea C ∗ el conjunto de todas las secuencias válidas de longitud finita4 ; y sea también
D como la definida en (3).

Teorema 1. El par (C ∗ , D) es un espacio métrico.

Prueba. Para probar que la distancia D sea una métrica sobre C ∗ , se debe cumplir:

1. D(x, y) ≥ 0 ∀x, y ∈ C ∗ .

2. D(x, y) = 0, si y sólo si x = y ∀x, y ∈ C ∗ .

3. D(x, y) = D(y, x) ∀x, y ∈ C ∗ .

4. D(x, y) + D(x, z) ≥ D(y, z) ∀x, y, z ∈ C ∗ .

Es bueno recordar que el conjunto de puntos propuesto está determinado por


C ∗ = {x|x = (xi )0≤i<∞ , xi ∈ C}, es el conjunto de secuencias finitas en C, por ejemplo
C = {T, C, G, A}, para el caso del genoma.

4.1 D(x, y) ≥ 0 ∀x, y ∈ C

Si x =< x1 , . . . , xn > y y =< y1 , . . . , ym >, la distancia propuesta es |x| + |y| −


2S(x, y), como 0 ≤ S(x, y) ≤ min{|x|, |y|},

si S(x, y) = |x|, entonces |y| > |x| y

D(x, y) = |x| + |y| − 2|x|,


= |y| − |x|,
≥ 0.

si S(x, y) = |y|, entonces |x| > |y| y

D(x, y) = |x| + |y| − 2|y|,


= |x| − |y|,
≥ 0.

si S(x, y) = |y| = |x|, entonces

D(x, y) = |x| + |x| − 2|x|,


= |y| + |y| − 2|y|,
= 0.

4.2 D(x, y) = 0 si y sólo si x = y

1. Si D(x, y) = 0 entonces x = y.
Como D(x, y) = 0, entonces |x| + |y| = 2S(x, y)

4 Bien pueden ser genomas, proteomas, o partes de ellos.

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43


El espacio eétrico de la distancia de Levinshtein 39

Si x = λ (la palabra nula), entonces |x| = 0, de modo que |y| = 2S(λ, y) debe conser-
varse. Esto hace que |y| = 0, puesto que la S(λ, y) es cuando mucho la cardinalidad
de la secuencia de menor longitud, y esta es λ, con |λ| = 0. Si |y| = 0, entonces
también y = λ y ası́ x = y.
Por otro lado, si ninguna de las secuencias es nula, aun debe conservarse la igualdad
|x| + |y| = 2S(x, y).
Supongamos ahora que x ⊂ (x, y), esto es, x es la subsecuencia común más grande
de las secuencias x y y. Entonces, |x| + |y| = 2|x|, y para que esto ocurra, |x| = |y|.
Como x ⊂ y, todos los sı́mbolos de x ocurren en y en las mismas posiciones, esto
significa entonces que x = y.

2. Si x = y entonces D(x, y) = 0. Observese que, |x| = |y|. Como ambas secuencias son
iguales, S(x, y) = n

|x| + |y| − 2S(x, y) = n + n − 2n,


D(x, y) = 0.

4.3 D(x, y) = D(y, x) ∀x, y ∈ C ∗

Tómese δ ⊂ (x, y) : |δ| = S(x, y), con δ =< δ1 , . . . , δn >. Como δ es una subsecuencia
de x, existe un conjunto {i1 , . . . in } de ı́ndices en x, con cada 1 ≤ ik ≤ |x| y 1 ≤ k ≤ n,
tales que i1 < · · · < in y que δ =< xi1 , . . . , xin >.

Pero debido a que δ también es una subsecuencia de y, se puede dar un conjunto


{j1 , . . . , jn } de ı́ndices en y, con cada 1 ≤ jk ≤ |y| y 1 ≤ k ≤ n, tales que j1 < · · · < jn
y que δ =< yj1 , . . . , yjn >. Ası́ que

n = |δ| = S(x, y) = S(y, x). (5)

De tal modo que


D(x, y) = |x| + |y| − 2S(x, y),
= |x| + |y| − 2S(y, x),
= |y| + |x| − 2S(y, x),
= D(y, x).

4.4 D(x, y) + D(y, z) ≥ D(x, z)

|x| + |y| − 2S(x, y) + |y| + |z| − 2S(y, z) ≥ |x| + |z| − 2S(x, z)


2|y| − 2S(y, x) − 2S(y, z) ≥ −2S(x, z)
|y| − S(y, x) − S(y, z) + S(x, z) ≥ 0 (6)

Se probará (6). Sean:

α =< α1 , α2 , . . . , α|α| >: α ⊂ (x, y) y |α| = S(x, y).


β =< β1 , β2 , . . . , β|β| >: β ⊂ (y, z) y |β| = S(y, z).

Como α ⊂ (x, y), entonces α se puede expresar con sı́mbolos de x y de y:

α =< xp1 , . . . , xp|α| >=< yq1 , . . . , yq|α| >, (7)


Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43
40 Abdiel E. Cáceres González

para algún conjunto de ı́ndices {p1 , . . . , p|α| } en x y algún conjunto de ı́ndices


{q1 , . . . , q|α| } en y.
Del mismo modo

β =< yr1 , . . . , yr|β| >=< zs1 , . . . , zs|β| > (8)

para algún conjunto de ı́ndices {r1 , . . . , r|β| } en y y también algún conjunto de ı́ndices
{s1 , . . . , s|β| } en z.
Se observa que |α| ≤ |y| y del mismo modo |β| ≤ |y|. Como ambas subsecuencias α
y β tienen sı́mbolos de la secuencia y, entonces existe una subsecuencia δ ⊂ y donde
δ =< δ1 , . . . , δ|δ| >: |δ| = S(α, β). Por (7) y (8), es posible escribir δ con sı́mbolos de
x y de z.
δ =< xm1 , . . . , xm|δ| >=< zn1 , . . . , zn|δ| >, (9)

con |δ| ≤ min{|α|, |β|}. De modo que δ ⊂ (x, y), porque α ⊂ x y β ⊂ y; también es
δ ⊂ (y, z), aunque no necesariamente la de mayor longitud, de modo que |δ| ≤ S(x, z).
Entonces |α| representa la cantidad de sı́mbolos que comparten las secuencias x y y,
|β| es la cantidad de sı́mbolos que comparten las secuencias y y z, y |δ| es la cantidad
de sı́mbolos que pertenecen a y solamente.
Ası́, |α| + |β| − |δ| es la cantidad de sı́mbolos de y que son compartidos con las
secuencias x y z, significa que |y| ≥ |α| + |β| − |δ|, en consecuencia

|y| − |α| − |β| + |δ| ≥ 0.

Como |δ| ≤ S(x, z), |α| = S(x, y) y |β| = S(y, z), se verifica (6):

|y| − S(x, y) − S(y, z) + S(x, z) ≥ 0.

5. Algoritmo k-means para agrupar secuencias genómicas

La distancia de Levenshtein es útil en muchas aplicaciones, entre ellas, en el campo de


la bioinformática. En este apartado se describe un algoritmo que utiliza la distancia
Levenshtein para agrupar individuos que son caracterizados por su secuencia de ADN,
mediante el clásico método de agrupamiento conocido como k-means.
El agrupamiento mediante el método k-means, fué desarrollado J. MacQueen
(1967) [6] y posteriormente por J. A. Hartigan y M. A. Wong [7] al rededor de 1975.
De manera simple, el algoritmo k-means sirve para clasificar objetos basados en sus
atributos en k grupos. k es un número entero positivo. La agrupación se realiza al
minimizar la suma de los cuadrados de las distancias entre los datos y su centroide
correspondiente, con el propósito de clasificar los datos.
En la figura 1 se muestra una secuencia de actividades que se desarrollan para
llevar a cabo el algoritmo k-means.

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43


El espacio eétrico de la distancia de Levinshtein 41

Figura 1. Diagrama de flujo que muestra el desarrollo del algoritmo k-means.

1. En primer lugar se determina k, el número de centroides, que a la postre conformarán


k grupos con los n indivı́duos.

2. Se seleccionan los k individuos que servirán como centroides. En este ejemplo se han
coleccionado individuos que tienen un código genético de 60 cromosomas5 . La longitud
de 60 para los cromosomas, se eligió arbitrariamente.

3. Cada individuo debe reconocer cuál es el centroide más cercano, para realizar esto
se determina D(x, c), para todos los individuos x y los centroides c, y eligiendo como
centroide más cercano, aquel que hace

cnearest (x) = min{D(x, ci ) : 1 ≤ i ≤ k}

4. Cada centroide forma de este modo una partición del conjunto de individuos. Todos
los elementos de cada parte tienen en común que son más cercanos al centroide elegido
que a cualquier otro.

5. Si los centroides elegidos fueron elegidos de tal modo que se requiere agrupar a otros
individuos en torno a ellos, este algoritmo puede terminar. Sin embargo, en la versión
original del algoritmo, se desea agrupar individuos sin un conocimiento a priori de
quienes deben ser los centroides. De modo que se toma la decisión de seleccionar un
nuevo centroide. Para cada grupo, se elige como nuevo centroide aquel individuo que
haya mostrado una diferencia menor entre la distancia a su centroide y el promedio
muestral de las distancias. Esto hace que el nuevo centroide sea el que esté más
cercano al centro de masa del cúmulo. Si no hubo cambios en la elección del nuevo
centroide, el algoritmo termina; de otro modo, se vuelve al paso 2 para una nueva
iteración.

5 Teóricamente es posible con cualquier número de cromosomas, sin embargo a medida que el

tamaño del genoma crezca, los recursos computacionales aumentan rápidamente.

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43


42 Abdiel E. Cáceres González

Figura 2. Agrupación de individuos considerando el parecido de su código genético. Se han


establecido 10 centroides con 210 individuos.

Debido a que se utiliza la distancia Levenshtein, es irrelevante la posición de los


individuos en el plano euclideano (figura 2: izquierda), de modo que se ha elegido
distribuir los centroides en la periferia de un cı́rculo, de modo que sean fácilmente
distinguibles a la vista.

Los individuos son agrupados considerando la distancia Levenshtein (figura 2:


derecha), y los grupos son visualmente representados utilizando el plano euclideano.

6. Discusión final

La métrica de Levenshtein es una herramienta que permite adquirir conocimiento


acerca de las secuencias de sı́mbolos comparadas. Comparar secuencias extremada-
mente largas como las secuencias genómicas, requiere tratamientos especiales a los
algoritmos utilizados. Esto ocurre por el crecimiento cuadrático del tiempo de eje-
cución asintótico del algoritmo para obtener la distancia de Levenshtein.
El problema que representan las secuencias sumamente grandes, implica un prob-
lema de espacio (al guardarlas en la memoria de una computadora, o al escribirlas
en un papel), de modo que se puede diseñar modificaciones a esta métrica, con el fin
de para determinar la distancias parciales de una subsecuencia con otra, ambas de
longitud manejable.
Alternativamente, es una oportunidad para utilizar clusters de computadoras para
que, con los recursos compartidos, sea posible manipular secuencias enormes.

7. Agradecimientos

Est artı́culo ha sido apoyado financieramente por el PROgrama de Mejoramiento del


Profesorado (PROMEP), bajo el proyecto número PROMEP-20080798.

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43


El espacio eétrico de la distancia de Levinshtein 43

Referencias

[1] V. I., Levenshtein. Binary codes capable of correcting deletions, insertions, and reversals.
Soviet Physics Doklady 10 (1966):707710. Traducción al inglés de la versión original en
ruso publicada en 1965.

[2] T. H. Cormen, C. E. Leiserson, y R. L. Rivest. Introduction to Algorithms. MIT Press,


Boston, MA., 1990.

[3] Neil C. Jones y Pavel A. Pevzner. An Introduction to Bioinformathics Algorithms. The


MIT Press, 2004.

[4] Yona, S. Edit Distance and string matching algorithms. En


conferencia dada en enero de 2004. Datos disponibles en
http://mila.cs.technion.ac.il/∼yona/talks/edit distance/slides/index.html.
Visitado en Octubre de 2008.

[5] Gilleland, M. Levenshtein Distance, in Three Flavors. Recurso de internet. URL en


http://www.merriampark.com/ld.htm. Visitado en Octubre de 2008.

[6] MacQueen. J. B. Some Methods for classification and Analysis of Multivariate Observa-
tions, Proceedings of 5-th Berkeley Symposium on Mathematical Statistics and Probabil-
ity, Berkeley, University of California Press, 1:281-297 (1967).

[7] Hartigan, J. A. y Wong, M.A. Algorithm AS 136: A k-means clustering algorithm, Ap-
plied Statistics 28 (1979), no.1, 100108.

Revista de Ciencias Básicas UJAT, 7(2)Diciembre 2008 p 35–43

S-ar putea să vă placă și