Задача о рюкзаке. Backpack problem презентация

Содержание

Вы грабитель.

Слайд 1Задача о рюкзаке Backpack problem


Слайд 2Вы грабитель.


Слайд 3Вы грабитель.

Нужно выбрать вещи, которые Вы унесёте…


Слайд 4Вы грабитель.

Нужно выбрать вещи, которые Вы унесёте…
40$
50$
60$
100$
200$
У всех вещей есть цены.

Суммарная стоимость украденного должна быть максимальной.

Слайд 5Вы грабитель.

Нужно выбрать вещи, которые Вы унесёте…
40$
50$
60$
100$
200$
У всех вещей есть цены.

Суммарная стоимость украденного должна быть максимальной.

Но у вещей есть ещё и вес!

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 6Вы грабитель.

Нужно выбрать вещи, которые Вы унесёте…
40$
50$
60$
100$
200$
У всех вещей есть цены.

Суммарная стоимость украденного должна быть максимальной.

Но у вещей есть ещё и вес!

3 кг

3 кг

5 кг

12 кг

18 кг

У рюкзака ограниченная вместимость

20


Слайд 740$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг
20
Max: 150$?




Слайд 840$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг
20
Max: 190$?




Слайд 940$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг
20
Max: 200$?


Слайд 1040$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг
20
Max: 210$!




Слайд 1140$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг
20
Max: 210$!




Слайд 12Формат ввода:
N M
m1 m2 … mn
c1

c2 … cn

N – количество вещей
M – вместимость рюкзака
mi – вес i-ой вещи
ci – стоимость i-ой вещи

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 13Формат ввода:
N M
m1 m2 … mn
c1

c2 … cn

N – количество вещей
M – вместимость рюкзака
mi – вес i-ой вещи
ci – стоимость i-ой вещи

Пример:
20
3 5 12 18
40 50 60 100 200

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 14Формат ввода:
N M
m1 m2 … mn
c1

c2 … cn

N – количество вещей
M – вместимость рюкзака
mi – вес i-ой вещи
ci – стоимость i-ой вещи

Формат вывода:
Одно число – максимальная стоимость кражи

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 15Подход 1.
Полный перебор
Сколько всего вариантов?
40$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг


Слайд 16Подход 1.
Полный перебор
Сколько всего вариантов?
Каждый предмет мы можем взять или не

взять…

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг

+

-

+

-

+

-

+

-

+

-


Слайд 17Подход 1.
Полный перебор
Всего 2n вариантов
40$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг
+
-
+
-
+
-
+
-
+
-


Слайд 18Подход 1.
Полный перебор
Даёт верный результат
Оооочень долго
(при n = 100 суперкомпьютер будет

вычислять несколько тысяч лет)

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг

+

-

+

-

+

-

+

-

+

-


Слайд 19Подход 2.
Брать самую дорогую вещь
Не всегда будет давать максимальный ответ
(уже в

нашем примере не работало)
Приведите пример из трёх вещей

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 20Подход 3.
Рассчитать плотность каждой вещи: сi/mi.
Брать вещи, в порядке убывания плотности,

пока влезают.

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 21Подход 3.
Рассчитать плотность каждой вещи: сi/mi.
Брать вещи, в порядке убывания плотности,

пока влезают.
Тоже не всегда будет давать правильный ответ. (приведите пример)

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 22Подходы 2-3.
Последние два алгоритма назывались жадными.
Для данной задачи они не подходят.
40$
50$
60$
100$
200$
3

кг

3 кг

5 кг

12 кг

18 кг


Слайд 23Подход 4.
Метод динамического программирования.
40$
50$
60$
100$
200$
3 кг
3 кг
5 кг
12 кг
18 кг


Слайд 24Подход 4.
Метод динамического программирования.

Заведём табличку (N + 1) x (M +

1)

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 25Подход 4.
Метод динамического программирования.

Заведём табличку P:(N + 1) x (M +

1)
Будем считать, что все вещи пронумерованы.

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 26В P[i][j] будем хранить максимальную сумму, которую можно заработать, выбирая среди

