Родительская строка двух заданных строк

0

Учитывая 2 строки, мы должны найти строку, наименьшую по длине такую, что данные строки являются подпоследовательностями строки. Другими словами, нам нужно найти строку, такую, что удаление некоторых символов приводит к заданным строкам. думал о грубой силе и LCS, но напрасно.

12345 и 11234 должны привести к 112345 WWA, а WWS - ответ WWAS

LCS довольно неэффективен в памяти (DP-один), а грубая сила просто ребяческая. Что мне делать?

Теги:
string
subsequence
lcs

2 ответа

0
Лучший ответ

Возможно, вы могли бы сделать глобальное выравнивание с Needleman-Wunsch и высоким штрафом за несоответствие, чтобы предпочесть indels. В конце объедините выравнивание в "родительскую строку", взяв буквы из совпадающих позиций, а затем букву с любой из вставленных букв, например:

WW-A
||  
WWS-

WWSA

Или:

-12345
 ||||
11234-

112345

Память O (нм), но модификация сужает ее до O (min (n, m)).

0

В стандартной библиотеке есть хорошо определенный алгоритм, который будет служить вашей цели.

set_union ();

Условие - ваши диапазоны ввода должны быть отсортированы.

  • 0
    Это работает только для отсортированных и, возможно, уникальных персонажей.
Сообщество Overcoder
Наверх
Меню