Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Динамическое программирование

Содержание

Рейтинг за домашнюю работу
Динамическое программирование Рейтинг за домашнюю работу Динамическое программирование — это когда у нас есть задача, которую непонятно как Задача про черепашкуЕсть клетчатое поле NхM. В левом верхнем углу сидит черепашка. Первая основная идея ДПБудем искать ответ не только на нашу общую задачу, А что дальше?Ответ для верхнего левого угла очевиден. У нас только один Вторая основная идея ДПРешая задачу для очередной клетки, будем считать, что мы А как мы можем попасть в очередную клетку?Всё очевидно! Мы можем прийти   Б) Пусть в каждой клетке поля записано некоторое число. Требуется найти максимальную   В результате получим такую таблицу: Последовательность из нулей и единиц без двух единиц подряд.  dp[i][j] – ответ для последовательности длины i, оканчивающейся на jdp[1][0] = dp[1][1] Немного теорииОпределения:Состояние – это набор параметров, с помощью которых мы фиксируем подзадачуПереходы Чтобы успешно решить задачу динамикой нужно ответить на следующие вопросы:1) Что мы Порядок пересчётаСуществует три порядка пересчёта:ПрямойСостояния последовательно пересчитываются исходя из уже посчитанных. 2) ОбратныйОбновляются все состояния, зависящие от текущего состояния 3) Ленивая динамикаРекурсивная функция пересчёта динамики. Это что-то вроде поиска в глубину Классы задач на ДППодсчёт объектов, в том числе определение существования объекта. Т.е. Виды задач на ДПЛинейное ДПМногомерное ДПДП на подотрезкахДП по полной суммеДП на Отдельно рассмотрим семейство задач о рюкзаке    Решение методом динамического программированияПусть dp[i][j] – есть максимальная стоимость предметов , которое ПримерW = 13, N = 5w1 = 3, p1 = 1w2 = Другие задачи семействаОграниченный рюкзак - обобщение классической задачи, когда любой предмет может Решение методом ДП  Неограниченный рюкзак - обобщение ограниченного рюкзака, в котором любой предмет может быть Пусть dp[i][j] – есть максимальная стоимость предметов , которое можно уложить в Непрерывный рюкзак - вариант задачи, в котором возможно брать любою дробную часть   Полезные ссылкиgoo.gl/Ip0tXp – Подробная лекция о динамическом программированииgoo.gl/ehm0lw – Задача о рюкзаке
Слайды презентации

Слайд 2 Рейтинг за домашнюю работу

Рейтинг за домашнюю работу

Слайд 3 Динамическое программирование — это когда у нас есть

Динамическое программирование — это когда у нас есть задача, которую непонятно

задача, которую непонятно как решать, и мы разбиваем ее

на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.

Слайд 4 Задача про черепашку
Есть клетчатое поле NхM. В левом

Задача про черепашкуЕсть клетчатое поле NхM. В левом верхнем углу сидит

верхнем углу сидит черепашка. Она умеет ходить только вправо

или вниз.
А) Сколько у неё разных путей до правого нижнего угла?

Слайд 5 Первая основная идея ДП
Будем искать ответ не только

Первая основная идея ДПБудем искать ответ не только на нашу общую

на нашу общую задачу, но и на более мелкие

аналогичные задачи («подзадача»). В нашем случае решим для каждой клетки поля сколькими способами до неё можно добраться.


Слайд 6 А что дальше?
Ответ для верхнего левого угла очевиден.

А что дальше?Ответ для верхнего левого угла очевиден. У нас только

У нас только один способ до него добраться.
Для клеток

левого столбца и верхней строки тоже всё очевидно.

Слайд 7 Вторая основная идея ДП
Решая задачу для очередной клетки,

Вторая основная идея ДПРешая задачу для очередной клетки, будем считать, что

будем считать, что мы уже знаем ответ для предыдущих

клеток и попробуем, используя это знание, найти ответ для текущей.

Слайд 8 А как мы можем попасть в очередную клетку?
Всё

А как мы можем попасть в очередную клетку?Всё очевидно! Мы можем

очевидно! Мы можем прийти в неё либо с верхней,

либо с левой клетки.

Answer[i][j] = Answer[i - 1][j] + Answer[i][j - 1]

Слайд 10 Б) Пусть в каждой клетке поля записано некоторое

Б) Пусть в каждой клетке поля записано некоторое число. Требуется найти

число. Требуется найти максимальную сумму чисел, которую можно набрать

по пути в правый нижний угол.


Слайд 12 В результате получим такую таблицу:

В результате получим такую таблицу:

Слайд 13 Последовательность из нулей и единиц без двух единиц

Последовательность из нулей и единиц без двух единиц подряд. 

подряд.
 


Слайд 14 dp[i][j] – ответ для последовательности длины i, оканчивающейся

dp[i][j] – ответ для последовательности длины i, оканчивающейся на jdp[1][0] =

на j
dp[1][0] = dp[1][1] = 1;
dp[i][0] = dp[i -

1][0] + dp[1 - 1][1];
dp[i][1] = dp[i - 1][1];

А можно заметить, что это числа Фибоначчи ☺

Слайд 15 Немного теории
Определения:
Состояние – это набор параметров, с помощью

Немного теорииОпределения:Состояние – это набор параметров, с помощью которых мы фиксируем

