170 likes | 371 Views
アルゴリズムとデータ構造 補足資料 10-3 「ナップザック問題」. 横浜国立大学 理工 学部 数物・電子情報系学科 富井尚志. バックトラックアルゴリズム. とりあえずやってみる ダメ なら戻って別の道を探る あの とき別の道を選んでいたら 、、、 試行錯誤( trial and error ) 結局全部のケースをやってみる(完全解) その中で最適な解を選ぶ (最適解を覚えておく). ナップザック問題 ( Knapsack problem ). n 個の品物を旅行カバンの中に入れて旅行する.持って歩ける重量には制限がある
E N D
アルゴリズムとデータ構造補足資料10-3「ナップザック問題」アルゴリズムとデータ構造補足資料10-3「ナップザック問題」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志
バックトラックアルゴリズム • とりあえずやってみる • ダメなら戻って別の道を探る • あのとき別の道を選んでいたら、、、 • 試行錯誤(trial and error) • 結局全部のケースをやってみる(完全解) • その中で最適な解を選ぶ (最適解を覚えておく)
ナップザック問題(Knapsack problem) • n個の品物を旅行カバンの中に入れて旅行する.持って歩ける重量には制限がある • 個々の品物には,重さ と 価値(重要度) の情報が与えられている. • n個の品物からいくつか選択して,制限重量以下で価値の総和が最大になるようにする.
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値0点
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値10点 500g; あと一つ載せたらOUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値90点 500g; あと一つ載せたらOUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値90点 1,300g; OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値190点 320g; 1,300g; OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値190点 320g; 1,300g; OUT 720g;OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値190点 320g; 1,300g; OUT 720g;OUT 520g;OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値290点 320g; 330g; 1,300g; OUT 720g;OUT 520g;OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値390点 320g; 330g; 340g; 1,300g; OUT 720g;OUT 520g;OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値390点 320g; 330g; 340g; 1,300g; OUT 720g;OUT 520g;OUT 640g;OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値390点 解候補 現在の最大総価値390点 320g; 330g; 340g; 1,300g; OUT 720g;OUT 520g;OUT 640g;OUT
ナップザック問題(Knapsack problem) 重量制限が500gのとき 現在の最大総価値390点 1,300g; OUT
ナップザック問題(Knapsack problem) 1 1 1 1 1 1 1 1 1 1 ~ 0 0 0 0 0 0 0 0 0 0 最悪時: 上記の全とおりの組み合わせについて、総重量と総価値を計算して、 一番良いものを選ぶ。 O(2n)
バックトラックアルゴリズム • とりあえずやってみる • ダメなら戻って別の道を探る • あのとき別の道を選んでいたら、、、 • 試行錯誤(trial and error) • 結局全部のケースをやってみる(完全解) • その中で最適な解を選ぶ (最適解を覚えておく)