El documento describe el algoritmo de distancia de Levenshtein. Calcula la distancia entre dos cadenas contando las operaciones mínimas (inserción, eliminación o sustitución de caracteres) necesarias para transformar una cadena en la otra. Explica el pseudocódigo del algoritmo que usa una matriz para almacenar los cálculos de distancias parciales y devolver la distancia final en la última posición.
2. La distancia de Leveinshtein o también conocida como distancia de
edición , es un algoritmo tal que dadas dos cadenas, devuelve un entero
que da una idea de la distancia (o parecido) entre ellas. La definición de
distancia es el mínimo número de operaciones que hay que realizar para
transformar una cadena en la otra.
Debe su nombre al matemático ruso Vladimir levenshtein .
Este entero se calcula contando las transformaciones que es necesario
hacer sobre una de estas cadenas para obtener la otra.
Estas posibles transformaciones son:
Borrado de un carácter
Inserción de un carácter
Substitución de un carácter por otro
4. Algunas aplicaciones en la que se puede usar la distancia de
edición son:
Sistemas para la revisión de faltas ortográficas
automatizada en textos.
Sistemas de reconocimiento de voz
Sistemas para el análisis de ADN.
Sistemas para la detección de plagios.
5. 1. Inicio
2. Elegir la palabra que se va a cambiar e insertarla.
3. Insertar la palabra por la que se va a cambiar.
4. Saber cual es la menor cantidad de transacciones
para cambiar una palabra.
5. Identificar el tipo de transacción:
• Insertar una letra
• Quitar una letra
• Cambiar una letra por otra
5. Fin
7. j1
Mientras que i<=long
i1
mientras i<=long2
si (palabra[j-1]==palabra2[i-1])
matriz[i][j]=menor(matriz[i-1][j-1], matriz[i][j-
1], matriz[i-1][j])
si no
matriz[i][j]=menor(matriz[i][j], matriz[i][j-1],
matriz[i-1][j])+1
ii+1
jj+1
Escribir “distancia”+carácter(matriz[long2][long])
8. 1.-Pide la primer palabra y la ingresa a una variable llamada palabra
0 1 32 4
2.-Pide la segunda palabra y la ingresa a una variable llamada palabra2
0 1 32
3.-Calcula la longitud de cada una de las palabras con la función len() y
las agrega ala variable correspondiente long y long2
por ejemplo len(palabra)
la longitud de la palabra perro es de 5
4.-crea la matriz donde se realizara las operaciones necesarias para
obtener la distancia
matriz= [[0 for x in xrange(long+1)] for y in xrange(long2+1)]
esto crea eje “x” y asigna el valor de 0 con un rango de long
+ 1 y
crea el eje “y” y asigna el valor de 0 con un rango de long2+1
p e rr o
g a ot
9. p e rr o
g
a
o
t
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
5.- se enumeraran las letras de cada palabra, para eso se utilizo lo siguiente
i=1
while i<=long:
matriz[0][i]=i
i=i+1
i=1
while i<=long2:
matriz[i][0]=i
i=i+1
0 1 2 3 4 5
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
p e rr o
g
a
o
t
10. 6.- Comienza hacer las operaciones necesarias para obtener la
distancia, para recorrer toda la tabla se utilizaron 2 ciclos
anidados como que fue el while, al entrar al ciclo se compara
letra por letra de las 2 palabras, y se van comparando de 1 en
1, esto lo hace con el siguiente
if(palabra[j-1]==palabra2[i-1]):
(se pone “-1” ya que como lo mencione anteriormente la
palabra empieza desde la posición 0 )
en el cual si las letras son iguales, busca el número menor en la
matriz, una posición menos en “x”, una posición menos en “y”, y
una posición menos en “x” y “y”,
Esto se realiza con una función que es min(), que esta te regresa
el valor menor.
11. si las letras no son iguales hace lo mismo que el paso anterior ,
nada mas que al número menor le suma un 1
matriz[i][j]=min(matriz[i-1][j-1],matriz[i][j-1],matriz[i-1][j]) + 1
7.- Cuando termina de recorrer toda la tabla y de comparar
todas las letras el resultado que buscamos se guardara en la
última posición de “x” y “y” .
0 1 2 3 4 5
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
p e rr o
g
a
o
t
print "distancia: " +str(matriz[long2][long])
12. D
I
F
I
F A C I L
0 1 2 3 4 5
1
2
3
4
C
I
L
5
6
7
EJEMPLO
FACILDIFICIL
1 2 3 4 5
2 2 3 3 4
2 3 3 4 4
3 3 4 3 4
4 4 3 4 4
5 5 4 3 4
6 6 5 4 3 RESPUESTA