В информатике кратчайшая общая суперпоследовательность двух последовательностей X и Y — это кратчайшая последовательность, которая имеет X и Y в качестве подпоследовательностей . Это проблема, тесно связанная с проблемой самой длинной общей подпоследовательности . Если даны две последовательности X = < x 1 ,...,x m > и Y = < y 1 ,...,y n >, последовательность U = < u 1 ,...,uk > является общей суперпоследовательностью X и Y , если элементы могут быть удалены из U для получения X и Y .
Кратчайшая общая суперпоследовательность (SCS) — это общая суперпоследовательность минимальной длины. В задаче о кратчайшей общей суперпоследовательности даны две последовательности X и Y , и задача состоит в том, чтобы найти кратчайшую возможную общую суперпоследовательность этих последовательностей. В общем случае SCS не является уникальной.
Для двух входных последовательностей SCS может быть легко сформирована из самой длинной общей подпоследовательности (LCS). Например, самая длинная общая подпоследовательность X и Y — это Z. Вставляя символы, не входящие в LCS, в Z , сохраняя их исходный порядок, мы получаем самую короткую общую суперпоследовательность U. В частности, уравнение справедливо для любых двух входных последовательностей.
Аналогичной связи между кратчайшими общими суперпоследовательностями и длиннейшими общими подпоследовательностями трех или более входных последовательностей не существует. (В частности, LCS и SCS не являются двойственными задачами .) Однако обе задачи могут быть решены со временем с помощью динамического программирования, где — число последовательностей, а — их максимальная длина. Для общего случая произвольного числа входных последовательностей задача является NP-трудной . [1]
Тесно связанная задача поиска строки минимальной длины, которая является суперстрокой конечного набора строк S = { s 1 , s 2 ,..., s n }, также является NP-трудной. [2] За прошедшие годы было предложено несколько приближений с постоянным множителем, и самый известный на данный момент алгоритм имеет коэффициент приближения 2,475. [3] Однако, возможно, самым простым решением будет переформулировать задачу как случай взвешенного покрытия множеств таким образом, чтобы вес оптимального решения для случая покрытия множеств был меньше удвоенной длины кратчайшей суперстроки S . Затем можно использовать O(log( n ))-приближение для взвешенного покрытия множеств, чтобы получить O(log( n ))-приближение для кратчайшей суперстроки (обратите внимание, что это не приближение с постоянным множителем).
Для любой строки x в этом алфавите, определим P ( x ) как множество всех строк, которые являются подстроками x . Экземпляр I множества cover формулируется следующим образом:
Экземпляр I затем может быть решен с помощью алгоритма для взвешенного покрытия множеств, и алгоритм может вывести произвольную конкатенацию строк x, для которой алгоритм взвешенного покрытия множеств выводит P ( x ). [4]
Рассмотрим множество S = { abc, cde, fab }, которое становится вселенной экземпляра взвешенного множества. В этом случае M = { abcde, fabc }. Тогда множество подмножеств вселенной равно
которые имеют стоимость 3, 3, 3, 5 и 4 соответственно.