Introducción
En este laboratorio, exploraremos el algoritmo de Distancia de Levenshtein y su implementación en JavaScript. El objetivo de este laboratorio es entender cómo calcular la diferencia entre dos cadenas midiendo el número mínimo de ediciones de un solo carácter (inserciones, eliminaciones, sustituciones) necesarias para transformar una cadena en la otra. Al final de este laboratorio, tendrás una comprensión sólida del algoritmo de Distancia de Levenshtein y cómo utilizarlo en tus propios proyectos de JavaScript.
Algoritmo de Distancia de Levenshtein
Para calcular la diferencia entre dos cadenas, puedes utilizar el algoritmo de distancia de Levenshtein. Aquí te muestra cómo hacerlo:
- Si cualquiera de las cadenas tiene una
longitudde cero, devuelve lalongitudde la otra. - Utiliza un bucle
foranidado para iterar sobre las letras de las cadenas objetivo y fuente. - Calcula el costo de sustituir las letras correspondientes a
i - 1yj - 1en la cadena objetivo y fuente respectivamente (0si son iguales,1en caso contrario). - Utiliza
Math.min()para poblar cada elemento en la matriz bidimensional con el mínimo de la celda arriba incrementada en uno, la celda a la izquierda incrementada en uno o la celda en la esquina superior izquierda incrementada por el costo previamente calculado. - Devuelve el último elemento de la última fila de la matriz producida.
Para comenzar a practicar este código, abre la Terminal/SSH y escribe node. Aquí te muestra el código que puedes utilizar:
const levenshteinDistance = (s, t) => {
if (!s.length) return t.length;
if (!t.length) return s.length;
const arr = [];
for (let i = 0; i <= t.length; i++) {
arr[i] = [i];
for (let j = 1; j <= s.length; j++) {
arr[i][j] =
i === 0
? j
: Math.min(
arr[i - 1][j] + 1,
arr[i][j - 1] + 1,
arr[i - 1][j - 1] + (s[j - 1] === t[i - 1] ? 0 : 1)
);
}
}
return arr[t.length][s.length];
};
console.log(levenshteinDistance("duck", "dark")); // 2
Resumen
¡Felicitaciones! Has completado el laboratorio de Distancia de Levenshtein. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.