первых i вещей и имея рюкзак вместимостью j кг.

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг


Слайд 27В P[i][j] будем хранить максимальную сумму, которую можно заработать, выбирая среди

первых i вещей и имея рюкзак вместимостью j кг.

40$

50$

60$

100$

200$

3 кг

3 кг

5 кг

12 кг

18 кг

Что будет здесь?


Слайд 28В P[i][j] будем хранить максимальную сумму, которую можно заработать, выбирая среди

первых i вещей и имея рюкзак вместимостью j кг.

40$

50$

3 кг

3 кг

Выбираем среди первых двух вещей


Слайд 29В P[i][j] будем хранить максимальную сумму, которую можно заработать, выбирая среди

первых i вещей и имея рюкзак вместимостью j кг.

40$

50$

3 кг

3 кг

Выбираем среди первых двух вещей.
Рюкзак вместимостью 4 кг.


Слайд 30В P[i][j] будем хранить максимальную сумму, которую можно заработать, выбирая среди

первых i вещей и имея рюкзак вместимостью j кг.

40$

50$

3 кг

3 кг



Слайд 31Сначала заполним очевидное: нулевой столбец и нулевую строку.
Как?
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12

кг

Слайд 32Сначала заполним очевидное: нулевой столбец и нулевую строку.

40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12

кг

Слайд 33Сначала заполним очевидное: нулевой столбец и нулевую строку.
Будем заполнять оставшуюся часть

сверху-вниз, слева-направо.

40$

50$

3 кг

3 кг

60$

100$

200$

5 кг

12 кг


Слайд 34Сначала заполним очевидное: нулевой столбец и нулевую строку.
Будем заполнять оставшуюся часть

сверху-вниз, слева-направо, выражая каждый следующий ответ через предыдущие.

40$

50$

3 кг

3 кг

60$

100$

200$

5 кг

12 кг


Слайд 35Допустим, мы вычислили всё до i-ой строки и j-го столбца.

Сейчас вычисляем

P[i][j].

40$

50$

3 кг

3 кг

60$

100$

200$

5 кг

12 кг


Слайд 36Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i (последнюю)


Слайд 37Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i (последнюю)
Не брать

вещь №i

Слайд 38Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i (последнюю)
Не брать

вещь №i

Вычислим эти значения и выберем наибольшее


Слайд 39Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Только, если влезает. Что это значит?


Слайд 40Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Только, если влезает
wi ≤ j


Слайд 41Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Мы точно зарабатываем: ci


Слайд 42Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Плюс, у нас осталось еще свободное место…


Слайд 43Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Плюс, у нас осталось еще свободное место…
Сколько?



wi

j


Слайд 44Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

j - wi



wi

j


Слайд 45Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Как его оптимально заполнить?



wi

j


Слайд 46Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Таблица P знает ответ на этот вопрос!



wi

j


Слайд 47Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

В ячейке P[…][…] уже лежит лучшая сумма



wi

j


Слайд 48Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

В ячейке P[…][j-wi] уже лежит лучшая сумма



wi

j


Слайд 49Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

В ячейке P[i-1][j-wi] уже лежит лучшая сумма



wi

j


Слайд 50Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Итого:
ci + P[i-1][j-wi],
если влезет



wi

j


Слайд 51Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Итого:
ci + P[i-1][j-wi],
если влезет


Слайд 52Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Итого:
ci + P[i-1][j-wi],
если влезет

В ячейке P[…][…] уже есть ответ на эту задачу


Слайд 53Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Итого:
ci + P[i-1][j-wi],
если влезет

В ячейке P[i-1][…] уже есть ответ на эту задачу


Слайд 54Есть два варианта
40$
50$
3 кг
3 кг
60$
100$
200$
5 кг
12 кг
Взять вещь №i
Не брать вещь

№i

Итого:
ci + P[i-1][j-wi],
если влезет

В ячейке P[i-1][j] уже есть ответ на эту задачу


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

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

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

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


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

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