161
(с) Игорь Клейнер 2015 УВЛЕКАТЕЛЬНОЕ ПУТЕШЕСТВИЕ В СТРАНУ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

Невероятное путешествие в страну динамического программирования

Embed Size (px)

Citation preview

(с) Игорь Клейнер 2015

УВЛЕКАТЕЛЬНОЕ ПУТЕШЕСТВИЕ В

СТРАНУ ДИНАМИЧЕСКОГО

ПРОГРАММИРОВАНИЯ

ПРИСТЕГНИТЕ РЕМНИ

ОБО МНЕ

ОБО МНЕ

ОБО МНЕ

ОБО МНЕ

ОБО МНЕ

ОБО МНЕ

«Критическое мышление на каждый

день»

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

«Секреты прохождения интервью»

«Психология восприятия»

«Просто о нейронах»

«Шизофрения»

ОБО МНЕ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ В

МАССЫ

ГЛАВНЫЕ ВОПРОСЫ НА СЕГОДНЯ

ГЛАВНЫЕ ВОПРОСЫ

• Кто я?

• Кто здесь?

• Зачем мы тут?

ГЛАВНЫЕ ВОПРОСЫ

• Кто я?

• Кто здесь?

• Зачем мы тут?

ГЛАВНЫЕ ВОПРОСЫ

• Кто я?

• Кто здесь?

• Зачем мы тут?

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

зачем оно нужно?

МЕТАФОРА

НАША ЦЕЛЬ

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

• Два подхода к объяснениям:

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

• Два подхода к объяснениям:

• Сверху вниз

• Снизу вверх

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

• Два подхода к объяснениям:

• Сверху вниз

• Снизу вверх

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

Пример обычного объяснения «снизу вверх»

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

Наше объяснение: сверху вниз

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

Наше объяснение: сверху вниз

Мотивация –

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

Наше объяснение: сверху вниз

Мотивация – истории из жизни

ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ

ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ

НУЖНО?

Наше объяснение: сверху вниз

Мотивация – истории из жизни

CASE STORY #1

• 2011 Intel интервью

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм, который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

• [1 -10 2 1 12 -4 5 -3]

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм, который находит в

последовательности чисел подпоследовательность с

максимальной суммой элементов

• [1 -10 2 1 12 -4 5 -3] -7

• [1 -10 2 1 12 -4 5 -3] -2

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

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

• [1 -10 2 1 12 -4 5 -3]

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

• [1 -10 2 1 12 -4 5 -3]

• Ничтоже сумняшеся

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

• [1 -10 2 1 12 -4 5 -3]

• Ничтоже сумняшеся

CASE STORY #1

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

• +

CASE STORY #1

• 2011 Intel интервью

• Предложите алгоритм который находит в

последовательности чисел подпоследовательность

с максимальной суммой элементов

• + =

CASE STORY #2

• 2014 Microsoft интервью

CASE STORY #2

• 2014 Microsoft интервью

• Сколько существует способов вернуть сдачу n

монетами 1, 2, 3 и 5 копеек?

CASE STORY #2

• 2014 Microsoft интервью

• Сколько существует способов вернуть сдачу n

монетами 1, 2, 3 и 5 копеек?

• Решение:

CASE STORY #2

• 2014 Microsoft интервью

• Сколько существует способов вернуть сдачу n

монетами 1, 2, 3 и 5 копеек?

• Решение: ???

CASE STORY #2

• 2014 Microsoft интервью

• Сколько существует способов вернуть сдачу n

монетами 1, 2, 3 и 5 копеек?

• Решение: динамическое программирование

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого

профессора

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого

профессора

• Задача: 100 этажей + два яйца:

Определить за минимальное

количество попыток, этаж

начиная с которого яйцо разбивается

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого профессора

• Задача: 100 этажей + два яйца:

Определить за минимальное

количество попыток, этаж

начиная с которого яйцо разбивается

• В хучшем случае достаточно 100 попыток

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого профессора

• Задача: 100 этажей + два яйца:

Определить за минимальное

количество попыток, этаж

начиная с которого яйцо разбивается

• В худшем случае достаточно 100 попыток

• Но можно ли лучше?

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого профессора

• Задача: 100 этажей + два яйца:

Определить за минимальное

количество попыток, этаж

