З огляду на деякі фрагменти рядків, я хотів би знайти найкоротший можливий єдиний рядок ("рядок виводу"), який містить усі фрагменти. Фрагменти можуть накладатися один на одного у вихідному рядку.
Приклад:
Для фрагментів рядків:
BCDA
AGF
ABC
Наступний вихідний рядок містить усі фрагменти і був зроблений шляхом наївного додавання:
BCDAAGFABC
Однак цей вихідний рядок кращий (коротший), оскільки він використовує перекриття:
ABCDAGF
^
ABC
^
BCDA
^
AGF
Я шукаю алгоритми цієї проблеми. Не зовсім важливо знайти строго найкоротший вихідний рядок, але чим коротше, тим краще. Я шукаю алгоритм кращий, ніж очевидний наївний, який би спробував додати всі перестановки вхідних фрагментів і видалити накладення (який, здавалося б, є NP-Complete).
Я почав працювати над рішенням, і це виявляється досить цікавим; Я хотів би побачити, що можуть придумати інші люди. До цього питання я ще раз додаду свою незавершену роботу.