2010-09-07 22 views
12

Estoy buscando una implementación (espacial) eficiente de un algoritmo LCS para usar en un programa C++. Las entradas son dos secuencias de números enteros de acceso aleatorio.
Actualmente estoy usando el enfoque de programación dinámica de la página wikipedia sobre LCS. Sin embargo, eso tiene un comportamiento O (mn) en la memoria y el tiempo y muere en mí con errores de memoria para entradas más grandes.
He leído sobre el algoritmo de Hirschberg, que mejora considerablemente el uso de memoria, Hunt-Szymanski y Masek y Paterson. Como no es trivial implementar esto, preferiría probarlos en mis datos con una implementación existente. ¿Alguien sabe de una biblioteca así? Me imagino que dado que las herramientas de diferencia de texto son bastante comunes, debería haber algunas bibliotecas de código abierto.biblioteca de algoritmos de subsecuencia común más larga eficiente?

+0

¿Le interesa la subsecuencia común más larga real o simplemente su longitud? – IVlad

+0

Necesito la secuencia real. – BuschnicK

+0

Decepcionado que algunas búsquedas rápidas de la web no encontraron nada especialmente útil (un montón de implementaciones ad hoc para 'char' en C, pero nada con la aceleración del espacio lineal de Hirschberg o con plantillas en el tipo de elemento para C++). Si encuentras (o creas: D) algo, ¡por favor actualiza! –

Respuesta

3

Cuando busque cosas por el estilo, intente scholar.google.com. Es mucho mejor para encontrar trabajos académicos. Resultó http://www.biotec.icb.ufmg.br/cabi/artigos/seminarios2/subsequence_algorithm.pdf este documento, una "encuesta de algoritmos subsecuencias comunes más largas".

+1

Grudging +1 porque el OP realmente quiere implementaciones de biblioteca de dichos algoritmos, no descripciones. Pero probablemente un papel útil de todos modos. –

+0

También sería útil saber la fecha de publicación y otros detalles. –

Cuestiones relacionadas