Se forma una mezcla de dos cadenas intercalando los caracteres en una nueva cadena, manteniendo los caracteres de cada cadena en orden. Por ejemplo, MISSISSIPPIes una combinación de MISIPPy SSISI. Permítanme llamar a un cuadrado de cadena si es una combinación de dos cadenas idénticas. Por ejemplo, ABCABDCDes cuadrado, porque es una combinación de ABCDy ABCD, pero la cadena ABCDDCBAno es cuadrada.
¿Existe un algoritmo rápido para determinar si una cadena es cuadrada o es NP-hard? El obvio enfoque de programación dinámica no parece funcionar.
Incluso los siguientes casos especiales parecen ser difíciles: (1) cadenas en las que cada carácter aparece como máximo cuatro seis veces, y (2) cadenas con solo dos caracteres distintos. Como señala Per Austrin a continuación, el caso especial en el que cada personaje aparece como máximo cuatro veces se puede reducir a 2SAT.
Actualización: este problema tiene otra formulación que puede facilitar la prueba de dureza.
Considere una gráfica G cuyos vértices son los enteros 1 a n; identifique cada borde con el intervalo real entre sus puntos finales. Decimos que dos bordes de G están anidados si un intervalo contiene adecuadamente el otro. Por ejemplo, los bordes (1,5) y (2,3) están anidados, pero (1,3) y (5,6) no lo están, y (1,5) y (2,8) no lo están. Una coincidencia en G no está anidada si no hay ningún par de aristas anidado. ¿Existe un algoritmo rápido para determinar si G tiene una coincidencia perfecta no anidada, o ese problema es NP-difícil?
Desarmar una cadena es equivalente a encontrar una coincidencia perfecta no anidada en una unión disjunta de camarillas (con bordes entre caracteres iguales). En particular, deshacer una cadena binaria es equivalente a encontrar una coincidencia perfecta no anidada en una unión disjunta de dos camarillas. Pero ni siquiera sé si este problema es difícil para los gráficos generales, o fácil para cualquier clase interesante de gráficos.
Existe un algoritmo de tiempo polinómico fácil para encontrar coincidencias perfectas sin cruzamiento .
Actualización (24 de junio de 2013): ¡El problema está resuelto! Ahora hay dos pruebas independientes de que identificar cadenas cuadradas es NP-complete.
En noviembre de 2012, Sam Buss y Michael Soltys anunciaron una reducción de 3 particiones , lo que demuestra que el problema es difícil incluso para las cadenas sobre un alfabeto de 9 caracteres. Consulte "Desarmar un cuadrado es NP-Hard ", Journal of Computer System Sciences 2014.
En junio de 2013, Romeo Rizzi y Stéphane Vialette publicaron una reducción del problema de subsecuencia común más largo . Consulte " Acerca del reconocimiento de palabras que son cuadrados para el producto aleatorio ", Proc. 8º Simposio internacional de informática en Rusia , Springer LNCS 7913, pp. 235–245.
También hay una prueba más simple de que encontrar coincidencias perfectas no anidadas es NP-difícil, debido a Shuai Cheng Li y Ming Li en 2009. Ver " Sobre dos problemas abiertos de patrones de 2 intervalos ", Theoretical Computer Science 410 (24–25 ): 2410–2423, 2009.