Задача о наибольшей общей палиндромной подпоследовательности — различия между версиями
Oxygen3 (обсуждение | вклад) (Новая страница: «'''Задача о наибольшей общей подпоследовательности''' (англ. ''longest common subsequence (LCS)'') - класс...») |
Oxygen3 (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
==Постановка задачи== | ==Постановка задачи== | ||
− | + | Для последовательности <tex>X</tex>, мы обознамич его подпоследовательность <tex>x_{i}...x_{j} (1 \leqslant i \leqslant j \leqslant n)</tex> как <tex>X_{i,j}</tex>. Для двух последовательностей <tex>X</tex> и <tex>Y</tex>, если общая подпоследовательность <tex>Z</tex> последовательносей <tex>X</tex> и <tex>Y</tex> является палиндромом, то <tex>Z</tex> называется '''общей подпалиндромной подпоследовательностью''' (англ. ''common palindromicsubsequence''). Общая подпалиндромная последовательность, имеющая максимальную длину, называется '''наибольшей общей подпалиндромной подпоследовательностью''' (англ. ''The longest common palindromic sub-sequence (LCPS)'') и мы обозначим её как <tex>LCPS(X,Y)</tex>. | |
==Динамическое программирование== | ==Динамическое программирование== | ||
Строка 11: | Строка 11: | ||
===Теорема 1=== | ===Теорема 1=== | ||
Пусть <tex>X</tex> и <tex>Y</tex> - две последовательности длины <tex>n</tex>, а <tex>X_{i,j}</tex> и <tex>Y_{i,j}</tex> - две подпоследовательности последовательностей <tex>X</tex> и <tex>Y</tex> соответственно. Пусть <tex>Z = z_{1}z_{2}...z_{u}</tex> - наибольшая общая подпалиндромная последовательность двух подпоследовательностей <tex>X_{i,j}</tex> и <tex>Y_{k,l}</tex>. Тогда выполняются следующие утверждения, | Пусть <tex>X</tex> и <tex>Y</tex> - две последовательности длины <tex>n</tex>, а <tex>X_{i,j}</tex> и <tex>Y_{i,j}</tex> - две подпоследовательности последовательностей <tex>X</tex> и <tex>Y</tex> соответственно. Пусть <tex>Z = z_{1}z_{2}...z_{u}</tex> - наибольшая общая подпалиндромная последовательность двух подпоследовательностей <tex>X_{i,j}</tex> и <tex>Y_{k,l}</tex>. Тогда выполняются следующие утверждения, | ||
+ | #Если <tex>x_i=x_j=y_k=y_l=a</tex> (для произвольного <tex>a</tex>), тогда <tex>z_1=z_u=a</tex> и <tex>z_2...z_{u-1}</tex> - наибольшая общая палиндромная подпоследовательность для <tex>X_{i+1,j-1}</tex> и <tex>Y_{k+1,l-1}</tex>. | ||
+ | #Если <tex>x_i=x_j=y_k=y_l не выполняется</tex> |
Версия 01:02, 12 декабря 2014
Задача о наибольшей общей подпоследовательности (англ. longest common subsequence (LCS)) - классическая и хорошо изученная проблема. В данной статье мы рассмотрим её модификацию, где эта последовательность также должна быть палиндромом.
Определение: |
Палиндромом (англ. palindrom) называется последовательность, которая одинаково читается как слева направо, так и справа налево. |
Наибольшая общая подпалиндромная подпоследовательность (англ. The longest common palindromic sub-sequence (LCPS)) - задача, являющаяся интересным вариантом классической задачи о поиске наибольшей общей подпоследовательности, которая находит наибольшую общую подпоследовательность среди двух последовательностей так, что она также является палиндромом.
Постановка задачи
Для последовательности
, мы обознамич его подпоследовательность как . Для двух последовательностей и , если общая подпоследовательность последовательносей и является палиндромом, то называется общей подпалиндромной подпоследовательностью (англ. common palindromicsubsequence). Общая подпалиндромная последовательность, имеющая максимальную длину, называется наибольшей общей подпалиндромной подпоследовательностью (англ. The longest common palindromic sub-sequence (LCPS)) и мы обозначим её как .Динамическое программирование
Заметим, что естественные классы подзадач для
соответствуют парам подпоследовательностей из двух входных последовательностей. Основываясь на этом наблюдении мы сформулируем следующую теорему, которая доказывает оптимальную подструктуру свойств задачи .Теорема 1
Пусть
и - две последовательности длины , а и - две подпоследовательности последовательностей и соответственно. Пусть - наибольшая общая подпалиндромная последовательность двух подпоследовательностей и . Тогда выполняются следующие утверждения,- Если (для произвольного ), тогда и - наибольшая общая палиндромная подпоследовательность для и .
- Если