Да, это правильно.Это подразумевается следующими двумя фактами, которые вместе подразумевают необходимое равенство.
Самая длинная палиндромная подпоследовательность не больше, чем самая длинная общая подпоследовательность строки и ее обратное.
Самая длинная палиндромная подпоследовательность по крайней мере равна самой длинной общей подпоследовательности строки и ее обратной последовательности.
Факт 1 легко доказатькаждая палиндромная подпоследовательность строки, конечно, является подпоследовательностью и является подпоследовательностью обратной строки, поскольку S1 является подпоследовательностью S2 тогда и только тогда, когда обратная последовательность (S1) является подпоследовательностью обратной последовательности (S2), а обратная последовательностьПалиндромная последовательность сама по себе.
Факт 2 более тонкий.Мы утверждаем, что, учитывая LCS строки и ее обратное, мы можем вывести две палиндромные подпоследовательности, средняя длина которых равна LCS.Из аргумента усреднения следует, что один или оба имеют длину не менее длины.
Я проиллюстрирую процесс построения на вашем примере.Запишите общую подпоследовательность вместе с индексами в строке.
A C B A C
1 2 3 4 5
A B C
\ | /
A B C
5 4 3 2 1
C A B C A
Извлекаем A (1, 4); B (3, 3); C (5, 2)
.Мы можем получить один палиндром, взяв префикс, в котором первое число не превышает второго, и отразив его: 1, 3, 4 -> A B A
.Другое зеркально выводится из суффикса, в котором второе число не превышает первого: 2, 3, 5 -> C B C
.
A B C
1 3 5
.>>\ />>
| |
<</ \<<.
4 3 2
A B C
Обратите внимание, что каждая буква подпоследовательности используется ровно дважды (одна идущая и однакроме середины, которая используется один раз в обоих палиндромах), отсюда и наше наблюдение о среднем.