SlideShare uma empresa Scribd logo
1 de 161
Baixar para ler offline
(с) Игорь Клейнер 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
ОБРАТНАЯ СВЯЗЬ
• igkleiner@gmail.com
Ваши вопросы и обратная связь суть лучший источник
мотивации
ССЫЛКИ
• Бесплатный онлайн курс «Динамическое
программирование» 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
БЛАГОДАРНОСТИ
• Клейнер Надежда
• Бородин Захар
• Гольцман Александр
• Дубинский Игаль
• Гликин Григорий
• Емельянов Юрий

Mais conteúdo relacionado

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

Тривиально о тривиальном / Даниил Подольский (GitInSky.com)
Тривиально о тривиальном / Даниил Подольский (GitInSky.com)Тривиально о тривиальном / Даниил Подольский (GitInSky.com)
Тривиально о тривиальном / Даниил Подольский (GitInSky.com)Ontico
 
Sergey Kudryashov.Использование процесса Product Discovery для перехода от "...
 Sergey Kudryashov.Использование процесса Product Discovery для перехода от "... Sergey Kudryashov.Использование процесса Product Discovery для перехода от "...
Sergey Kudryashov.Использование процесса Product Discovery для перехода от "...Lviv Startup Club
 
Путь IT-воина: как найти работу мечты и полететь в космос
Путь IT-воина: как найти работу мечты и полететь в космосПуть IT-воина: как найти работу мечты и полететь в космос
Путь IT-воина: как найти работу мечты и полететь в космосSkillFactory
 
Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...
Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...
Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...Ontico
 
Особенности быстрого тестирования
Особенности быстрого тестированияОсобенности быстрого тестирования
Особенности быстрого тестированияUIDesign Group
 
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...Procontent.Ru Magazine
 
подготовка к прохождение интервью и собеседований для программистов встреча 4
подготовка к прохождение интервью и собеседований для программистов встреча 4подготовка к прохождение интервью и собеседований для программистов встреча 4
подготовка к прохождение интервью и собеседований для программистов встреча 4Igor Kleiner
 
"Построение сценария продаж в интернете. Практика управления прибылью", Денис...
"Построение сценария продаж в интернете. Практика управления прибылью", Денис..."Построение сценария продаж в интернете. Практика управления прибылью", Денис...
"Построение сценария продаж в интернете. Практика управления прибылью", Денис...Olya Onats
 
лобасев 3 ключевых навыка успешной agile-команды
лобасев   3 ключевых навыка успешной agile-командылобасев   3 ключевых навыка успешной agile-команды
лобасев 3 ключевых навыка успешной agile-командыMagneta AI
 
3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-командыDmitry Lobasev
 
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"Lviv Startup Club
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
Эффективность. Больше теми же усилиями
Эффективность. Больше теми же усилиямиЭффективность. Больше теми же усилиями
Эффективность. Больше теми же усилиямиAlexander Orlov
 
Как легко и быстро создать видео для своего
Как легко и быстро создать видео для своегоКак легко и быстро создать видео для своего
Как легко и быстро создать видео для своегоRadonetsAleksei
 
Опыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryОпыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryNikita Efimov
 
Бывает так, что вас нет рядом
Бывает так, что вас нет рядомБывает так, что вас нет рядом
Бывает так, что вас нет рядомRoman Ivliev
 
Геймификация процесса разработки ПО
Геймификация процесса разработки ПОГеймификация процесса разработки ПО
Геймификация процесса разработки ПОAskhat Urazbaev
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаSQALab
 
собеседование тестировщиков что спросить и как ответить
собеседование тестировщиков   что спросить и как ответитьсобеседование тестировщиков   что спросить и как ответить
собеседование тестировщиков что спросить и как ответитьAlex Baranouski
 

Semelhante a Невероятное путешествие в страну динамического программирования (20)

Тривиально о тривиальном / Даниил Подольский (GitInSky.com)
Тривиально о тривиальном / Даниил Подольский (GitInSky.com)Тривиально о тривиальном / Даниил Подольский (GitInSky.com)
Тривиально о тривиальном / Даниил Подольский (GitInSky.com)
 
Sergey Kudryashov.Использование процесса Product Discovery для перехода от "...
 Sergey Kudryashov.Использование процесса Product Discovery для перехода от "... Sergey Kudryashov.Использование процесса Product Discovery для перехода от "...
Sergey Kudryashov.Использование процесса Product Discovery для перехода от "...
 
