Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 161 Ad

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

Download to read offline

Невероятное путешествие в страну динамического программирования - научно-популярный вебинар

Специально для - образовательного IT-портала GeekBrains

(с) Игорь Клейнер 2015
Школа обработки и анализа данных
ШОАДик

Невероятное путешествие в страну динамического программирования - научно-популярный вебинар

Специально для - образовательного IT-портала GeekBrains

(с) Игорь Клейнер 2015
Школа обработки и анализа данных
ШОАДик

Advertisement
Advertisement

More Related Content

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

More from Igor Kleiner (20)

Advertisement

Recently uploaded (20)

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

  1. 1. (с) Игорь Клейнер 2015 УВЛЕКАТЕЛЬНОЕ ПУТЕШЕСТВИЕ В СТРАНУ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  2. 2. ПРИСТЕГНИТЕ РЕМНИ
  3. 3. ОБО МНЕ
  4. 4. ОБО МНЕ
  5. 5. ОБО МНЕ
  6. 6. ОБО МНЕ
  7. 7. ОБО МНЕ
  8. 8. ОБО МНЕ «Критическое мышление на каждый день» «Динамическое программирование» «Секреты прохождения интервью» «Психология восприятия» «Просто о нейронах» «Шизофрения»
  9. 9. ОБО МНЕ
  10. 10. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ В МАССЫ
  11. 11. ГЛАВНЫЕ ВОПРОСЫ НА СЕГОДНЯ
  12. 12. ГЛАВНЫЕ ВОПРОСЫ • Кто я? • Кто здесь? • Зачем мы тут?
  13. 13. ГЛАВНЫЕ ВОПРОСЫ • Кто я? • Кто здесь? • Зачем мы тут?
  14. 14. ГЛАВНЫЕ ВОПРОСЫ • Кто я? • Кто здесь? • Зачем мы тут? • Что такое динамическое программирование и зачем оно нужно?
  15. 15. МЕТАФОРА
  16. 16. НАША ЦЕЛЬ
  17. 17. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО?
  18. 18. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? • Два подхода к объяснениям:
  19. 19. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? • Два подхода к объяснениям: • Сверху вниз • Снизу вверх
  20. 20. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? • Два подхода к объяснениям: • Сверху вниз • Снизу вверх
  21. 21. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Пример обычного объяснения «снизу вверх»
  22. 22. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз
  23. 23. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз Мотивация –
  24. 24. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз Мотивация – истории из жизни
  25. 25. ЧТО ТАКОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЗАЧЕМ ОНО НАМ НУЖНО? Наше объяснение: сверху вниз Мотивация – истории из жизни
  26. 26. CASE STORY #1 • 2011 Intel интервью
  27. 27. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм, который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • [1 -10 2 1 12 -4 5 -3]
  28. 28. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм, который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • [1 -10 2 1 12 -4 5 -3] -7 • [1 -10 2 1 12 -4 5 -3] -2
  29. 29. 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
  30. 30. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • [1 -10 2 1 12 -4 5 -3]
  31. 31. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • [1 -10 2 1 12 -4 5 -3] • Ничтоже сумняшеся
  32. 32. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • [1 -10 2 1 12 -4 5 -3] • Ничтоже сумняшеся
  33. 33. CASE STORY #1
  34. 34. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов
  35. 35. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • +
  36. 36. CASE STORY #1 • 2011 Intel интервью • Предложите алгоритм который находит в последовательности чисел подпоследовательность с максимальной суммой элементов • + =
  37. 37. CASE STORY #2 • 2014 Microsoft интервью
  38. 38. CASE STORY #2 • 2014 Microsoft интервью • Сколько существует способов вернуть сдачу n монетами 1, 2, 3 и 5 копеек?
  39. 39. CASE STORY #2 • 2014 Microsoft интервью • Сколько существует способов вернуть сдачу n монетами 1, 2, 3 и 5 копеек? • Решение:
  40. 40. CASE STORY #2 • 2014 Microsoft интервью • Сколько существует способов вернуть сдачу n монетами 1, 2, 3 и 5 копеек? • Решение: ???
  41. 41. CASE STORY #2 • 2014 Microsoft интервью • Сколько существует способов вернуть сдачу n монетами 1, 2, 3 и 5 копеек? • Решение: динамическое программирование
  42. 42. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора
  43. 43. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора • Задача: 100 этажей + два яйца: Определить за минимальное количество попыток, этаж начиная с которого яйцо разбивается
  44. 44. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора • Задача: 100 этажей + два яйца: Определить за минимальное количество попыток, этаж начиная с которого яйцо разбивается • В хучшем случае достаточно 100 попыток
  45. 45. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора • Задача: 100 этажей + два яйца: Определить за минимальное количество попыток, этаж начиная с которого яйцо разбивается • В худшем случае достаточно 100 попыток • Но можно ли лучше?
  46. 46. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора • Задача: 100 этажей + два яйца: Определить за минимальное количество попыток, этаж начиная с которого яйцо разбивается • В худшем случае достаточно 100 попыток • Но можно ли лучше? 50? 25? 14? 10? 2?
  47. 47. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора • Задача: 100 этажей + два яйца: Определить за минимальное количество попыток, этаж начиная с которого яйцо разбивается
  48. 48. CASE STORY #3 • Хайфский университет, 2000 год, лекция именитого профессора • Задача: 100 этажей + два яйца: Определить за минимальное количество попыток, этаж начиная с которого яйцо разбивается Достаточно 14 бросков
  49. 49. МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  50. 50. [1 -10 2 1 12 -4 5 -3] МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ РАЗНЫЕ ЗАДАЧИ – ЕДИНЫЙ ПОДХОД
  51. 51. [1 -10 2 1 12 -4 5 -3] МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  52. 52. МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  53. 53. ЕЩЕ НЕМНОГО МОТИВАЦИИ
  54. 54. ЕЩЕ НЕМНОГО МОТИВАЦИИ
  55. 55. ЕЩЕ МОТИВАЦИЯ • Олимпиады по программированию
  56. 56. ЕЩЕ МОТИВАЦИЯ • Олимпиады по программированию
  57. 57. ЕЩЕ НЕМНОГО МОТИВАЦИИ
  58. 58. И ЕЩЕ СОВСЕМ ЧУТЬ-ЧУТЬ МОТИВАЦИИ
  59. 59. И ЕЩЕ СОВСЕМ ЧУТЬ-ЧУТЬ МОТИВАЦИИ
  60. 60. КРАТКИЙ ИТОГ • Динамическое программирование: • прохождение собеседования • работа • олимпиады по программированию • учеба на технических специальностях • кайф от новых открытий и решения сложных задач
  61. 61. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ
  62. 62. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • ДП – позволяет решать комбинаторные задачи и задачи оптимизации, обладающие определенным свойством
  63. 63. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • ДП – позволяет решать комбинаторные задачи и задачи оптимизации, обладающие определенным свойством • СКОЛЬКО: • сколько способов вернуть сдачу • сколько способов обойти граф • сколько способов выполнить план • сколько игр надо сыграть чтобы …
  64. 64. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • ДП – позволяет решать комбинаторные задачи и задачи оптимизации, обладающие определенным свойством • минимум или максимум • прибыли ущерба • вероятности успеха • среднего ожидаемого дохода • продолжительности жизни процесса
  65. 65. ВОПРОС НА ЗАСЫПКУ • Выбор лучшей невесты это: • Задача оптимизации • Комбинаторная задача • Задача вариационного исчисления • Хитрая казуистика
  66. 66. ВОПРОС НА ЗАСЫПКУ • Выбор лучшей невесты это: • Задача оптимизации • Комбинаторная задача • Задача вариационного исчисления • Хитрая казуистика
  67. 67. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • ДП – позволяет решать комбинаторные задачи и задачи оптимизации, обладающие определенным свойством • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности
  68. 68. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности
  69. 69. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности ОЧЕНЬ ОЧЕНЬ СЛОЖНАЯ ЗАДАЧА МНОЖЕСТВО ПАРАМЕТРОВ
  70. 70. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности Решим маленькую часть задачи - легко
  71. 71. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности Решим большую часть задачи, используя полученное ранее решение
  72. 72. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности Решим большую часть задачи, используя полученное ранее решение
  73. 73. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности Решим большую часть задачи, используя полученное ранее решение
  74. 74. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения аналогичной задачи меньшей размерности УРА!!! МЫ РЕШИЛИ ВСЮ ЗАДАЧУ Решим всю задачу, используя полученные ранее решения
  75. 75. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО? ГДЕ ПОДВОХ? • Да все относительно просто!
  76. 76. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО? ГДЕ ПОДВОХ? • Да все относительно просто! • Даже школьники могут пользоваться динамическим программированием
  77. 77. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО? ГДЕ ПОДВОХ? • Да все относительно просто! • Даже школьники могут пользоваться динамическим программированием • Но!
  78. 78. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО? ГДЕ ПОДВОХ? • Да все относительно просто! • Даже школьники могут пользоваться динамическим программированием • Но!
  79. 79. НЕУЖЕЛИ ВСЕ ТАК ПРОСТО? ГДЕ ПОДВОХ? • Да все относительно просто! • Даже школьники могут пользоваться динамическим программированием • Но! Дьявол кроется в деталях
  80. 80. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности:
  81. 81. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности:
  82. 82. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности:
  83. 83. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности:
  84. 84. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Оптимальность у подзадач – можно решить задачу, с помощью решения задачи меньшей размерности:
  85. 85. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Хватит теории, дайте практики!
  86. 86. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Хватит теории, дайте практики! • Определить минимальное количество монет, необходимое для возврата сдачи n
  87. 87. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Хватит теории, дайте практики! • Определить минимальное количество монет, необходимое для возврата сдачи n • сдача 11 - ? • сдача 6 - ?
  88. 88. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЗА 5 МИНУТ • Хватит теории, дайте практики! • Определить минимальное количество монет, необходимое для возврата сдачи n • сдача 11 – 3 монеты (5) (5) (1) • сдача 6 - 2 монеты (3)(3) или (5) (1)
  89. 89. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n
  90. 90. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем “чудо формулу” для вычисления F(n)
  91. 91. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = [ , , , ]
  92. 92. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = [ , , , ]
  93. 93. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = [1+ , , , ]
  94. 94. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = [1+ F(n-1) , , , ]
  95. 95. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = [1+ F(n-1), 1+F(n-2) , , ]
  96. 96. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]
  97. 97. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • Обозначим через F(n) минимальное количество монет, необходимое для возврата сдачи n • Напишем чудо формулу для вычисления F(n) • F(n) = ??? [1+F(n-1), 1+F(n-2), 1+F(n-3) ,1+F(n-5) ]
  98. 98. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи 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) ]
  99. 99. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • F(n) = min [1+F(n-1),1+F(n-2),1+F(n-3),1+F(n-5)] • Не стоит пугаться если не все понятно!
  100. 100. ЗАДАЧА О СДАЧЕ РЕШЕНИЕ • Определить минимальное количество монет, необходимое для возврата сдачи n • F(n) = min [1+F(n-1),1+F(n-2),1+F(n-3),1+F(n-5)] • Не стоит пугаться если не все понятно! • И даже если все не понятно
  101. 101. «АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ • Определить целевую функцию: • F(n) – минимальное количество …. • F(m,n) – максимальный риск при условии ….
  102. 102. «АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ • Определить целевую функцию: • F(n) – минимальное количество …. • F(m,n) – максимальный риск при условии …. • Написать «магическую» формулу для вычисления F(n)
  103. 103. «АЛГОРИТМ» РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ • Определить целевую функцию: • F(n) – минимальное количество …. • F(m,n) – максимальный риск при условии …. • Написать «магическую» формулу для вычисления F(n) • Задачать начальные условия: F(0)=1, F(0,n)=n
  104. 104. ВОПРОС • Любую задачу можно решить с помощью динамического программирования? • Да • Нет
  105. 105. ВОПРОС • Любую задачу можно решить с помощью динамического программирования? • Да • Нет
  106. 106. РЕЗЮМЕ • Динамическое программирования – относительно простая и одновременно мощная техника позволяющая решать широкий класс задач
  107. 107. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней
  108. 108. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Например: 12,
  109. 109. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Например: 12, 1,
  110. 110. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Например: 12, 1, 15,
  111. 111. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Например: 12, 1, 15, 143
  112. 112. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Например: 12, 1, 15, 143, 2, 3, 200, 4, 32 - катастрофа
  113. 113. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Возьму первую из принцесс которая лучше первых четырех увиденных принцесс
  114. 114. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Возьму первую из принцесс которая лучше первых четырех увиденных принцесс: 12, 1, 15, 143
  115. 115. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Возьму первую из принцесс которая лучше первых четырех увиденных принцесс: 12, 1, 15, 143, 2,
  116. 116. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Возьму первую из принцесс которая лучше первых четырех увиденных принцесс: 12, 1, 15, 143, 2, 3,
  117. 117. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней Возьму первую из принцесс которая лучше первых четырех увиденных принцесс: 12, 1, 15, 143, 2, 3, 200, 4, 32 победа
  118. 118. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней
  119. 119. ЗАДАЧА О ВЫБОРЕ НЕВЕСТЫ РАЗБОРЧИВЫЙ ПРИНЦ • Принцу необходимо выбрать лучшую из n невест которые подходят к нему по одной в случайном порядке, раз отказав невесте, принц не сможет вернуться к ней
  120. 120. БИРЖА
  121. 121. БИРЖА • Опцион -
  122. 122. БИРЖА • Опцион дает право купить или продать продукт по специальной цене в заранее определенно время
  123. 123. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Пример: Вася хочет купить через год 1000 долларов, но переживает, что курс может вырасти.
  124. 124. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Пример: Вася хочет купить через год 1000 долларов но переживает, что курс может вырасти. • Сегодня доллар стоит 56 рублей. Вася покупает за х рублей опцион на покупку 1000 долларов через год по цене 60 рублей за доллар. • Если через год доллар будет стоить больше 60, Вася воспользуется опционом иначе выбросит его в мусор
  125. 125. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Пример: Вася хочет купить через год 1000 долларов но переживает, что курс может вырасти. • Сегодня доллар стоит 56 рублей. Вася покупает за х рублей опцион на покупку 1000 долларов через год за 60 рублей. • Если через год доллар будет стоить больше 60, Вася воспользуется опционом иначе выбросит его в мусор • Как определить цену опциона?
  126. 126. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Как определить цену опциона? • Формула Блека-Шоулза • Успех и широкое распространение формулы привело к тому, что Шоулз получил Нобелевскую премию по экономике в 1997 году «за новый метод определения стоимости производных ценных бумаг».
  127. 127. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Как определить цену опциона? • Формула Блека-Шоулза
  128. 128. ОПЦИОН ДАЕТ ПРАВО КУПИТЬ ИЛИ ПРОДАТЬ ПРОДУКТ ПО СПЕЦИАЛЬНОЙ ЦЕНЕ • Как определить цену опциона? • Формула Блека-Шоулза
  129. 129. РЕЗЮМЕ • Динамическое программирования – относительно простая и одновременно мощная техника позволяющая решать широкий класс задач
  130. 130. МАГИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
  131. 131. МОЖНО ЛИ САМОСТОЯТЕЛЬНО ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Можно и нужно! • Идеи метода доступны даже школьникам
  132. 132. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ?
  133. 133. КАК ИЗУЧИТЬ САМОСТОЯТЕЛЬНО ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Бархатный путь
  134. 134. КАК ИЗУЧИТЬ САМОСТОЯТЕЛЬНО ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
  135. 135. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Что понять идеи метода стоит посмотреть на решения 3-5 задач и столько же задач решить самостоятельно
  136. 136. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Чтобы уметь самостоятельно пользоваться методом и решать нестандартные задачи стоит посмотреть на решения и решить самостоятельно 10-15 задач
  137. 137. ЧТО ДЕЛАТЬ ЕСЛИ Я ХОЧУ ИЗУЧИТЬ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ? • Чтобы стать гуру в ДП, стоит увеличить количество решенных задач до 30 и более
  138. 138. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование?
  139. 139. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть чуть • алгоритмы - часть, чуть чуть
  140. 140. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть чуть • алгоритмы - часть, чуть чуть • Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться
  141. 141. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть-чуть • алгоритмы - часть, чуть-чуть • Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться Почему?
  142. 142. ВОПРОСЫ • В рамках каких курсов, как правило, студенты изучают динамическое программирование? • дискретная математика – иногда, чуть-чуть • структуры данных – часто, чуть-чуть • алгоритмы - часть, чуть-чуть • Парадокс – в целом многие студенты плохо понимают суть метода и не умеют им пользоваться Почему?
  143. 143. ВОПРОС • Часто ли встречаются задачи, решаемые с помощью ДП на интервью?
  144. 144. ВОПРОС • Часто ли встречаются задачи, решаемые с помощью ДП на интервью? • Да довольно часто 20-60% (примерно)
  145. 145. ВОПРОС • Где еще применяется ДП?
  146. 146. ВОПРОС • Где еще применяется ДП? • Image processing • Graph theory • Data mining • Statistical learning • Biology
  147. 147. ОБРАТНАЯ СВЯЗЬ • igkleiner@gmail.com Ваши вопросы и обратная связь суть лучший источник мотивации
  148. 148. ССЫЛКИ • Бесплатный онлайн курс «Динамическое программирование» https://goo.gl/p5yks2
  149. 149. ДИРЕКТОР МЕБЕЛЬНОЙ ФАБРИКИ • https://goo.gl/OcHgAx
  150. 150. ССЫЛКИ • Задача о выборе невесты • https://goo.gl/ij25ZJ
  151. 151. ССЫЛКИ • Задача о сдаче • https://goo.gl/BZJh1V
  152. 152. ССЫЛКИ • Задача о подпоследовательности • https://goo.gl/ulEBor
  153. 153. ЛИТЕРАТУРА • Виленкин «Комбинаторика» • Е.С. Вентцель «Исследование операций» • А. Кофман «3аймемся исследованием операций» • Dynamic programming and optimal control D. Bertsekas
  154. 154. ЛИТЕРАТУРА
  155. 155. БЛАГОДАРНОСТИ
  156. 156. БЛАГОДАРНОСТИ Образовательный IT-портал GeekBrains
  157. 157. БЛАГОДАРНОСТИ • Клейнер Надежда • Бородин Захар • Гольцман Александр • Дубинский Игаль • Гликин Григорий • Емельянов Юрий

×