Busqué en línea una implementación de subcadena común más larga en C++ pero no pude encontrar una decente. Necesito un algoritmo LCS que devuelva la subcadena en sí, así que no es solo LCS.Cómo encontrar la subcadena común más larga usando C++
Me preguntaba, sin embargo, acerca de cómo puedo hacer esto entre múltiples cadenas.
Mi idea era comprobar la más larga entre 2 cadenas, y luego comprobar todas las demás, pero este es un proceso muy lento que requiere gestionar muchas cadenas largas en la memoria, haciendo que mi programa sea bastante lento.
¿Alguna idea de cómo se puede acelerar esto para múltiples cadenas? Gracias.
Editar Importante Una de las variables que estoy dado determina el número de cadenas de la subcadena común más larga tiene que estar en, por lo que se puede dar 10 cuerdas, y encontrar la LCS de todos ellos (K = 10), o LCS de 4 de ellos, pero no me dicen cuál 4, tengo que encontrar el mejor 4.
Si necesita hacer esto con múltiples cadenas, entonces no debe seguir su enfoque. Considere que el LCS en general podría no ser un subconjunto del LCS entre dos cadenas particulares [ej. "123asdfg", "asdfg123", "123"; si ejecuta LCS en los dos primeros obtendrá "asdfg", que no tiene caracteres en común con la última cadena]. A partir de la regresión de la subcadena LCS real, el algoritmo común finaliza con una tabla que puede recorrer para crear dicha cadena en tiempo lineal (en el tamaño del LCS) –
http://www.markusstengel.de/text/en/ i_4_1_5_3.html – Nick
Consulte aquí para [Análisis de la coincidencia de subcadena común más larga] (http://www.msccomputerscience.com/2014/10/analysis-of-longest-common-substring_18.html) – ARJUN