Задача о наибольшей общей палиндромной подпоследовательности — различия между версиями
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
Пусть и - две последовательности длины , а и - две подпоследовательности последовательностей и соответственно. Пусть - наибольшая общая подпалиндромная последовательность двух подпоследовательностей и . Тогда выполняются следующие утверждения,
- Если (для произвольного ), тогда и - наибольшая общая палиндромная подпоследовательность для и .
- Если