Динамическое программирование — презентация
logo
Динамическое программирование
  • Динамическое программирование
  • Лозунг ДП
  • Схема. Всегда в голове.
  • Для сильно опережающих
  • Снова Числа Фибоначчи №201
  • Пчелка Жжжженя
  • Пчелка Жжжженя
  • Камни. 1119
  • Решение
  • Камни. 1119
  • Камни. 1119
  • Где опечатка?
  • Задача «Черепашка» №2965
  • Решение задачи «Черепашка ». П.П.
  • Длительность вычислений
  • Решение задачи «Черепашка». Д.П.
  • Код (на паскале)
  • Вычисление пути
  • Вычисление пути
  • Сдать можно как задачу №2965
  • Задача «Таблица » № 1150
  • Динамическое программирование
  • Решение
  • Задача «Возрастающая подпоследовательность» №613
  • Решение
  • Решение
  • Код
  • Задача о рюкзаке
  • Рюкзак № 3089
  • Напоследок еще раз про рекурсию
  • Ханойские башни № 3050
  • Решение
1/32

Первый слайд презентации: Динамическое программирование

Григорьева А.В.

Изображение слайда

Слайд 2: Лозунг ДП

Действуем максимально лениво! Не пересчитываем то, что когда-то уже посчитали. ДП – решение сложных задач через более простые 2

Изображение слайда

Слайд 3: Схема. Всегда в голове

База Переход Общая задача = по структуре маленьким Что есть ответ? 3

Изображение слайда

Слайд 4: Для сильно опережающих

Спиралька № 1470 Ханойские башни №3050 Рюкзак с выводом № 3090 Таблица №1150 4

Изображение слайда

Слайд 5: Снова Числа Фибоначчи №201

Можно и в массив, главное – не пересчитывайте заново с первого Можно тремя переменными Как поменять два числа? Какие способы вы знаете? Помните как мы вычисляли среднее по величине из трёх? Какое число вмещается в тип int ? 49ое вместится? 5

Изображение слайда

Слайд 6: Пчелка Жжжженя

6

Изображение слайда

Слайд 7: Пчелка Жжжженя

7

Изображение слайда

Слайд 8: Камни. 1119

Дано N золотых слитков массой m 1, …, m N. Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую массу золота можно унести в таком рюкзаке? 8

Изображение слайда

Слайд 9: Решение

Сформируем матрицу A, в которой номер строки – номер камня, номер столбца – набранный вес В нулевой столбец запишем нули Max и сортировки – в <algorithm> vector из vector -ов Кто найдет опечатку в таблице? 9

Изображение слайда

Слайд 10: Камни. 1119

Дано N золотых слитков массой m 1, …, m N. Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую массу золота можно унести в таком рюкзаке? 10

Изображение слайда

Слайд 11: Камни. 1119

Дано N золотых слитков массой m 1, …, m N. Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую массу золота можно унести в таком рюкзаке? 11

Изображение слайда

Слайд 12: Где опечатка?

Аккуратно с выходом за границы массива Не забудьте: if ((j-p[i]) >=0) { сравниваем A[i,j], else {A[i,j] = из строки выше }} cout<<endl; 12

Изображение слайда

Слайд 13: Задача «Черепашка» №2965

Изображение слайда

Слайд 14: Решение задачи «Черепашка ». П.П

Полный перебор вариантов – универсальный способ решения. Но рассмотрим его потенциальные возможности Пусть дана таблица 4х4. Любой путь состоит из трёх перемещений вверх и трех перемещений вправо, т.е. длина пути равна шести. Другими словами, дано 6 шагов, из них 3 выбираются для перемещений вверх, оставшиеся 3 – для перемещений вправо определяются однозначно. Т.о. количество способов выбора трех перемещений из шести При нахождении суммы (стоимости) пути потребуется 5 операци сложения, всего 100 операций. Оценим время решения задачи для компьютера с миллионным быстродействием (см. презентация предыдущих занятий о сложности алгоритмов и быстродействии на примере задачи о тупоугольном треугольнике)

Изображение слайда

Изображение слайда

Слайд 16: Решение задачи «Черепашка». Д.П

Изображение слайда

Изображение слайда

Слайд 18: Вычисление пути

Изображение слайда

Слайд 19: Вычисление пути

Изображение слайда

Слайд 20: Сдать можно как задачу №2965

Т ам даже не требуется вывести путь И идет черепашка в другом направлении http:// informatics.mccme.ru/mod/statements/view3.php?id=656&chapterid=2965#1 С восстановлением пути №619

Изображение слайда

Слайд 21: Задача «Таблица » № 1150

Изображение слайда

Слайд 22

Изображение слайда

Слайд 23: Решение

Изображение слайда

Слайд 24: Задача «Возрастающая подпоследовательность» №613

Изображение слайда

Слайд 25: Решение

Для каждого члена исходной последовательности вычислить максимальную длину возрастающей подпоследовательности, оканчиающейся этим элементов. Например: 2 5 3 4 6 1 1 2 1 1 1 1 0 0 0 0 0 0 А это номер элемента, предшествующего нашему. Для восстановления ответа в будущем Будем вычислять характеристики всех членов последовательности от первого до N -ого по порядку и заносить полученные результаты в массив. Пусть известны характеристики для всех членов последовательности с 1-ого до ( i-1)- го и нужно узнать ее для i - ого. Тогда какой-то из элементов от 1-ого до ( i-1 )-ого будет предпоследним. Очевидно, что предпоследний может быть любой элемент, меньший i - ого. А наилучшая характеристика у нашего i - ого элемента получится, если взять предыдущий элемент с максимальной характеристикой. Решение

Изображение слайда

Слайд 26: Решение

Изображение слайда

Слайд 27: Код

27

Изображение слайда

Слайд 28: Задача о рюкзаке

28

Изображение слайда

Слайд 29: Рюкзак № 3089

Вектор из пар: vector<pair< int, int >> K(n+1) K[ i ].first K[ i ].second В остальном вспоминаем задачу Камни. 29 Рюкзак с восст.ответа № 30 90

Изображение слайда

Слайд 30: Напоследок еще раз про рекурсию

Изображение слайда

Слайд 31: Ханойские башни № 3050

Void Hanoi(n, i, j, k) 31

Изображение слайда

Последний слайд презентации: Динамическое программирование: Решение

32

Изображение слайда

Похожие презентации