contenttaichino.com永遠のネバーランドPythonでナップサック問題ナップサック問題とかメジャーなアルゴリズムすら綺麗さっぱり忘れてて困ります。リハビリにwikipediaを見ながらPythonで書いてみました。ナップサック問題はn個の商品(それぞれ重さwと価値v)がある時に、キャパシティC以内の制約条件の元で最良の組合せを見つけるというものです。時は123ナップサック問題と呼ばれていてアルゴリズムも違います。それぞれ書いてみたのが以下になります。7)割とすっきり書けました。実際は価値を示すパラメータが複数ある方が普通な気がするので、vが複数ある時にも対応して、クラス化してみました。メインルーチンも最適値だけではなく、どのような組合せかも、同時に返却するようにしてみました。vcols]))これで割と汎用的にナップサック問題を扱う事が出来るようになりました。使い方は以下の様な形になります。p2.calc(unbound=True)上記プログラムを走らせてみると、出力は以下のようになります。ベンチマークはまたの機会で。