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

Нажмите для полного просмотра!
Динамическое программирование, слайд №1Динамическое программирование, слайд №2Динамическое программирование, слайд №3Динамическое программирование, слайд №4Динамическое программирование, слайд №5Динамическое программирование, слайд №6Динамическое программирование, слайд №7Динамическое программирование, слайд №8Динамическое программирование, слайд №9Динамическое программирование, слайд №10Динамическое программирование, слайд №11Динамическое программирование, слайд №12Динамическое программирование, слайд №13Динамическое программирование, слайд №14Динамическое программирование, слайд №15Динамическое программирование, слайд №16Динамическое программирование, слайд №17Динамическое программирование, слайд №18Динамическое программирование, слайд №19Динамическое программирование, слайд №20Динамическое программирование, слайд №21Динамическое программирование, слайд №22Динамическое программирование, слайд №23Динамическое программирование, слайд №24Динамическое программирование, слайд №25Динамическое программирование, слайд №26Динамическое программирование, слайд №27Динамическое программирование, слайд №28Динамическое программирование, слайд №29Динамическое программирование, слайд №30Динамическое программирование, слайд №31Динамическое программирование, слайд №32

Содержание

Вы можете ознакомиться и скачать презентацию на тему Динамическое программирование. Доклад-сообщение содержит 32 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Динамическое программирование
Описание слайда:
Динамическое программирование

Слайд 2





Рейтинг за домашнюю работу
Описание слайда:
Рейтинг за домашнюю работу

Слайд 3





Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.
Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.
Описание слайда:
Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок. Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.

Слайд 4





Задача про черепашку
Есть клетчатое поле NхM. В левом верхнем углу сидит черепашка. Она умеет ходить только вправо  или вниз. 
А) Сколько у неё разных путей до правого нижнего угла?
Описание слайда:
Задача про черепашку Есть клетчатое поле NхM. В левом верхнем углу сидит черепашка. Она умеет ходить только вправо или вниз. А) Сколько у неё разных путей до правого нижнего угла?

Слайд 5





Первая основная идея ДП
Будем искать ответ не только на нашу общую задачу, но и на более мелкие аналогичные задачи («подзадача»). В нашем случае решим для каждой клетки поля сколькими способами до неё можно добраться.
Описание слайда:
Первая основная идея ДП Будем искать ответ не только на нашу общую задачу, но и на более мелкие аналогичные задачи («подзадача»). В нашем случае решим для каждой клетки поля сколькими способами до неё можно добраться.

Слайд 6





А что дальше?
Ответ для верхнего левого угла очевиден.  У нас только один способ до него добраться.
Для клеток левого столбца и верхней строки тоже всё очевидно.
Описание слайда:
А что дальше? Ответ для верхнего левого угла очевиден. У нас только один способ до него добраться. Для клеток левого столбца и верхней строки тоже всё очевидно.

Слайд 7





Вторая основная идея ДП
Решая задачу для очередной клетки, будем считать, что мы уже знаем ответ для предыдущих клеток и попробуем, используя это знание, найти ответ для текущей.
Описание слайда:
Вторая основная идея ДП Решая задачу для очередной клетки, будем считать, что мы уже знаем ответ для предыдущих клеток и попробуем, используя это знание, найти ответ для текущей.

Слайд 8





А как мы можем попасть в очередную клетку?
Всё очевидно! Мы можем прийти в неё либо с верхней, либо с левой клетки.
Answer[i][j] = Answer[i - 1][j] + Answer[i][j - 1]
Описание слайда:
А как мы можем попасть в очередную клетку? Всё очевидно! Мы можем прийти в неё либо с верхней, либо с левой клетки. Answer[i][j] = Answer[i - 1][j] + Answer[i][j - 1]

Слайд 9





Данную задачу можно решить также с помощью комбинаторики:
Данную задачу можно решить также с помощью комбинаторики:
Описание слайда:
Данную задачу можно решить также с помощью комбинаторики: Данную задачу можно решить также с помощью комбинаторики:

Слайд 10





