アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」
DESCRIPTION
アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」. 横浜国立大学 理工 学部 数物・電子情報系学科 富井尚志. バックトラックアルゴリズム. とりあえずやってみる ダメ なら戻って別の道を探る あの とき別の道を選んでいたら 、、、 試行錯誤( trial and error ) 結局全部のケースをやってみる(完全解) その中で最適な解を選ぶ (最適解を覚えておく). ナップザック問題 ( Knapsack problem ). n 個の品物を旅行カバンの中に入れて旅行する.持って歩ける重量には制限がある - PowerPoint PPT PresentationTRANSCRIPT
アルゴリズムとデータ構造補足資料 10-3「ナップザック問題」
横浜国立大学理工学部 数物・電子情報系学科富井尚志
バックトラックアルゴリズム• とりあえずやってみる• ダメなら戻って別の道を探る– あのとき別の道を選んでいたら、、、
• 試行錯誤( trial and error )– 結局全部のケースをやってみる(完全解)– その中で最適な解を選ぶ(最適解を覚えておく)
ナップザック問題( Knapsack problem )A) n 個の品物を旅行カバンの中に入れて旅行する.持って歩ける重量には制限があるB) 個々の品物には,重さ と 価値(重要度) の情報が与えられている. C) n 個の品物からいくつか選択して,制限重量以下で価値の総和が最大になるようにする.
ナップザック問題( 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 点
ナップザック問題( 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 点
ナップザック問題( 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 点
ナップザック問題( 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
ナップザック問題( 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
ナップザック問題( 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
ナップザック問題( 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
ナップザック問題( 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 ;
ナップザック問題( 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 ;
ナップザック問題( 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
ナップザック問題( 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 点
ナップザック問題( 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
ナップザック問題( 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)
バックトラックアルゴリズム• とりあえずやってみる• ダメなら戻って別の道を探る– あのとき別の道を選んでいたら、、、
• 試行錯誤( trial and error )– 結局全部のケースをやってみる(完全解)– その中で最適な解を選ぶ(最適解を覚えておく)