Функциональное программирование, весна 2016: Программирование на языке Haskell
Лекция 3. Динамическое...
Transcript of Лекция 3. Динамическое...
![Page 1: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/1.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Лекция 3. Динамическое программирование
Екатерина Алексеева
Новосибирский Государственный УниверситетМеханико-математический факультет
http://math.nsc.ru/∼alekseeva/
20.09.2012
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 2: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/2.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Содержание лекции
Характеристики алгоритмов
Распределительная задача
Динамическое программирование
Рекомендуемая литература
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 3: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/3.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Характеристики алгоритмов
Для оценки качества алгоритмов будем использовать два параметра:TA — трудоемкость (число элементарных операций алгоритма A);ПA — требуемый объем памяти.Элементарная операция — одна из арифметических операций: сложение,вычитание, умножение, деление или логическая операция сравнение двухчисел.Нас будет интересовать зависимость параметров алгоритма от длинызаписи исходных данных задачи с точностью до порядка величин.
Пример
При = 32n2, будем писать T = O(n2) или T ≈ n2.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 4: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/4.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Полиномиальные алгоритмы
Алгоритм A называют полиномиальнымЕсли его трудоемкость TA ограничена полиномом от длины записиисходных данных, то есть существует константа c > 0 и натуральное числоk такие, что TA ≤ cLk, где L – длина записи исходных данных.
Алгоритм называют экспоненциальнымЕсли трудоемкость алгоритма нельзя ограничить полиномом от длинызаписи исходных данных.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 5: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/5.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
ПримерУпорядочить n чисел a1, . . . , an в порядке неубывания.Алгоритм:выбрать наименьший элемент, затем наименьший из оставшихся и т.д.Длина записи исходных данных:
L =n∑
i=1
log2ai,
T = O(n2) ≤ O(L2),
то есть алгоритм является полиномиальным.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 6: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/6.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Даноn – число предприятий;Y – количество единиц некоторого ресурса;fk(x) – количество продукции, которое будет произведено на k-мпредприятии, если в него будет вложено x единиц ресурса (монотоннонеубывающая функция).
Требуетсямаксимизировать объем выпускаемой продукции
max f1(x1) + . . .+ fn(xn) (1)
при ограничениях:x1 + . . .+ xn ≤ Y, (2)
xi ≥ 0 целые, i = 1, . . . , n. (3)
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 7: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/7.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Идея динамического программирования (ДП)
Разработчики: Р. Беллман, В.С. Михалевич, Н.З. Шор
Метод ДП можно трактовать как алгоритмическую версию рассужденийпо индукции.
Пусть оптимальное значение целевой функции задачи (1)–(3)
Sk(y), 1 ≤ k ≤ n, 0 ≤ y ≤ Y,
где n заменено на k, Y заменено на y.
Требуется найти Sn(Y ) и набор переменных, на котором достигается этозначение.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 8: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/8.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
ТеоремаПусть f1(x1), . . . , fn(xn) – монотонно неубывающие функции. Тогдасправедливы следующие рекуррентные соотношения:
S1(y) = f1(y), 0 ≤ y ≤ Y (4)
Sk(y) = max{Sk−1(y − x) + fk(x)|0 ≤ x ≤ y}, 2 ≤ k ≤ n, 0 ≤ y ≤ Y. (5)
ДоказательствоСоотношение (4) очевидно.По определению Sk(y) ≥ max{Sk−1(y − x) + fk(x)|0 ≤ x ≤ y}. Пустьтеперь (x?
1, . . . , x?k) – такой вектор, что x?
1 + . . .+ x?k ≤ y и
Sk(y) = f1(x?1) + . . .+ fk(x
?k).
ПосколькуSk−1(y − x?
k) ≥ f1(x?1) + . . .+ fk−1(x
?k−1),
имеем Sk(y) = f1(x?1) + . . .+ fk(x
?k) ≤ Sk−1(y − x?
k) + fk(x?k).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 9: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/9.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Алгоритм ДП вычисляет множество
Sk = {Sk(y)|0 ≤ y ≤ Y }, k = 1, . . . , n
с помощью соотношений (4), (5), где на каждом шаге оптимизируетсяровно одна переменная.
y S1(y) S2(y) . . . Sn(y)
012...Y Sn(Y )
Прямой ход алгоритмаПроцесс вычисления S1, . . . , Sn. Трудоемкость:
I Число операций
I O(Y 2n),I ПамятьI O(Y n).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 10: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/10.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Алгоритм ДП вычисляет множество
Sk = {Sk(y)|0 ≤ y ≤ Y }, k = 1, . . . , n
с помощью соотношений (4), (5), где на каждом шаге оптимизируетсяровно одна переменная.
y S1(y) S2(y) . . . Sn(y)
012...Y Sn(Y )
Прямой ход алгоритмаПроцесс вычисления S1, . . . , Sn. Трудоемкость:
I Число операцийI O(Y 2n),I Память
I O(Y n).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 11: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/11.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Алгоритм ДП вычисляет множество
Sk = {Sk(y)|0 ≤ y ≤ Y }, k = 1, . . . , n
с помощью соотношений (4), (5), где на каждом шаге оптимизируетсяровно одна переменная.
y S1(y) S2(y) . . . Sn(y)
012...Y Sn(Y )
Прямой ход алгоритмаПроцесс вычисления S1, . . . , Sn. Трудоемкость:
I Число операцийI O(Y 2n),I ПамятьI O(Y n).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 12: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/12.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Обратный ход алгоритмаВычисляются значения (x?
n, . . . , x?1), с учетом того, что уже известны
Sk(y). Например, x?n определяется из уравнения
Sn(Y ) = fn(x?n) + Sn−1(Y − x?
n)
и так далее. Трудоемкость:I Число операций
I O(Y n),I ПамятьI O(Y n).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 13: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/13.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Обратный ход алгоритмаВычисляются значения (x?
n, . . . , x?1), с учетом того, что уже известны
Sk(y). Например, x?n определяется из уравнения
Sn(Y ) = fn(x?n) + Sn−1(Y − x?
n)
и так далее. Трудоемкость:I Число операцийI O(Y n),I Память
I O(Y n).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 14: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/14.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Обратный ход алгоритмаВычисляются значения (x?
n, . . . , x?1), с учетом того, что уже известны
Sk(y). Например, x?n определяется из уравнения
Sn(Y ) = fn(x?n) + Sn−1(Y − x?
n)
и так далее. Трудоемкость:I Число операцийI O(Y n),I ПамятьI O(Y n).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 15: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/15.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Характеристика алгоритма ДП для распределительной задачи
Пусть fi(xi) = aixi, все коэффициенты ai ограничены константой, ai ≤ c,но Y = 2n. Тогда длина записи
L =n∑
i=1
log ai + log Y ≤ c′n,
то есть L = O(n), но
T = O(Y 2n) = O(22LL),
и алгоритм ДП не является полиномиальным.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 16: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/16.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Обобщение распределительной задачи
Обобщим задачу (1)–(3):
max f1(x1) + . . .+ fn(xn) (6)
h1(x1) + . . .+ hn(xn) ≤ Y (7)
ai ≥ xi ≥ 0, целые, i = 1, . . . , n. (8)
Если hi(x) целочисленные монотонно неубывающие функции, товместо (4)– (5) можно использовать следующие рекуррентныесоотношения:
S1(y) = f1(x?), где x? = max{x ≤ a1|h1(x) ≤ y}, 0 ≤ y ≤ Y ; (9)
Sk(y) = maxx≤ak|hk(x)≤y
{fk(x) + Sk−1(y − hk(x))}, 2 ≤ k ≤ n, 0 ≤ y ≤ Y. (10)
Упражнение. Доказать справедливость соотношений (9)–(10).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 17: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/17.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Обратная задача
Поиск наименьших затрат на получение заданного количества продукции:
minh1(x1) + . . .+ hn(xn) (11)
при ограничениях:f1(x1) + . . .+ fn(xn) ≥ D, (12)
ai ≥ xi ≥ 0 целые, i = 1, . . . , n. (13)
Если fk(x) – целочисленные монотонно неубывающие функции, то длярешения задачи (11)–(13) можно использовать идеи динамическогопрограммирования.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 18: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/18.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
ДП для обратной задачи
Пустьf−1i (d) = min{0 ≤ x ≤ ai|fi(x) ≥ d}.
Для 1 ≤ k ≤ n, 0 ≤ d ≤ D обозначим через tk(d) – оптимальное решениезадачи (11)–(13), в которой n заменено на k, а D заменено на d.Требуется найти tn(D).Рекуррентные соотношения:
t1(d) =
{∞, если f1(a1) < d,h1(f
−11 (d)), если f1(a1) ≥ d,
0 ≤ d ≤ D. (14)
tk(d) = min{tk−1(d−fk(x))+hk(x)|0 ≤ x ≤ ak, x ≤ f−1k (d)}, k ≥ 2, 0 ≤ d ≤ D.
(15)Упражнение. Доказать справедливость соотношений (14)–(15).
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 19: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/19.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
ТеоремаПредположим, что D — наибольшее число, для которого оптимальноезначение целевой функции задачи (11)–(13) не превосходит Y . Тогдаоптимальное значение целевой функции задачи (6)–(8) равно D.
ДоказательствоПусть D удовлетворяет условию теоремы и (x?
1, . . . , x?n) —
соответствующее решение задачи (11)–(13). Значитf1(x
?1) + . . .+ fn(x
?n) ≥ D и h1(x
?1) + . . .+ hn(x
?n) ≤ Y . Следовательно, D
не превосходит оптимального решения D1 задачи (6)–(8). Если бы D1было больше D, то решение задачи (11)–(13), в которой D заменено наD1, тоже не превышало бы Y , что противоречит максимальности D.
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.
![Page 20: Лекция 3. Динамическое программированиеmath.nsc.ru/~alekseeva/DP-MMF-2013/L3_mmf_2012_2013.pdf · Динамическое программирование](https://reader034.fdocuments.net/reader034/viewer/2022050521/5fa4913d69ab1070db7c9d00/html5/thumbnails/20.jpg)
Характеристики алгоритмовРаспределительная задача
Динамическое программированиеРекомендуемая литература
Рекомендуемая литература
Т. Кормен, Ч. Лейзерсон, Р. Ривест Алгоритмы: построение и анализ.М.: МЦНМО, 1999
М. Гэри, Д. Джонсон: Вычислительные машины и труднорешаемыезадачи. М.: Мир, 1982
Екатерина Вячеславовна Алексеева Дискретные задачи принятия решений. Лекция 3.