Путь IT-воина: как найти работу мечты и полететь в космос
Путь IT-воина: как найти работу мечты и полететь в космосПуть IT-воина: как найти работу мечты и полететь в космос
Путь IT-воина: как найти работу мечты и полететь в космос
 
Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...
Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...
Строим 24/7 DevOps центр на высоконагруженном проекте / Евгений Потапов (ITSu...
 
Особенности быстрого тестирования
Особенности быстрого тестированияОсобенности быстрого тестирования
Особенности быстрого тестирования
 
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
Особенности быстрого тестирования мобильных интерфейсов - Антон Алябьев, UI D...
 
подготовка к прохождение интервью и собеседований для программистов встреча 4
подготовка к прохождение интервью и собеседований для программистов встреча 4подготовка к прохождение интервью и собеседований для программистов встреча 4
подготовка к прохождение интервью и собеседований для программистов встреча 4
 
"Построение сценария продаж в интернете. Практика управления прибылью", Денис...
"Построение сценария продаж в интернете. Практика управления прибылью", Денис..."Построение сценария продаж в интернете. Практика управления прибылью", Денис...
"Построение сценария продаж в интернете. Практика управления прибылью", Денис...
 
лобасев 3 ключевых навыка успешной agile-команды
лобасев   3 ключевых навыка успешной agile-командылобасев   3 ключевых навыка успешной agile-команды
лобасев 3 ключевых навыка успешной agile-команды
 
3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды3 ключевых навыка успешной Agile-команды
3 ключевых навыка успешной Agile-команды
 
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Эффективность. Больше теми же усилиями
Эффективность. Больше теми же усилиямиЭффективность. Больше теми же усилиями
Эффективность. Больше теми же усилиями
 
Как легко и быстро создать видео для своего
Как легко и быстро создать видео для своегоКак легко и быстро создать видео для своего
Как легко и быстро создать видео для своего
 
Опыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryОпыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product Discovery
 
Pretotyping
PretotypingPretotyping
Pretotyping
 
Бывает так, что вас нет рядом
Бывает так, что вас нет рядомБывает так, что вас нет рядом
Бывает так, что вас нет рядом
 
Геймификация процесса разработки ПО
Геймификация процесса разработки ПОГеймификация процесса разработки ПО
Геймификация процесса разработки ПО
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
 
собеседование тестировщиков что спросить и как ответить
собеседование тестировщиков   что спросить и как ответитьсобеседование тестировщиков   что спросить и как ответить
собеседование тестировщиков что спросить и как ответить
 

Mais de Igor Kleiner

Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Igor Kleiner
 
מדעי נתונים לכל אחד
מדעי נתונים לכל אחדמדעי נתונים לכל אחד
מדעי נתונים לכל אחדIgor Kleiner
 
מדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותמדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותIgor Kleiner
 
מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2Igor Kleiner
 
מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1Igor Kleiner
 
תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3Igor Kleiner
 
תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4Igor Kleiner
 
שאלות לתרגול עצמי
שאלות לתרגול עצמישאלות לתרגול עצמי
שאלות לתרגול עצמיIgor Kleiner
 
פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3Igor Kleiner
 
מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13Igor Kleiner
 
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותתכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותIgor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמימבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמיIgor Kleiner
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהIgor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017Igor Kleiner
 
תכנות מדעי: פייתון: הרצאה 8: 2017
תכנות מדעי: פייתון: הרצאה 8:  2017תכנות מדעי: פייתון: הרצאה 8:  2017
תכנות מדעי: פייתון: הרצאה 8: 2017Igor Kleiner
 
תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017Igor Kleiner
 
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותתכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותIgor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017Igor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017Igor Kleiner
 
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותמבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותIgor Kleiner
 

Mais de Igor Kleiner (20)

Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1
 
מדעי נתונים לכל אחד
מדעי נתונים לכל אחדמדעי נתונים לכל אחד
מדעי נתונים לכל אחד
 
מדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותמדע נתונים - למידה מכונות
מדע נתונים - למידה מכונות
 
מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2
 
מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1
 
תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3
 
תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4
 
שאלות לתרגול עצמי
שאלות לתרגול עצמישאלות לתרגול עצמי
שאלות לתרגול עצמי
 
פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3
 
מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13מבוא לתכנות מדעי: פייתון הרצאה 13
מבוא לתכנות מדעי: פייתון הרצאה 13
 
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותתכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
 
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמימבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
 
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
 
תכנות מדעי: פייתון: הרצאה 8: 2017
תכנות מדעי: פייתון: הרצאה 8:  2017תכנות מדעי: פייתון: הרצאה 8:  2017
תכנות מדעי: פייתון: הרצאה 8: 2017
 
תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017
 
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותתכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
 
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 5: 2017
 
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
 
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותמבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
 

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

  • 1. (с) Игорь Клейнер 2015 УВЛЕКАТЕЛЬНОЕ ПУТЕШЕСТВИЕ В СТРАНУ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  • 2.
  • 9. ОБО МНЕ «Критическое мышление на каждый день» «Динамическое программирование» «Секреты прохождения интервью» «Психология восприятия» «Просто о нейронах» «Шизофрения»
  • 13. ГЛАВНЫЕ ВОПРОСЫ • Кто я? • Кто здесь? • Зачем мы тут?
  • 14. ГЛАВНЫЕ ВОПРОСЫ • Кто я? • Кто здесь? • Зачем мы тут?
  • 15. ГЛАВНЫЕ ВОПРОСЫ • Кто я? • Кто здесь? • Зачем мы тут? • Что такое динамическое программирование и зачем оно нужно?
  • 19. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? • Два подхода к объяснениям:
  • 20. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? • Два подхода к объяснениям: • Сверху вниз • Снизу вверх
  • 21. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? • Два подхода к объяснениям: • Сверху вниз • Снизу вверх
  • 22. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Пример обычного объяснения «снизу вверх»
  • 23.
  • 24.
  • 25. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз
  • 26. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз Мотивация –
  • 27. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз Мотивация – истории из жизни
  • 28. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз Мотивация – истории из жизни
  • 29. CASE STORY #1 • 2011 Intel интервью
  • 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 интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • + =
  • 40. CASE STORY #2 • 2014 Microsoft интервью
  • 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 бросков
  • 53. [1 -10 2 1 12 -4 5 -3] МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ РАЗНЫЕ ЗАДАЧИ – ЕДИНЫЙ ПОДХОД
  • 54. [1 -10 2 1 12 -4 5 -3] МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  • 58. ЕЩЕ МОТИВАЦИЯ • Олимпиады по программированию
  • 59. ЕЩЕ МОТИВАЦИЯ • Олимпиады по программированию
  • 61. И ЕЩЕ СОВСЕМ ЧУТЬ-ЧУТЬ МОТИВАЦИИ
  • 62. И ЕЩЕ СОВСЕМ ЧУТЬ-ЧУТЬ МОТИВАЦИИ
  • 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 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности:
  • 88. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 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. ВОПРОС • Любую задачу можно решить с помощью динамического программирования? • Да • Нет
  • 109. РЕЗЮМЕ • Динамическое программирования – относительно простая и одновременно мощная техника позволяющая решать широкий класс задач
  • 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. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Как определить цену опциона? • Формула Блека-Шоулза
  • 132. РЕЗЮМЕ • Динамическое программирования – относительно простая и одновременно мощная техника позволяющая решать широкий класс задач
  • 134.
  • 135. МОЖНО ЛИ САМОСТОЯТЕЛЬНО ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Можно и нужно! • Идеи метода доступны даже школьникам
  • 136. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?
  • 137. КАК ИЗУЧИТЬ САМОСТОЯТЕЛЬНО ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Бархатный путь
  • 139. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Что понять идеи метода стоит посмотреть на решения 3-5 задач и столько же задач решить самостоятельно
  • 140. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Чтобы уметь самостоятельно пользоваться методом и решать нестандартные задачи стоит посмотреть на решения и решить самостоятельно 10-15 задач
  • 141. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Чтобы стать гуру в ДП, стоит увеличить количество решенных задач до 30 и более
  • 142. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование?
  • 143. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть чуть • алгоритмы - часть, чуть чуть
  • 144. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть чуть • алгоритмы - часть, чуть чуть • Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться
  • 145. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть-чуть • алгоритмы - часть, чуть-чуть • Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться Почему?
  • 146. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть-чуть • алгоритмы - часть, чуть-чуть • Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться Почему?
  • 147. ВОПРОС • Часто ли встречаются задачи, решаемые с помощью ДП на интервью?
  • 148. ВОПРОС • Часто ли встречаются задачи, решаемые с помощью ДП на интервью? • Да довольно часто 20-60% (примерно)
  • 149. ВОПРОС • Где еще применяется ДП?
  • 150. ВОПРОС • Где еще применяется ДП? • Image processing • Graph theory • Data mining • Statistical learning • Biology
  • 151. ОБРАТНАЯ СВЯЗЬ • igkleiner@gmail.com Ваши вопросы и обратная связь суть лучший источник мотивации
  • 152. ССЫЛКИ • Бесплатный онлайн курс «Динамическое программирование» https://goo.gl/p5yks2
  • 154. ССЫЛКИ • Задача о выборе невесты • https://goo.gl/ij25ZJ
  • 155. ССЫЛКИ • Задача о сдаче • https://goo.gl/BZJh1V
  • 156. ССЫЛКИ • Задача о подпоследовательности • https://goo.gl/ulEBor
  • 157. ЛИТЕРАТУРА • Виленкин «Комбинаторика» • Е.С. Вентцель «Исследование операций» • А. Кофман «3аймемся исследованием операций» • Dynamic programming and optimal control D. Bertsekas
  • 161. БЛАГОДАРНОСТИ • Клейнер Надежда • Бородин Захар • Гольцман Александр • Дубинский Игаль • Гликин Григорий • Емельянов Юрий