Articulo de referencia

Problema de corrección de cadena a cadena

En informática , el problema de corrección de cadena a cadena se refiere a determinar la secuencia de operaciones de edición de costo mínimo necesarias para cambiar una cadena p...

En informática , el problema de corrección de cadena a cadena se refiere a determinar la secuencia de operaciones de edición de costo mínimo necesarias para cambiar una cadena por otra (es decir, calcular la distancia de edición más corta ). Cada tipo de operación de edición tiene su propio valor de costo. [ 1 ] Una sola operación de edición puede ser cambiar un solo símbolo de la cadena por otro (costo W C ), eliminar un símbolo (costo W D ) o insertar un nuevo símbolo (costo W I ). [ 2 ]

Si todas las operaciones de edición tienen los mismos costos unitarios (W C = W D = W I = 1), el problema es el mismo que calcular la distancia de Levenshtein de dos cadenas.

Existen varios algoritmos para determinar de manera eficiente la distancia entre cadenas y especificar el número mínimo de operaciones de transformación necesarias. [ 3 ] [ 4 ] Estos algoritmos son particularmente útiles para operaciones de creación de deltas , donde algo se almacena como un conjunto de diferencias con respecto a una versión base. Esto permite almacenar varias versiones de un mismo objeto de forma mucho más eficiente que si se almacenaran por separado. Esto se aplica incluso a versiones únicas de varios objetos si no difieren mucho, o a cualquier caso intermedio. Cabe destacar que estos algoritmos de diferencia se utilizan en biología molecular para proporcionar una medida de parentesco entre diferentes tipos de organismos basándose en las similitudes de sus macromoléculas (como proteínas o ADN ).

Extensión

La variante extendida del problema incluye un nuevo tipo de operación de edición: intercambiar dos símbolos adyacentes cualesquiera, con un coste de W S .

Esta versión se puede resolver en tiempo polinomial bajo ciertas restricciones en los costos de las operaciones de edición. [ 2 ] [ 5 ]

Robert A. Wagner (1975) demostró que el problema general es NP-completo . En particular, probó que cuando W I < W C = W D = ∞ y 0 < W S < ∞ (o equivalentemente, no se permiten cambios ni eliminaciones), el problema es NP-completo. [ 5 ]

Referencias

  1. Wagner, Robert A.; Fischer, Michael J. (1974). "El problema de corrección de cadena a cadena" . Journal of the ACM . 21 (1): 168– 173. doi : 10.1145/321796.321811 . S2CID 13381535 . 
  2. 1 2 Lowrance, Roy; Wagner, Robert A. (abril de 1975). "Una extensión del problema de corrección de cadena a cadena" . Journal of the ACM . 22 (2): 177– 183. doi : 10.1145/321879.321880 . S2CID 18892193 . 
  3. Editar distancia#Cálculo
  4. Tichy, Walter F. (1984). "El problema de corrección de cadena a cadena con movimientos de bloques" . ACM Transactions on Computer Systems . 2 (4): 309– 321. doi : 10.1145/357401.357404 . S2CID 14034845 . 
  5. 1 2 Wagner, Robert A. (mayo de 1975). "Sobre la complejidad del problema de corrección de cadena a cadena extendida" . Actas del séptimo simposio anual de la ACM sobre teoría de la computación - STOC '75 . págs. 218–223 . doi : 10.1145/800116.803771 . ISBN  9781450374194. S2CID 18705107 .