19
Динамическое программирование (с) Игорь Клейнер M.Sc. 2017

Динамическое программирование - курс лекций.1

Embed Size (px)

Citation preview

Page 1: Динамическое программирование - курс лекций.1

Динамическое

программирование

(с) Игорь Клейнер M.Sc.

2017

Page 2: Динамическое программирование - курс лекций.1

Цели Урока

Первое знакомство с динамическим программированием

Что такое динамическое программирование?

Задачи оптимизации и задачи комбинаторики

Свойство оптимальности у подзадач

Page 3: Динамическое программирование - курс лекций.1

Динамическое программирование

• Что же такое ДП?

Page 4: Динамическое программирование - курс лекций.1

Динамическое программирование

• Что же такое ДП?

• ДП - метод решения задач оптимизации и комбинаторики, обладающих

определенным свойством

Page 5: Динамическое программирование - курс лекций.1

Динамическое программирование

• Что же такое ДП?

• ДП метод решения задач оптимизации и комбинаторики, обладающих

определенным свойством

Page 6: Динамическое программирование - курс лекций.1

ДП метод решения задач оптимизации и

комбинаторики, обладающих определенным

свойством

• Метод: определённая последовательность действий, ведущих к решению задачи

шаг 1 шаг 2 … решение

Page 7: Динамическое программирование - курс лекций.1

ДП метод решения задач оптимизации и

комбинаторики, обладающих определенным

свойством

• Метод – инструмент: определенная совокупность действий ведущих к решению

задачи

• Задача оптимизации: задача поиска максимума или минимума некой функции,

например:

Page 8: Динамическое программирование - курс лекций.1

ДП метод решения задач оптимизации и

комбинаторики, обладающих определенным

свойством

• Метод – инструмент: определенная совокупность действий ведущих к решению задачи

• Задача оптимизации: задача поиска максимума или минимума некой функции,

например:

• выбор лучшей невесты

• выбор кратчайшего пути

• выбор стратегии игры с максимальным средним выигрышем

• выбор плана производства минимизирующего потери

• …

Page 9: Динамическое программирование - курс лекций.1

ДП метод решения задач оптимизации и

комбинаторики, обладающих определенным

свойством

• Метод – инструмент: определенная совокупность действий ведущих к решению задачи

• Задача оптимизации: задача поиска максимума или минимума некой функции,

например:

• выбор лучшей невесты

• выбор кратчайшего пути

• выбор стратегии игры с максимальным средним выигрышем

• выбор плана производства минимизирующего потери

• …

Page 10: Динамическое программирование - курс лекций.1

ДП метод решения задач оптимизации и

комбинаторики, обладающих определенным

свойством

• Метод – инструмент: определенная совокупность действий ведущих к решению задачи

• Задача оптимизации: задача поиска максимума или минимума некой функции

• Задача комбинаторики: задача, связанная с подсчетом количества объектов

• сколькими способами можно 10 человек поставить в ряд?

• сколькими способами можно покрасить данный граф в три цвета

• сколько существует способов вернуть сдачу Х с помощью монет 1,2,3 копейки

Page 11: Динамическое программирование - курс лекций.1

ДП метод решения задач оптимизации и

комбинаторики, обладающих определенным

свойством

• Метод – инструмент: определенная совокупность действий ведущих к решению

задачи

• Задача оптимизации: задача поиска максимума или минимума некой функции

• Задача комбинаторики: задача, связанная с подсчетом количества объектов

• Свойство оптимальности подзадач: оптимальное решение всей задачи

строится на решении более простых подзадач

Page 12: Динамическое программирование - курс лекций.1

Свойство оптимальности подзадач

неформальное объяснение

• Свойство оптимальности подзадач: оптимальное решение всей задачи

строится на решении более простых подзадач

• Дана исходная сложная задача решить которую сразу мы не можем

очень сложная задача

«реши меня»

Page 13: Динамическое программирование - курс лекций.1

Свойство оптимальности подзадач

неформальное объяснение

• Дана исходная сложная задача решить которую сразу мы не можем

• Упростим задачу и решим ее очень простую версию

Page 14: Динамическое программирование - курс лекций.1

Свойство оптимальности подзадач

неформальное объяснение

• Дана исходная сложная задача решить которую сразу мы не можем

• Используя решение очень простой задачи, решим чуть более сложную подзадачу

Page 15: Динамическое программирование - курс лекций.1

Свойство оптимальности подзадач

неформальное объяснение

• Дана исходная сложная задача решить которую сразу мы не можем

• Используя решения предыдущих подзадач, решим еще более сложную

подзадачу

маленькая

подзадача мы

умеем ее решать

S0

чуть более сложная

подзадача S1 ее мы уже

решили

Решим еще более

сложную подзадачу S2

используя решения

предыдущих подзадач

Page 16: Динамическое программирование - курс лекций.1

Свойство оптимальности подзадач

неформальное объяснение

• Дана исходная сложная задача решить которую сразу мы не можем

• Продолжим расширять подзадачу пока не получим решение исходной задачи

маленькая

подзадача мы

умеем ее решать

S0

чуть более сложная

подзадача S1 ее мы уже

решили

Решим еще более

сложную подзадачу S2

используя решения

предыдущих подзадач

Page 17: Динамическое программирование - курс лекций.1

Свойство оптимальности подзадач

неформальное объяснение

ПОБЕДА

Исходная сложная задача решена с помощью решения

последовательности простых подзадач

Page 18: Динамическое программирование - курс лекций.1

Итоги урока

Первое знакомство с методом динамического программирования

ДП позволяет решать некоторые задачи оптимизации и комбинаторики, используя свойство

оптимальности у подзадач

Page 19: Динамическое программирование - курс лекций.1

Ссылки

• Канал курса на портале YouTube:

• https://www.youtube.com/playlist?list=PLUfHxBkkFMScqPOn8J0aHvd48wykQNcWS

• Группа динамическое программирование «в контакте»

• https://vk.com/public76350495

• Слайды лекций курса:

• https://www.slideshare.net/igorkleiner5