アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

17
アアアアアアアアアアアア アアアア 10-3 アアアアアアアアア 「」 アアアアアア アアアア アア アアアアアアア アアアア

Upload: lev

Post on 22-Feb-2016

88 views

Category:

Documents


0 download

DESCRIPTION

アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」. 横浜国立大学 理工 学部 数物・電子情報系学科 富井尚志. バックトラックアルゴリズム. とりあえずやってみる ダメ なら戻って別の道を探る あの とき別の道を選んでいたら 、、、 試行錯誤( trial and error ) 結局全部のケースをやってみる(完全解) その中で最適な解を選ぶ (最適解を覚えておく). ナップザック問題 ( Knapsack problem ). n 個の品物を旅行カバンの中に入れて旅行する.持って歩ける重量には制限がある - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

アルゴリズムとデータ構造補足資料 10-3「ナップザック問題」

横浜国立大学理工学部 数物・電子情報系学科富井尚志

Page 2: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

バックトラックアルゴリズム• とりあえずやってみる• ダメなら戻って別の道を探る– あのとき別の道を選んでいたら、、、

• 試行錯誤( trial and error )– 結局全部のケースをやってみる(完全解)– その中で最適な解を選ぶ(最適解を覚えておく)

Page 3: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )A) n 個の品物を旅行カバンの中に入れて旅行する.持って歩ける重量には制限があるB) 個々の品物には,重さ と 価値(重要度) の情報が与えられている. C) n 個の品物からいくつか選択して,制限重量以下で価値の総和が最大になるようにする.

Page 4: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

重量制限が 500g のとき 現在の最大総価値 0 点

Page 5: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )

本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

500g ; あと一つ載せたら OUT

重量制限が 500g のとき 現在の最大総価値 10 点

Page 6: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

500g ; あと一つ載せたら OUT

重量制限が 500g のとき 現在の最大総価値 90 点

Page 7: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

重量制限が 500g のとき 現在の最大総価値 90 点

1,300g ; OUT

Page 8: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 190 点

1,300g ; OUT

Page 9: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 190 点

1,300g ; OUT

720g ; OUT

Page 10: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 190 点

1,300g ; OUT

720g ; OUT 520g ; OUT

Page 11: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 290 点

1,300g ; OUT

720g ; OUT 520g ; OUT

330g ;

Page 12: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 390 点

1,300g ; OUT

720g ; OUT 520g ; OUT

330g ;340g ;

Page 13: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 390 点

1,300g ; OUT

720g ; OUT 520g ; OUT

330g ;340g ;

640g ; OUT

Page 14: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

320g ;

重量制限が 500g のとき 現在の最大総価値 390 点

1,300g ; OUT

720g ; OUT 520g ; OUT

330g ;340g ;

640g ; OUT

解候補現在の最大総価値 390 点

Page 15: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300gジャケッ

ト30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

重量制限が 500g のとき 現在の最大総価値 390 点

1,300g ; OUT

Page 16: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

ナップザック問題( Knapsack problem )本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

1 1 1 1 1 1 1 1 1 1

~本10 点500g

傘90 点500g

下着90 点300g

ジャケット30 点1,000g

MDプレーヤ20 点400g

薬100 点20g

地図70 点200g

宿チケット100 点10g

航空券100 点10g

洗面用具50 点300g

0 0 0 0 0 0 0 0 0 0

最悪時: 上記の全とおりの組み合わせについて、総重量と総価値を計算して、      一番良いものを選ぶ。 O(2n)

Page 17: アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」

バックトラックアルゴリズム• とりあえずやってみる• ダメなら戻って別の道を探る– あのとき別の道を選んでいたら、、、

• 試行錯誤( trial and error )– 結局全部のケースをやってみる(完全解)– その中で最適な解を選ぶ(最適解を覚えておく)