Biorąc pod uwagę niektóre fragmenty ciągu, chciałbym znaleźć możliwie najkrótszy pojedynczy ciąg („ciąg wyjściowy”), który zawiera wszystkie fragmenty. Fragmenty mogą nakładać się na siebie w ciągu wyjściowym.
Przykład:
W przypadku fragmentów łańcucha:
BCDA
AGF
ABC
Poniższy ciąg wyjściowy zawiera wszystkie fragmenty i został utworzony przez naiwne dołączanie:
BCDAAGFABC
Jednak ten ciąg wyjściowy jest lepszy (krótszy), ponieważ wykorzystuje nakładki:
ABCDAGF
^
ABC
^
BCDA
^
AGF
Szukam algorytmów dla tego problemu. Znalezienie ściśle najkrótszego ciągu wyjściowego nie jest absolutnie ważne, ale im krótszy, tym lepiej. Szukam algorytmu lepszego niż oczywisty naiwny, który próbowałby dołączyć wszystkie permutacje fragmentów wejściowych i usunąć nakładanie się (które wydaje się być NP-Complete).
Rozpocząłem pracę nad rozwiązaniem, które okazuje się dość interesujące; Chciałbym zobaczyć, co wymyślą inni ludzie. Za chwilę dodam moją pracę w toku.