Содержание
- 2. Метод «разделяй и властвуй» ФПМИ БГУ
- 3. «Разделение» Задача разбивается на независимые подзадачи, т.е. подзадачи не пересекаются (две задачи назовем независимыми, если они
- 4. При разбиении задачи на подзадачи полезен принцип балансировки, который предполагает, что задача разбивается на подзадачи приблизительно
- 5. Поиск максимального и минимального элементов Разделим массив на две части (предположим, что n=2k). В каждой из
- 6. def MergeSort (l,r): if l ≠ r: k = (l + r) // 2 MergeSort (l,k)
- 7. def QuickSort(l, r): if l Partition QuickSort(l, j) QuickSort(i, r) Быстрая сортировка массива Ч. Хоара Выбираем
- 8. Динамическое программирование ФПМИ БГУ
- 9. Динамическое программирование Динамическое программирование применяется к задачам, в которых нужно что-то подсчитать или к оптимизационным задачам.
- 10. Стратегия метода динамического программирования – попытка свести рассматриваемую задачу к более простым задачам. Задача может быть
- 11. 1 2 x зависимые задачи (1) и (2)
- 12. Этапы динамического программирования Задача погружается в семейство вспомогательных подзадач той же природы. Возникающие подзадачи могут являться
- 13. решаем задачу v w u z ранее решённые подзадачи z, u, w ДП «назад» f(v) =
- 14. 10 8 не решена 4 2 3 решена 1 5 ФПМИ БГУ 6 9 7 решаем
- 15. Задача 1. Лягушка ФПМИ БГУ
- 16. Ответ: 14 Заданы n кочек. Лягушка сидит на первой кочке. На каждой кочке сидят комарики, известно
- 17. ДП назад (одномерное): i-1 i-2 i-3 i ФПМИ БГУ
- 18. array i F 2 14 18 13 6 5 ФПМИ БГУ Ответ: 14
- 19. i+3 i+2 i+1 i ДП вперёд (одномерное): ФПМИ БГУ
- 20. i F 2 7 17 13 6 5 18 14 Время работы алгоритма, основанного на методе
- 21. Полный перебор всех вариантов описывается n-м числом Фибоначчи: Время работы алгоритма для задачи «Лягушка», основанного на
- 22. Задача 2. Задача расстановки единиц ФПМИ БГУ
- 23. Задана строка длины n. Имеется k единиц ( k≤n). Необходимо определить количество способов, для того, чтобы
- 24. + ФПМИ БГУ
- 25. Обозначим F[i, j] - количество способов, для того, чтобы в строке длины i расставить j единиц.
- 26. 2 3 3 4 6 4 Время работы алгоритма: ФПМИ БГУ ДП назад (двумерное):
- 27. Обозначим через F[i,j] - количество способов, для того, чтобы расставить j единиц в строке длины i.
- 28. 2 1 1 1 1 1 1 1 1 2 3 3 1 4 3 3
- 29. Время работы алгоритма «Расстановка единиц», основанного на методе динамического программирования: Количество способов можно посчитать и комбинаторно,
- 30. На практике, когда результат является достаточно большим числом, в задаче предлагается найти ответ по модулю (%
- 31. Задача 3. Оптимального перемножения группы матриц ФПМИ БГУ
- 32. Порядок перемножения всех s матриц неоднозначен. Чтобы устранить неоднозначность, нужно расставить скобки. Порядок расстановки скобок однозначно
- 33. Сведения из математики: при перемножении двух матриц: B [n × k] * C [k × m]
- 34. Числа Каталана – это последовательность чисел, названная в честь бельгийского математика Эжен Шарля Каталана. Сn -
- 35. рекуррентная формула для Сn ФПМИ БГУ Сn аналитическая формулы для Сn
- 36. Числа Каталана в треугольнике Паскаля Если в чётных строках i от серединной линии отнять соседний элемент,
- 37. Количество различных способов задать однозначно порядок перемножения матриц – Сs-1 число Каталана, т.е. экспоненциальная функция. Метод
- 38. Подзадача Обозначим через минимальное число операций умножения, чтобы перемножить матрицы с номерами от i до j
- 39. Так как у нас оптимизационная задача, то перемножать матрицы надо за минимально возможно число операций умножения.
- 40. Справедливо следующее рекуррентное соотношение: ФПМИ БГУ
- 41. ФПМИ БГУ 1 вариант 2 вариант i j
- 42. Зависимые подзадачи ФПМИ БГУ
- 43. ФПМИ БГУ
- 44. Время работы алгоритма оптимального перемножения группы матриц, основанного на методе динамического программирования: вычислить s(s+1)/2 элементов таблицы;
- 45. Пример ФПМИ БГУ
- 46. ФПМИ БГУ
- 47. ФПМИ БГУ
- 48. ФПМИ БГУ
- 49. ФПМИ БГУ
- 50. Ответ: (A1·(A2·A3))·A4 3 100 операций умножения ФПМИ БГУ (A1·A2·A3)·A4 Порядок перемножения:
- 51. Задача 4. Наибольшая общая подпоследовательность (НОП) англ. longest common subsequence (LCS) ФПМИ БГУ
- 52. ФПМИ БГУ Крайние случаи: самая короткая - пустая подпоследовательность (удалены все элементы последовательности Z); самая длинная
- 53. ФПМИ БГУ
- 54. ФПМИ БГУ X=Ф,Б,П,Г,М,У,И Y=А,Ф,И,П,С,Д,М,И,Б,Г,У LCS (X,Y) = Ф,П,М,И |LCS (X,Y)|= 4 В общем случае задача может
- 55. ФПМИ БГУ Сколько подпоследовательностей будет сгенерировано? Задачу LCS можно решить полным перебором X=Ф Б П Г
- 56. ФПМИ БГУ F Задачу LCS можно решить динамическим программированием Обозначим через F[i,j] длину наибольшей общей подпоследовательности
- 57. ФПМИ БГУ 1 i j j k i
- 58. ФПМИ БГУ 1 i j i-1 j-1
- 59. ФПМИ БГУ 1 i j i-1 j i j-1
- 60. ФПМИ БГУ 1 i j Получаем для Случая 2 следующее рекуррентное соотношение:
- 61. ФПМИ БГУ Объединяя оба случая, получаем следующее рекуррентное соотношение:
- 62. ФПМИ БГУ F если не нужно восстанавливать саму подпоследовательность, то можно в памяти хранить только предыдущую
- 63. ФПМИ БГУ а т м (в примере при неоднозначности движение шло вверх)
- 64. Задача 5. Наибольшая подпоследовательность-палиндром ФПМИ БГУ
- 65. Задана строка длины n. Необходимо вычеркнуть минимальное число элементов так, чтобы получился палиндром (палиндром - строка,
- 66. ФПМИ БГУ Неявное решение задачи a s d f s l a a l s f
- 67. Явное решение задачи Обозначим через F[i,j] длину наибольшего палиндрома, который можно получить, если мы рассматриваем элементы
- 68. Строки длины 1 Строки длины 2 Строки длины >2 ФПМИ БГУ i j i+1 j-1 string
- 69. Задачи A, B и C являются зависимыми, так как они требуют для своего решения знать длину
- 70. a s d f s l a a s d f s l a a s
- 71. a s d f s l a a s d f s l a a s
- 72. a s d f s l a a s d f s l a a s
- 73. a s d f s l a a s d f s l a a s
- 74. a s d f s l a a s d f s l a a s
- 75. a s d f s l a a s d f s l a a s
- 76. a s d f s l a a s d f s l a a s
- 77. Задача 6. Наибольшая возрастающая подпоследовательность Longest increasing subsequence, LIS ФПМИ БГУ
- 78. ФПМИ БГУ Х= 0, 2, 9, 1, 9, 6, 7, 22 НВП(Х)= 0, 2, 6, 7,
- 79. ФПМИ БГУ Неявное решение задачи (двумерное ДП) 0 2 9 1 9 6 7 0 1
- 80. Явное решение задачи (одномерное ДП) 1 i i-1 F ФПМИ БГУ n Тогда получаем следующее рекуррентное
- 81. ФПМИ БГУ Построить НВП для последовательности: Х= 0, 2, 9, 1, 9, 6, 7, 22, 1
- 82. 9 1 9 6 7 22 1 0 2 среди подпоследовательностей одинаковой длины оставляем одну –
- 83. Х=6 i i=UpperBound (х) Время работы алгоритма построения НВП(Х):
- 84. Задача 7. Преобразование строк вычисление расстояния Левенштейна (редакционное расстояние) ФПМИ БГУ
- 85. Заданы две строки, как сравнить их, чтобы определить насколько они похожи? ФПМИ БГУ Приложения: для исправления
- 86. число позиций, в которых соответствующие символы двух строк одинаковой длины отличаются. Если строки имеют одинаковую длину,
- 87. Если строки имеют разную длину: Расстояние Левенштейна для двух строк равно минимальному числу односимвольных «редакторских правок»:
- 88. d(Х,Y)=4
- 89. ФПМИ БГУ F Задачу можно решить динамическим программированием Граничные условия (один из префиксов пустой):
- 90. ФПМИ БГУ
- 91. Предположим, что одиночные операции вставки, удаления и замены имеют разную стоимость:
- 92. ФПМИ БГУ
- 93. ФПМИ БГУ Действительно, из приведенной выше формулы следуют два неравенства: Из (1) и (2) следует, что
- 94. ФПМИ БГУ Время работы алгоритма: Требуемая память:
- 95. ФПМИ БГУ Пример Рекуррентное соотношение:
- 96. ФПМИ БГУ
- 97. ФПМИ БГУ
- 98. ФПМИ БГУ
- 99. ФПМИ БГУ
- 100. ФПМИ БГУ
- 101. ФПМИ БГУ
- 102. ФПМИ БГУ
- 103. ФПМИ БГУ
- 104. ФПМИ БГУ
- 105. ФПМИ БГУ
- 106. ФПМИ БГУ
- 107. ФПМИ БГУ
- 108. ФПМИ БГУ R(a) I(a) D D Как восстановить редакторские правки?
- 109. Задания Тема. Динамическое программирование 0.1 Порядок перемножения матриц 0.2 Единицы - число сочетаний из n по
- 111. Скачать презентацию