Declaración informal del problema:
Dada una cadena, por ejemplo, , queremos colorear algunas letras rojas y algunas letras azules (y algunas no en absoluto), de modo que leer solo las letras rojas de izquierda a derecha arroje el mismo resultado que leer solo las letras azules.
En el ejemplo podríamos colorearlos así:
Por lo tanto, decimos es una subsecuencia repetida de . También es una subsecuencia repetida más larga (que es fácil de verificar).
¿Podemos calcular subsecuencias repetidas más largas de manera eficiente?
Pregunta formal
¿Es NP-difícil decidir por una cadena y algo de , si existe una subsecuencia repetida de longitud en la cadena?
- Si es así: ¿Qué problema puede reducirse a este problema?
- Si no: ¿Qué es un algoritmo eficiente? (obviamente, este algoritmo se puede usar para calcular una subsecuencia repetida más larga)
Pregunta extra:
¿Será siempre una subsecuencia repetida de longitud si el tamaño del alfabeto está limitado por una constante?
(Se sabe que esto es cierto para los alfabetos binarios).
Edición 2: La respuesta negativa a la pregunta de bonificación ya se conoce para alfabetos de tamaño mínimo de . De hecho, para alfabetos de tamaño , hay cadenas con subsecuencias repetidas más largas de una longitud meramente . Cadenas aleatorias son suficientes para mostrar esto. El resultado ya existía, pero lo pasé por alto. O ( n · Σ - 1 / 2 )
Editar: Nota:
Algunas personas quieren decir "subcadena" cuando dicen "subsecuencia". Yo no. Este no es el problema de encontrar una subcadena dos veces.