Б) Пусть в каждой клетке поля записано некоторое число. Требуется найти максимальную сумму чисел, которую можно набрать по пути в правый нижний угол.
Б) Пусть в каждой клетке поля записано некоторое число. Требуется найти максимальную сумму чисел, которую можно набрать по пути в правый нижний угол.
Описание слайда:
Б) Пусть в каждой клетке поля записано некоторое число. Требуется найти максимальную сумму чисел, которую можно набрать по пути в правый нижний угол. Б) Пусть в каждой клетке поля записано некоторое число. Требуется найти максимальную сумму чисел, которую можно набрать по пути в правый нижний угол.

Слайд 11





Пусть А[i][j] – число в (i,j) клетке, а dp[i][j] ответ для неё.
Пусть А[i][j] – число в (i,j) клетке, а dp[i][j] ответ для неё.
dp[1][1] = A[1][1];
dp[1][j] = , 
      dp[i][1]=
3)  dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + A[i][j];
Описание слайда:
Пусть А[i][j] – число в (i,j) клетке, а dp[i][j] ответ для неё. Пусть А[i][j] – число в (i,j) клетке, а dp[i][j] ответ для неё. dp[1][1] = A[1][1]; dp[1][j] = , dp[i][1]= 3) dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + A[i][j];

Слайд 12





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

Слайд 13





Последовательность из нулей и единиц без двух единиц подряд.
Дано число N. Рассмотрим все  последовательностей из нулей и единиц. Назовём последовательность хорошей, если в ней нигде не встречается две единицы подряд. Требуется посчитать общее количество хороших последовательностей.
Описание слайда:
Последовательность из нулей и единиц без двух единиц подряд. Дано число N. Рассмотрим все последовательностей из нулей и единиц. Назовём последовательность хорошей, если в ней нигде не встречается две единицы подряд. Требуется посчитать общее количество хороших последовательностей.

Слайд 14





dp[i][j] – ответ для последовательности длины i, оканчивающейся на j
dp[i][j] – ответ для последовательности длины i, оканчивающейся на 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];
А можно заметить, что это числа Фибоначчи 
Описание слайда:
dp[i][j] – ответ для последовательности длины i, оканчивающейся на j dp[i][j] – ответ для последовательности длины i, оканчивающейся на 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) Что мы вычисляем?
2) Какие у нас состояния?
3) Каковы значения в начальных состояниях?
4) Какие переходы между состояниями?
5) Каков порядок пересчёта?
6) Где хранится ответ на задачу?
Описание слайда:
Чтобы успешно решить задачу динамикой нужно ответить на следующие вопросы: Чтобы успешно решить задачу динамикой нужно ответить на следующие вопросы: 1) Что мы вычисляем? 2) Какие у нас состояния? 3) Каковы значения в начальных состояниях? 4) Какие переходы между состояниями? 5) Каков порядок пересчёта? 6) Где хранится ответ на задачу?

Слайд 17





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

Слайд 18





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

Слайд 19





3) Ленивая динамика
3) Ленивая динамика
Рекурсивная функция пересчёта динамики. Это что-то вроде поиска в глубину по ацикличному графу состояний, где рёбра – это зависимости между ними.
Описание слайда:
3) Ленивая динамика 3) Ленивая динамика Рекурсивная функция пересчёта динамики. Это что-то вроде поиска в глубину по ацикличному графу состояний, где рёбра – это зависимости между ними.

Слайд 20





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

Слайд 21





Виды задач на ДП
Линейное ДП
Многомерное ДП
ДП на подотрезках
ДП по полной сумме
ДП на ациклических графах
ДП на деревьях
Игры(ретро-анализ)
ДП на подмножествах.
ДП по профилю
 Динамика по изломанному профилю
Описание слайда:
Виды задач на ДП Линейное ДП Многомерное ДП ДП на подотрезках ДП по полной сумме ДП на ациклических графах ДП на деревьях Игры(ретро-анализ) ДП на подмножествах. ДП по профилю Динамика по изломанному профилю

Слайд 22





Отдельно рассмотрим  семейство задач о рюкзаке
Классическая постановка задачи:
Есть N предметов, обладающих весом  и стоимостью . В рюкзак влезают предметы, суммарный вес которых не превосходит W. Какую максимальную ценность может иметь рюкзак?
Описание слайда:
Отдельно рассмотрим семейство задач о рюкзаке Классическая постановка задачи: Есть N предметов, обладающих весом и стоимостью . В рюкзак влезают предметы, суммарный вес которых не превосходит W. Какую максимальную ценность может иметь рюкзак?