которых мы фиксируем подзадачу
Переходы – это рекуррентное соотношение между

состояниями
Порядок пересчёта – это порядок, по которому мы обходим состояния

Слайд 16 Чтобы успешно решить задачу динамикой нужно ответить на

Чтобы успешно решить задачу динамикой нужно ответить на следующие вопросы:1) Что

следующие вопросы:
1) Что мы вычисляем?
2) Какие у нас состояния?
3)

Каковы значения в начальных состояниях?
4) Какие переходы между состояниями?
5) Каков порядок пересчёта?
6) Где хранится ответ на задачу?

Слайд 17 Порядок пересчёта
Существует три порядка пересчёта:
Прямой
Состояния последовательно пересчитываются исходя

Порядок пересчётаСуществует три порядка пересчёта:ПрямойСостояния последовательно пересчитываются исходя из уже посчитанных.

из уже посчитанных.


Слайд 18 2) Обратный
Обновляются все состояния, зависящие от текущего состояния

2) ОбратныйОбновляются все состояния, зависящие от текущего состояния

Слайд 19 3) Ленивая динамика
Рекурсивная функция пересчёта динамики. Это что-то

3) Ленивая динамикаРекурсивная функция пересчёта динамики. Это что-то вроде поиска в

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

рёбра – это зависимости между ними.

Слайд 20 Классы задач на ДП
Подсчёт объектов, в том числе

Классы задач на ДППодсчёт объектов, в том числе определение существования объекта.

определение существования объекта. Т.е. надо посчитать, сколько всего существует

объектов с заданными свойствами, или проверить, существует ли хотя бы один.
Нахождение оптимального объекта. Требуется в некотором множестве объектов найти в некотором смысле оптимальный.
Вывод k-ого объекта. Нужно найти в некотором порядке k-ый объект.


Слайд 21 Виды задач на ДП
Линейное ДП
Многомерное ДП
ДП на подотрезках
ДП

Виды задач на ДПЛинейное ДПМногомерное ДПДП на подотрезкахДП по полной суммеДП

по полной сумме
ДП на ациклических графах
ДП на деревьях
Игры(ретро-анализ)
ДП на

подмножествах.
ДП по профилю
Динамика по изломанному профилю

Слайд 22 Отдельно рассмотрим семейство задач о рюкзаке
 

Отдельно рассмотрим семейство задач о рюкзаке 

Слайд 24 Решение методом динамического программирования
Пусть dp[i][j] – есть максимальная

Решение методом динамического программированияПусть dp[i][j] – есть максимальная стоимость предметов ,

стоимость предметов , которое можно уложить в рюкзак вместимости

j, если мы используем только первые i предметов.

dp[i][0] = dp[0][j] = 0;
dp[i][j] = max(dp[i-1][j], dp[i-1][j - wi] + pi);

Ответ: dp[N][W];

Слайд 25 Пример
W = 13, N = 5
w1 = 3,

ПримерW = 13, N = 5w1 = 3, p1 = 1w2

p1 = 1
w2 = 4, p2 = 6
w3 =

5, p3 = 4
w4 = 8, p4 = 7
w5 = 9, p5 = 6

Слайд 26 Другие задачи семейства
Ограниченный рюкзак - обобщение классической задачи,

Другие задачи семействаОграниченный рюкзак - обобщение классической задачи, когда любой предмет

когда любой предмет может быть взят некоторое количество раз.


Пример: Вор грабит склад. Он может унести ограниченный вес, каждый товар на складе содержится в определенном ограниченном количестве. Нужно унести предметов на максимальную сумму.
Варианты решения:
Перебор.
Методом динамического программирования.



Слайд 27 Решение методом ДП
 

Решение методом ДП 

Слайд 28 Неограниченный рюкзак - обобщение ограниченного рюкзака, в котором

Неограниченный рюкзак - обобщение ограниченного рюкзака, в котором любой предмет может

любой предмет может быть выбран любое количество раз.
Пример:

Перекупщик закупается на оптовой базе. Он может увезти ограниченное количество товара, количество товара каждого типа на базе не ограниченно. Нужно увезти товар на максимальную сумму.
Варианты решения:
Перебор.
Методом динамического программирования.

Слайд 29 Пусть dp[i][j] – есть максимальная стоимость предметов ,

Пусть dp[i][j] – есть максимальная стоимость предметов , которое можно уложить

которое можно уложить в рюкзак вместимости j, если мы

используем только первые i предметов.

dp[i][0] = dp[0][j] = 0;
dp[i][j] = max(dp[i-1][j], dp[i][j - wi] + pi);

Ответ: dp[N][W];

Слайд 30 Непрерывный рюкзак - вариант задачи, в котором возможно

Непрерывный рюкзак - вариант задачи, в котором возможно брать любою дробную

брать любою дробную часть от предмета, при этом удельная

стоимость сохраняется.
Пример: Вор грабит мясника. Суммарно он может унести ограниченный вес товаров. Вор может резать товары без ущерба к удельной стоимости. Нужно унести товара на максимальную сумму.
Варианты решения:
Возможность брать любую часть от предмета сильно упрощает задачу. Жадный алгоритм дает оптимальное решение в данном случае.

  • Имя файла: dinamicheskoe-programmirovanie.pptx
  • Количество просмотров: 108
  • Количество скачиваний: 0