Nieformalne oświadczenie o problemie:
Biorąc pod uwagę ciąg znaków, np. , chcemy pokolorować niektóre litery na czerwono, a niektóre na niebiesko (a niektóre wcale), tak że czytanie tylko czerwonych liter od lewej do prawej daje taki sam wynik jak czytanie tylko niebieskie litery.
W przykładzie możemy je pokolorować w następujący sposób:
Dlatego mówimy, że to powtarzająca się podsekwencja . Jest to również najdłuższy powtarzany podciąg (który można łatwo sprawdzić).
Czy możemy efektywnie obliczyć najdłuższe powtarzające się podsekwencje?
Formalne pytanie:
Czy trudno jest NP zdecydować o łańcuchu i pewnym , czy w łańcuchu istnieje powtarzająca się podsekwencja długości k ?
- Jeśli tak: Który problem można ograniczyć do tego problemu?
- Jeśli nie: co to jest wydajny algorytm? (oczywiście tego algorytmu można następnie użyć do obliczenia najdłuższego powtarzanego podsekwencji)
Pytanie bonusowe:
Czy zawsze będą to powtarzające się podsekwencje długości jeśli rozmiar alfabetu jest ograniczony stałą?
(Wiadomo, że tak jest w przypadku alfabetów binarnych).
Edycja 2: Negatywna odpowiedź na pytanie bonusowe jest już znana dla alfabetów wielkości co najmniej . W rzeczywistości dla alfabetów o rozmiarze istnieją ciągi z najdłuższymi powtarzanymi podsekwencjami o długości zaledwie . Losowe ciągi wystarczy, aby to pokazać. Wynik już istniał, ale przeoczyłem go.
Edycja: Uwaga:
Niektóre osoby mają na myśli „podciąg”, gdy mówią „podciąg”. Ja nie. To nie jest problem ze znalezieniem podciągów dwukrotnie.