Un mélange de deux chaînes est formé en intercalant les caractères dans une nouvelle chaîne, en maintenant les caractères de chaque chaîne dans l'ordre. Par exemple, MISSISSIPPI
est un mélange de MISIPP
et SSISI
. Permettez-moi d'appeler un carré de corde s'il s'agit d'un mélange de deux chaînes identiques. Par exemple, ABCABDCD
est carré, car c'est un mélange de ABCD
et ABCD
, mais la chaîne ABCDDCBA
n'est pas carrée.
Existe-t-il un algorithme rapide permettant de déterminer si une chaîne est carrée ou est-ce NP-difficile? L'approche de programmation dynamique évidente ne semble pas fonctionner.
Même les cas spéciaux suivants semblent difficiles: (1) des chaînes dans lesquelles chaque caractère apparaît au maximum quatre fois sur six , et (2) des chaînes avec seulement deux caractères distincts. Comme Per Austrin le souligne ci-dessous, le cas particulier où chaque caractère apparaît au plus quatre fois peut être réduit à 2SAT.
Mise à jour: Ce problème a une autre formulation qui peut rendre une preuve de dureté plus facile.
Considérons un graphe G dont les sommets sont les entiers 1 à n; identifier chaque bord avec l'intervalle réel entre ses extrémités. Nous disons que deux arêtes de G sont imbriquées si un intervalle contient correctement l'autre. Par exemple, les arêtes (1,5) et (2,3) sont imbriquées, mais (1,3) et (5,6) ne le sont pas et (1,5) et (2,8) ne le sont pas. Une correspondance dans G est non imbriquée si aucune paire d'arêtes n'est imbriquée. Existe-t-il un algorithme rapide pour déterminer si G a une correspondance parfaite non imbriquée ou si ce problème est NP-difficile?
Supprimer une chaîne équivaut à rechercher une correspondance parfaite non imbriquée dans une union disjointe de cliques (avec des bords entre des caractères égaux). En particulier, la suppression d'une chaîne binaire équivaut à la recherche d'une correspondance parfaite non imbriquée dans une union disjointe de deux cliques. Mais je ne sais même pas si ce problème est difficile pour les graphiques généraux, ou facile pour toute classe de graphiques intéressante.
Il existe un algorithme polynomial facile à trouver non parfait passage appariements.
Mise à jour (24 juin 2013): le problème est résolu! Il existe maintenant deux preuves indépendantes indiquant que l'identification de chaînes carrées est NP-complète.
En novembre 2012, Sam Buss et Michael Soltys ont annoncé une réduction du nombre de partitions 3 , ce qui montre que le problème est difficile, même pour les chaînes comportant un alphabet de 9 caractères. Voir "Un brassage de carrés, c'est NP-difficile ", Journal of Computer System Sciences 2014.
En juin 2013, Romeo Rizzi et Stéphane Vialette ont publié une réduction du plus long problème de sous- séquence commun . Voir " Reconnaissance des mots qui sont des carrés pour le produit Shuffle ", Proc. 8ème Symposium international sur l'informatique en Russie , Springer LNCS 7913, p. 235–245.
Il existe également une preuve plus simple que trouver des correspondances parfaites non imbriquées est NP-difficile, en raison de Shuai Cheng Li et Ming Li en 2009. Voir " Deux problèmes non résolus de modèles à 2 intervalles ", Théorie de l'informatique 410 (24–25). ): 2410–2423, 2009.