Énoncé informel du problème:
Étant donné une chaîne, par exemple , nous voulons colorer certaines lettres rouges et certaines lettres bleues (et certaines pas du tout), de sorte que la lecture des lettres rouges de gauche à droite donne le même résultat que la lecture seules les lettres bleues.
Dans l'exemple, nous pourrions les colorer comme ceci:
Par conséquent, nous disons est une sous répétée de A C C A B B A B . Il s'agit également d'une sous-séquence répétée la plus longue (qui est facile à vérifier).
Peut-on calculer efficacement les sous-séquences répétées les plus longues?
Question formelle:
Est-il NP-difficile de décider pour une chaîne et certains , si une sous-séquence répétée de longueur k existe dans la chaîne?
- Si oui: quel problème peut être réduit à ce problème?
- Sinon: Qu'est-ce qu'un algorithme efficace? (évidemment, cet algorithme peut ensuite être utilisé pour calculer une sous-séquence répétée la plus longue)
Question bonus:
Leur sera-t-il toujours une sous-séquence répétée de longueur si la taille de l'alphabet est limitée par une constante?
(Ceci est connu pour les alphabets binaires.)
Edit 2: La réponse négative à la question bonus est déjà connue pour les alphabets de taille au moins . En fait pour les alphabets de taille Σ , il y a des chaînes avec les plus longues séquences répétées d'une longueur de seulement O ( n · Σ - 1 / 2 ) . Des chaînes aléatoires suffisent pour le montrer. Le résultat existait déjà, mais je l'ai ignoré.
Modifier: Remarque:
Certaines personnes veulent dire "sous-chaîne" quand elles disent "sous-séquence". Je ne. Ce n'est pas le problème de trouver deux fois une sous-chaîne.