начиная с которого яйцо разбивается

• В худшем случае достаточно 100 попыток

• Но можно ли лучше? 50? 25? 14? 10? 2?

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого

профессора

• Задача: 100 этажей + два яйца:

Определить за минимальное

количество попыток, этаж

начиная с которого яйцо разбивается

CASE STORY #3

• Хайфский университет, 2000 год, лекция именитого

профессора

• Задача: 100 этажей + два яйца:

Определить за минимальное

количество попыток, этаж

начиная с которого яйцо разбивается

Достаточно 14 бросков

МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

[1 -10 2 1 12 -4 5 -3]

МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

РАЗНЫЕ ЗАДАЧИ – ЕДИНЫЙ ПОДХОД

[1 -10 2 1 12 -4 5 -3]

МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

ЕЩЕ НЕМНОГО МОТИВАЦИИ

ЕЩЕ НЕМНОГО МОТИВАЦИИ

ЕЩЕ МОТИВАЦИЯ

• Олимпиады по программированию

ЕЩЕ МОТИВАЦИЯ

• Олимпиады по программированию

ЕЩЕ НЕМНОГО МОТИВАЦИИ

И ЕЩЕ СОВСЕМ ЧУТЬ-ЧУТЬ МОТИВАЦИИ

И ЕЩЕ СОВСЕМ ЧУТЬ-ЧУТЬ МОТИВАЦИИ

КРАТКИЙ ИТОГ

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

• прохождение собеседования

• работа

• олимпиады по программированию

• учеба на технических специальностях

• кайф от новых открытий и решения сложных

задач

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• ДП – позволяет решать комбинаторные задачи и

задачи оптимизации, обладающие определенным

свойством

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

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

• СКОЛЬКО:

• сколько способов вернуть сдачу

• сколько способов обойти граф

• сколько способов выполнить план

• сколько игр надо сыграть чтобы …

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• ДП – позволяет решать комбинаторные задачи и задачи

оптимизации, обладающие определенным свойством

• минимум или максимум

• прибыли \ ущерба

• вероятности успеха

• среднего ожидаемого дохода

• продолжительности жизни процесса

ВОПРОС НА ЗАСЫПКУ

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

• Задача оптимизации

• Комбинаторная задача

• Задача вариационного исчисления

• Хитрая казуистика

ВОПРОС НА ЗАСЫПКУ

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

• Задача оптимизации

• Комбинаторная задача

• Задача вариационного исчисления

• Хитрая казуистика

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• ДП – позволяет решать комбинаторные задачи и

задачи оптимизации, обладающие

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

• Оптимальность у подзадач – можно решить

задачу, с помощью решения задачи меньшей

размерности

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

ОЧЕНЬ ОЧЕНЬ СЛОЖНАЯ ЗАДАЧА

МНОЖЕСТВО ПАРАМЕТРОВ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

Решим маленькую часть

задачи - легко

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

Решим большую часть задачи,

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

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

Решим большую часть задачи,

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

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

Решим большую часть задачи,

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

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения аналогичной задачи

меньшей размерности

УРА!!!

МЫ РЕШИЛИ ВСЮ ЗАДАЧУ

Решим всю задачу,

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

НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?

ГДЕ ПОДВОХ?

• Да все относительно просто!

НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?

ГДЕ ПОДВОХ?

• Да все относительно просто!

• Даже школьники могут пользоваться динамическим

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

НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?

ГДЕ ПОДВОХ?

• Да все относительно просто!

• Даже школьники могут пользоваться динамическим

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

• Но!

НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?

ГДЕ ПОДВОХ?

• Да все относительно просто!

• Даже школьники могут пользоваться динамическим

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

• Но!

НЕУЖЕЛИ ВСЕ ТАК ПРОСТО?

ГДЕ ПОДВОХ?

• Да все относительно просто!

• Даже школьники могут пользоваться динамическим

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

• Но! Дьявол кроется в деталях

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения задачи меньшей

размерности:

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения задачи меньшей

размерности:

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения задачи меньшей

размерности:

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения задачи меньшей

размерности:

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Оптимальность у подзадач – можно решить

задачу, с помощью решения задачи меньшей

размерности:

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Хватит теории, дайте практики!

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Хватит теории, дайте практики!

• Определить минимальное количество монет,

