Невероятное путешествие в страну динамического программирования - научно-популярный вебинар
Специально для - образовательного IT-портала GeekBrains
(с) Игорь Клейнер 2015
Школа обработки и анализа данных
ШОАДик
9. ОБО МНЕ
«Критическое мышление на каждый
день»
«Динамическое программирование»
«Секреты прохождения интервью»
«Психология восприятия»
«Просто о нейронах»
«Шизофрения»
30. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм, который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
• [1 -10 2 1 12 -4 5 -3]
31. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм, который находит в
последовательности чисел подпоследовательность с
максимальной суммой элементов
• [1 -10 2 1 12 -4 5 -3] -7
• [1 -10 2 1 12 -4 5 -3] -2
32. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм, который находит в
последовательности чисел подпоследовательность с
максимальной суммой элементов
• [1 -10 2 1 12 -4 5 -3] -7
• [1 -10 2 1 12 -4 5 -3] -2
• [1 -10 2 1 12 -4 5 -3] 16
33. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
• [1 -10 2 1 12 -4 5 -3]
34. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
• [1 -10 2 1 12 -4 5 -3]
• Ничтоже сумняшеся
35. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
• [1 -10 2 1 12 -4 5 -3]
• Ничтоже сумняшеся
37. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
38. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
• +
39. CASE STORY #1
• 2011 Intel интервью
• Предложите алгоритм который находит в
последовательности чисел подпоследовательность
с максимальной суммой элементов
• + =
41. CASE STORY #2
• 2014 Microsoft интервью
• Сколько существует способов вернуть сдачу n
монетами 1, 2, 3 и 5 копеек?
42. CASE STORY #2
• 2014 Microsoft интервью
• Сколько существует способов вернуть сдачу n
монетами 1, 2, 3 и 5 копеек?
• Решение:
43. CASE STORY #2
• 2014 Microsoft интервью
• Сколько существует способов вернуть сдачу n
монетами 1, 2, 3 и 5 копеек?
• Решение: ???
44. CASE STORY #2
• 2014 Microsoft интервью
• Сколько существует способов вернуть сдачу n
монетами 1, 2, 3 и 5 копеек?
• Решение: динамическое программирование
45. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
46. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
• Задача: 100 этажей + два яйца:
Определить за минимальное
количество попыток, этаж
начиная с которого яйцо разбивается
47. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
• Задача: 100 этажей + два яйца:
Определить за минимальное
количество попыток, этаж
начиная с которого яйцо разбивается
• В хучшем случае достаточно 100 попыток
48. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
• Задача: 100 этажей + два яйца:
Определить за минимальное
количество попыток, этаж
начиная с которого яйцо разбивается
• В худшем случае достаточно 100 попыток
• Но можно ли лучше?
49. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
• Задача: 100 этажей + два яйца:
Определить за минимальное
количество попыток, этаж
начиная с которого яйцо разбивается
• В худшем случае достаточно 100 попыток
• Но можно ли лучше? 50? 25? 14? 10? 2?
50. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
• Задача: 100 этажей + два яйца:
Определить за минимальное
количество попыток, этаж
начиная с которого яйцо разбивается
51. CASE STORY #3
• Хайфский университет, 2000 год, лекция именитого
профессора
• Задача: 100 этажей + два яйца:
Определить за минимальное
количество попыток, этаж
начиная с которого яйцо разбивается
Достаточно 14 бросков
63. КРАТКИЙ ИТОГ
• Динамическое программирование:
• прохождение собеседования
• работа
• олимпиады по программированию
• учеба на технических специальностях
• кайф от новых открытий и решения сложных
задач
65. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• ДП – позволяет решать комбинаторные задачи и
задачи оптимизации, обладающие определенным
свойством
66. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• ДП – позволяет решать комбинаторные задачи и
задачи оптимизации, обладающие определенным
свойством
• СКОЛЬКО:
• сколько способов вернуть сдачу
• сколько способов обойти граф
• сколько способов выполнить план
• сколько игр надо сыграть чтобы …
67. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• ДП – позволяет решать комбинаторные задачи и задачи
оптимизации, обладающие определенным
свойством
• минимум или максимум
• прибыли ущерба
• вероятности успеха
• среднего ожидаемого дохода
• продолжительности жизни процесса
68. ВОПРОС НА ЗАСЫПКУ
• Выбор лучшей невесты это:
• Задача оптимизации
• Комбинаторная задача
• Задача вариационного исчисления
• Хитрая казуистика
69. ВОПРОС НА ЗАСЫПКУ
• Выбор лучшей невесты это:
• Задача оптимизации
• Комбинаторная задача
• Задача вариационного исчисления
• Хитрая казуистика
70. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• ДП – позволяет решать комбинаторные задачи и
задачи оптимизации, обладающие
определенным свойством
• Оптимальность у подзадач – можно решить
задачу, с помощью решения задачи меньшей
размерности
71. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
72. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
ОЧЕНЬ ОЧЕНЬ СЛОЖНАЯ ЗАДАЧА
МНОЖЕСТВО ПАРАМЕТРОВ
73. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
Решим маленькую часть
задачи - легко
74. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
Решим большую часть задачи,
используя полученное ранее решение
75. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
Решим большую часть задачи,
используя полученное ранее решение
76. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
Решим большую часть задачи,
используя полученное ранее решение
77. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения аналогичной задачи
меньшей размерности
УРА!!!
МЫ РЕШИЛИ ВСЮ ЗАДАЧУ
Решим всю задачу,
используя полученные ранее решения
78. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?
ГДЕ ПОДВОХ?
• Да все относительно просто!
79. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?
ГДЕ ПОДВОХ?
• Да все относительно просто!
• Даже школьники могут пользоваться динамическим
программированием
80. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?
ГДЕ ПОДВОХ?
• Да все относительно просто!
• Даже школьники могут пользоваться динамическим
программированием
• Но!
81. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?
ГДЕ ПОДВОХ?
• Да все относительно просто!
• Даже школьники могут пользоваться динамическим
программированием
• Но!
82. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?
ГДЕ ПОДВОХ?
• Да все относительно просто!
• Даже школьники могут пользоваться динамическим
программированием
• Но! Дьявол кроется в деталях
83. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения задачи меньшей
размерности:
84. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения задачи меньшей
размерности:
85. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения задачи меньшей
размерности:
86. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения задачи меньшей
размерности:
87. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Оптимальность у подзадач – можно решить
задачу, с помощью решения задачи меньшей
размерности:
89. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Хватит теории, дайте практики!
• Определить минимальное количество монет,
необходимое для возврата сдачи n
90. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Хватит теории, дайте практики!
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• сдача 11 - ?
• сдача 6 - ?
91. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ЗА 5 МИНУТ
• Хватит теории, дайте практики!
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• сдача 11 – 3 монеты (5) (5) (1)
• сдача 6 - 2 монеты (3)(3) или (5) (1)
92. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
93. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем “чудо формулу” для вычисления F(n)
94. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = [ , , , ]
95. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = [ , , , ]
96. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = [1+ , , , ]
97. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = [1+ F(n-1) , , , ]
98. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = [1+ F(n-1), 1+F(n-2) , , ]
99. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]
100. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = ??? [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]
101. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• Обозначим через F(n) минимальное количество
монет, необходимое для возврата сдачи n
• Напишем чудо формулу для вычисления F(n)
• F(n) = min [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]
102. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• F(n) = min [1+F(n-1),1+F(n-2),1+F(n-3),1+F(n-5)]
• Не стоит пугаться если не все понятно!
103. ЗАДАЧА О СДАЧЕ
РЕШЕНИЕ
• Определить минимальное количество монет,
необходимое для возврата сдачи n
• F(n) = min [1+F(n-1),1+F(n-2),1+F(n-3),1+F(n-5)]
• Не стоит пугаться если не все понятно!
• И даже если все не понятно
104. «АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ
ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
• Определить целевую функцию:
• F(n) – минимальное количество ….
• F(m,n) – максимальный риск при условии ….
105. «АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ
ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
• Определить целевую функцию:
• F(n) – минимальное количество ….
• F(m,n) – максимальный риск при условии ….
• Написать «магическую» формулу для вычисления
F(n)
106. «АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ
ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
• Определить целевую функцию:
• F(n) – минимальное количество ….
• F(m,n) – максимальный риск при условии ….
• Написать «магическую» формулу для вычисления
F(n)
• Задачать начальные условия: F(0)=1, F(0,n)=n
107. ВОПРОС
• Любую задачу можно решить с помощью
динамического программирования?
• Да
• Нет
108. ВОПРОС
• Любую задачу можно решить с помощью
динамического программирования?
• Да
• Нет
110. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
111. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Например: 12,
112. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Например: 12, 1,
113. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Например: 12, 1, 15,
114. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Например: 12, 1, 15, 143
115. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Например: 12, 1, 15, 143, 2, 3, 200, 4, 32 - катастрофа
116. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Возьму первую из принцесс которая лучше первых четырех
увиденных принцесс
117. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Возьму первую из принцесс которая лучше первых четырех
увиденных принцесс: 12, 1, 15, 143
118. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Возьму первую из принцесс которая лучше первых четырех
увиденных принцесс: 12, 1, 15, 143, 2,
119. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Возьму первую из принцесс которая лучше первых четырех
увиденных принцесс: 12, 1, 15, 143, 2, 3,
120. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
Возьму первую из принцесс которая лучше первых четырех
увиденных принцесс: 12, 1, 15, 143, 2, 3, 200, 4, 32 победа
121. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
122. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ
ПРИНЦ
• Принцу необходимо выбрать лучшую из n
невест которые подходят к нему по одной в
случайном порядке, раз отказав невесте,
принц не сможет вернуться к ней
125. БИРЖА
• Опцион дает право купить или продать продукт по
специальной цене в заранее определенно время
126. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ
ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ
• Пример: Вася хочет купить через год 1000 долларов, но
переживает, что курс может вырасти.
127. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ
ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ
• Пример: Вася хочет купить через год 1000 долларов но
переживает, что курс может вырасти.
• Сегодня доллар стоит 56 рублей. Вася покупает за х
рублей опцион на покупку 1000 долларов через год по
цене 60 рублей за доллар.
• Если через год доллар будет стоить больше 60, Вася
воспользуется опционом иначе выбросит его в мусор
128. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ
ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ
• Пример: Вася хочет купить через год 1000 долларов но
переживает, что курс может вырасти.
• Сегодня доллар стоит 56 рублей. Вася покупает за х
рублей опцион на покупку 1000 долларов через год за 60
рублей.
• Если через год доллар будет стоить больше 60, Вася
воспользуется опционом иначе выбросит его в мусор
• Как определить цену опциона?
129. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ
ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ
• Как определить цену опциона?
• Формула Блека-Шоулза
• Успех и широкое распространение формулы привело к
тому, что Шоулз получил Нобелевскую премию по
экономике в 1997 году «за новый метод определения
стоимости производных ценных бумаг».
130. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ
ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ
• Как определить цену опциона?
• Формула Блека-Шоулза
131. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ
ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ
• Как определить цену опциона?
• Формула Блека-Шоулза
139. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ
ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?
• Что понять идеи метода стоит посмотреть на
решения 3-5 задач и столько же задач решить
самостоятельно
140. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ
ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?
• Чтобы уметь самостоятельно пользоваться
методом и решать нестандартные задачи стоит
посмотреть на решения и решить самостоятельно
10-15 задач
141. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ
ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?
• Чтобы стать гуру в ДП, стоит увеличить количество
решенных задач до 30 и более
142. ВОПРОСЫ
• В рамках каких курсов, как правило, студенты
изучают динамическое программирование?
143. ВОПРОСЫ
• В рамках каких курсов, как правило, студенты
изучают динамическое программирование?
• дискретная математика – иногда, чуть-чуть
• структуры данных – часто, чуть чуть
• алгоритмы - часть, чуть чуть
144. ВОПРОСЫ
• В рамках каких курсов, как правило, студенты изучают
динамическое программирование?
• дискретная математика – иногда, чуть-чуть
• структуры данных – часто, чуть чуть
• алгоритмы - часть, чуть чуть
• Парадокс – в целом многие студенты плохо
понимают суть метода и не умеют им пользоваться
145. ВОПРОСЫ
• В рамках каких курсов, как правило, студенты изучают
динамическое программирование?
• дискретная математика – иногда, чуть-чуть
• структуры данных – часто, чуть-чуть
• алгоритмы - часть, чуть-чуть
• Парадокс – в целом многие студенты плохо
понимают суть метода и не умеют им пользоваться
Почему?
146. ВОПРОСЫ
• В рамках каких курсов, как правило, студенты изучают
динамическое программирование?
• дискретная математика – иногда, чуть-чуть
• структуры данных – часто, чуть-чуть
• алгоритмы - часть, чуть-чуть
• Парадокс – в целом многие студенты плохо
понимают суть метода и не умеют им пользоваться
Почему?
147. ВОПРОС
• Часто ли встречаются задачи, решаемые с
помощью ДП на интервью?
148. ВОПРОС
• Часто ли встречаются задачи, решаемые с
помощью ДП на интервью?
• Да довольно часто 20-60% (примерно)
157. ЛИТЕРАТУРА
• Виленкин «Комбинаторика»
• Е.С. Вентцель «Исследование операций»
• А. Кофман «3аймемся исследованием операций»
• Dynamic programming and optimal control D.
Bertsekas