Слайд 23





Перебирать все подмножества набора из N предметов. Сложность такого решения O(). 
Перебирать все подмножества набора из N предметов. Сложность такого решения O(). 
Метод динамического программирования. Сложность – O().
Описание слайда:
Перебирать все подмножества набора из N предметов. Сложность такого решения O(). Перебирать все подмножества набора из N предметов. Сложность такого решения O(). Метод динамического программирования. Сложность – O().

Слайд 24





Решение методом динамического программирования
Пусть 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];
Описание слайда:
Решение методом динамического программирования Пусть 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, p1 = 1
w2 = 4, p2 = 6
w3 = 5, p3 = 4
w4 = 8, p4 = 7
w5 = 9, p5 = 6
Описание слайда:
Пример W = 13, N = 5 w1 = 3, p1 = 1 w2 = 4, p2 = 6 w3 = 5, p3 = 4 w4 = 8, p4 = 7 w5 = 9, p5 = 6

Слайд 26





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

Слайд 27





Решение методом ДП
Пусть dp[i][j] – максимальная стоимость любого возможного числа предметов типов от 1 до i, суммарным весом до j.
dp[0][j] = dp[i][0] = 0;
dp[i][j] = max(dp[i-1][j], dp[i-1][j-l*wi]+l*pi), где l  
Ответ: dp[N][W]
Сложность: O()
Описание слайда:
Решение методом ДП Пусть dp[i][j] – максимальная стоимость любого возможного числа предметов типов от 1 до i, суммарным весом до j. dp[0][j] = dp[i][0] = 0; dp[i][j] = max(dp[i-1][j], dp[i-1][j-l*wi]+l*pi), где l Ответ: dp[N][W] Сложность: O()

Слайд 28





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

Слайд 29





Пусть dp[i][j] – есть максимальная стоимость предметов , которое можно уложить в рюкзак вместимости j, если мы используем только первые i предметов.
Пусть 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];
Описание слайда:
Пусть dp[i][j] – есть максимальная стоимость предметов , которое можно уложить в рюкзак вместимости j, если мы используем только первые i предметов. Пусть 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





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

Слайд 31





Мультипликативный рюкзак – есть N предметов и M рюкзаков (M ≤ N). У каждого рюкзака своя вместимость . Задача: выбрать M не пересекающихся множеств, назначить соответствие рюкзакам так, чтобы суммарная стоимость была максимальна, а вес предметов в каждом рюкзаке не превышал его вместимость. 
Мультипликативный рюкзак – есть N предметов и M рюкзаков (M ≤ N). У каждого рюкзака своя вместимость . Задача: выбрать M не пересекающихся множеств, назначить соответствие рюкзакам так, чтобы суммарная стоимость была максимальна, а вес предметов в каждом рюкзаке не превышал его вместимость. 
Пример: У транспортной компании есть парк машин разной грузоподъемности. Нужно перевезти товара на максимальную сумму с одного склада на другой единовременно. 
Варианты решения:
Перебор
Описание слайда:
Мультипликативный рюкзак – есть N предметов и M рюкзаков (M ≤ N). У каждого рюкзака своя вместимость . Задача: выбрать M не пересекающихся множеств, назначить соответствие рюкзакам так, чтобы суммарная стоимость была максимальна, а вес предметов в каждом рюкзаке не превышал его вместимость. Мультипликативный рюкзак – есть N предметов и M рюкзаков (M ≤ N). У каждого рюкзака своя вместимость . Задача: выбрать M не пересекающихся множеств, назначить соответствие рюкзакам так, чтобы суммарная стоимость была максимальна, а вес предметов в каждом рюкзаке не превышал его вместимость. Пример: У транспортной компании есть парк машин разной грузоподъемности. Нужно перевезти товара на максимальную сумму с одного склада на другой единовременно. Варианты решения: Перебор

Слайд 32





Полезные ссылки
goo.gl/Ip0tXp – Подробная лекция о динамическом программировании
goo.gl/ehm0lw – Задача о рюкзаке
Описание слайда:
Полезные ссылки goo.gl/Ip0tXp – Подробная лекция о динамическом программировании goo.gl/ehm0lw – Задача о рюкзаке



Похожие презентации
Mypresentation.ru
Загрузить презентацию