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