Задача о наибольшей возрастающей подпоследовательности — различия между версиями
Строка 8: | Строка 8: | ||
Строим таблицу <tex> A[1 \dots n]. Каждый её элемент <tex> A[i] </tex> - длина наибольшей возрастающей подпоследовательности, оканчивающейся точно в позиции <tex> i </tex>. Если мы построим эту таблицу, то ответ к задаче - наибольшее число из этой таблицы. | Строим таблицу <tex> A[1 \dots n]. Каждый её элемент <tex> A[i] </tex> - длина наибольшей возрастающей подпоследовательности, оканчивающейся точно в позиции <tex> i </tex>. Если мы построим эту таблицу, то ответ к задаче - наибольшее число из этой таблицы. | ||
Само построение тоже элементарно: ,<tex> A[i] = max (A[j] + 1) </tex> , среди всех j < i, для которых Mj < Mi. Перый элемент A1 = 1, что очевидно. | Само построение тоже элементарно: ,<tex> A[i] = max (A[j] + 1) </tex> , среди всех j < i, для которых Mj < Mi. Перый элемент A1 = 1, что очевидно. | ||
+ | |||
+ | <tex> \max^{n}_{i=1} {T^{\mu}}_{\nu,\;i} </tex> |
Версия 09:45, 27 ноября 2010
Определение: |
Наибольшая возрастающая подпоследовательность (англ. Longest increasing subsequence - LIS) строки | длины - это последовательность символов строки таких, что и - наибольшее из возможных.
Задача заключается в том, чтобы отыскать это наибольшее
и саму подпоследовательность. Известно несколько алгоритмов решения этой задачи.Пример алгоритма, работающего за время
Строим таблицу
- длина наибольшей возрастающей подпоследовательности, оканчивающейся точно в позиции . Если мы построим эту таблицу, то ответ к задаче - наибольшее число из этой таблицы. Само построение тоже элементарно: , , среди всех j < i, для которых Mj < Mi. Перый элемент A1 = 1, что очевидно.