необходимое для возврата сдачи n

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Хватит теории, дайте практики!

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• сдача 11 - ?

• сдача 6 - ?

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЗА 5 МИНУТ

• Хватит теории, дайте практики!

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• сдача 11 – 3 монеты (5) (5) (1)

• сдача 6 - 2 монеты (3)(3) или (5) (1)

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество

монет, необходимое для возврата сдачи n

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество

монет, необходимое для возврата сдачи n

• Напишем “чудо формулу” для вычисления F(n)

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет, необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = [ , , , ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет, необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = [ , , , ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет, необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = [1+ , , , ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет, необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = [1+ F(n-1) , , , ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет, необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = [1+ F(n-1), 1+F(n-2) , , ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество

монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• Обозначим через F(n) минимальное количество

монет, необходимое для возврата сдачи n

• Напишем чудо формулу для вычисления F(n)

• F(n) = ??? [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи 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) ]

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• F(n) = min [1+F(n-1),1+F(n-2),1+F(n-3),1+F(n-5)]

• Не стоит пугаться если не все понятно!

ЗАДАЧА О СДАЧЕ

РЕШЕНИЕ

• Определить минимальное количество монет,

необходимое для возврата сдачи n

• F(n) = min [1+F(n-1),1+F(n-2),1+F(n-3),1+F(n-5)]

• Не стоит пугаться если не все понятно!

• И даже если все не понятно

«АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ

ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

• Определить целевую функцию:

• F(n) – минимальное количество ….

• F(m,n) – максимальный риск при условии ….

«АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ

ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

• Определить целевую функцию:

• F(n) – минимальное количество ….

• F(m,n) – максимальный риск при условии ….

• Написать «магическую» формулу для вычисления

F(n)

«АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ

ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

• Определить целевую функцию:

• F(n) – минимальное количество ….

• F(m,n) – максимальный риск при условии ….

• Написать «магическую» формулу для вычисления

F(n)

• Задачать начальные условия: F(0)=1, F(0,n)=n

ВОПРОС

• Любую задачу можно решить с помощью

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

• Да

• Нет

ВОПРОС

• Любую задачу можно решить с помощью

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

• Да

• Нет

РЕЗЮМЕ

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

относительно простая и одновременно

мощная техника позволяющая решать

широкий класс задач

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Например: 12,

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Например: 12, 1,

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Например: 12, 1, 15,

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Например: 12, 1, 15, 143

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Например: 12, 1, 15, 143, 2, 3, 200, 4, 32 - катастрофа

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Возьму первую из принцесс которая лучше первых четырех

увиденных принцесс

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Возьму первую из принцесс которая лучше первых четырех

увиденных принцесс: 12, 1, 15, 143

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Возьму первую из принцесс которая лучше первых четырех

увиденных принцесс: 12, 1, 15, 143, 2,

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Возьму первую из принцесс которая лучше первых четырех

увиденных принцесс: 12, 1, 15, 143, 2, 3,

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

Возьму первую из принцесс которая лучше первых четырех

увиденных принцесс: 12, 1, 15, 143, 2, 3, 200, 4, 32 победа

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ \ РАЗБОРЧИВЫЙ

ПРИНЦ

• Принцу необходимо выбрать лучшую из n

невест которые подходят к нему по одной в

случайном порядке, раз отказав невесте,

принц не сможет вернуться к ней

БИРЖА

БИРЖА

• Опцион -

БИРЖА

• Опцион дает право купить или продать продукт по

специальной цене в заранее определенно время

ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ

ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ

• Пример: Вася хочет купить через год 1000 долларов, но

переживает, что курс может вырасти.

ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ

ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ

• Пример: Вася хочет купить через год 1000 долларов но

переживает, что курс может вырасти.

• Сегодня доллар стоит 56 рублей. Вася покупает за х

рублей опцион на покупку 1000 долларов через год по

цене 60 рублей за доллар.

• Если через год доллар будет стоить больше 60, Вася

воспользуется опционом иначе выбросит его в мусор

ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ

ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ

• Пример: Вася хочет купить через год 1000 долларов но

переживает, что курс может вырасти.

• Сегодня доллар стоит 56 рублей. Вася покупает за х

рублей опцион на покупку 1000 долларов через год за 60

рублей.

• Если через год доллар будет стоить больше 60, Вася

воспользуется опционом иначе выбросит его в мусор

• Как определить цену опциона?

ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ

ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ

• Как определить цену опциона?

• Формула Блека-Шоулза

• Успех и широкое распространение формулы привело к

тому, что Шоулз получил Нобелевскую премию по

экономике в 1997 году «за новый метод определения

стоимости производных ценных бумаг».

ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ

ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ

• Как определить цену опциона?

• Формула Блека-Шоулза

ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ

ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ

• Как определить цену опциона?

• Формула Блека-Шоулза

РЕЗЮМЕ

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

относительно простая и одновременно

мощная техника позволяющая решать

широкий класс задач

МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

МОЖНО ЛИ САМОСТОЯТЕЛЬНО ИЗУЧИТЬ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?

• Можно и нужно!

• Идеи метода доступны даже школьникам

ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?

КАК ИЗУЧИТЬ САМОСТОЯТЕЛЬНО

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Бархатный путь

КАК ИЗУЧИТЬ САМОСТОЯТЕЛЬНО

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?

• Что понять идеи метода стоит посмотреть на

решения 3-5 задач и столько же задач решить

самостоятельно

ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?

• Чтобы уметь самостоятельно пользоваться

методом и решать нестандартные задачи стоит

посмотреть на решения и решить самостоятельно

10-15 задач

ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?

• Чтобы стать гуру в ДП, стоит увеличить количество

решенных задач до 30 и более

ВОПРОСЫ

• В рамках каких курсов, как правило, студенты

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

ВОПРОСЫ

• В рамках каких курсов, как правило, студенты

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

• дискретная математика – иногда, чуть-чуть

• структуры данных – часто, чуть чуть

• алгоритмы - часть, чуть чуть

ВОПРОСЫ

• В рамках каких курсов, как правило, студенты изучают

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

• дискретная математика – иногда, чуть-чуть

• структуры данных – часто, чуть чуть

• алгоритмы - часть, чуть чуть

• Парадокс – в целом многие студенты плохо

понимают суть метода и не умеют им пользоваться

ВОПРОСЫ

• В рамках каких курсов, как правило, студенты изучают динамическое программирование?

• дискретная математика – иногда, чуть-чуть

• структуры данных – часто, чуть-чуть

• алгоритмы - часть, чуть-чуть

• Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться

Почему?

ВОПРОСЫ

• В рамках каких курсов, как правило, студенты изучают динамическое программирование?

• дискретная математика – иногда, чуть-чуть

• структуры данных – часто, чуть-чуть

• алгоритмы - часть, чуть-чуть

• Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться

Почему?

ВОПРОС

• Часто ли встречаются задачи, решаемые с

помощью ДП на интервью?

ВОПРОС

• Часто ли встречаются задачи, решаемые с

помощью ДП на интервью?

• Да довольно часто 20-60% (примерно)

ВОПРОС

• Где еще применяется ДП?

ВОПРОС

• Где еще применяется ДП?

• Image processing

• Graph theory

• Data mining

• Statistical learning

• Biology

ОБРАТНАЯ СВЯЗЬ

[email protected]

Ваши вопросы и обратная связь суть лучший источник

мотивации

ССЫЛКИ

• Бесплатный онлайн курс «Динамическое

программирование» https://goo.gl/p5yks2

ДИРЕКТОР МЕБЕЛЬНОЙ ФАБРИКИ

• https://goo.gl/OcHgAx

ССЫЛКИ

• Задача о выборе невесты

• https://goo.gl/ij25ZJ

ССЫЛКИ

• Задача о сдаче

• https://goo.gl/BZJh1V

ССЫЛКИ

• Задача о подпоследовательности

• https://goo.gl/ulEBor

ЛИТЕРАТУРА

• Виленкин «Комбинаторика»

• Е.С. Вентцель «Исследование операций»

• А. Кофман «3аймемся исследованием операций»

• Dynamic programming and optimal control D.

Bertsekas

ЛИТЕРАТУРА

БЛАГОДАРНОСТИ

БЛАГОДАРНОСТИ

Образовательный IT-портал

GeekBrains

БЛАГОДАРНОСТИ

• Клейнер Надежда

• Бородин Захар

• Гольцман Александр

• Дубинский Игаль

• Гликин Григорий

• Емельянов Юрий