No.626
分枝限定法を使う.
まずは となる荷物は使えないので取り除く.
残りは が大きいものを入れていくのが効率が良さそうなので, の降順でソートしておく.
最初の荷物から順に入れる/入れないを判別していく.
関数 を考える. は入れる/入れないを仮定済みの荷物の状態, を未仮定の荷物の状態とする.
このときの の上界と下界を求める.
上界は線形緩和で求める. 線形緩和すれば貪欲法で求められるので, 計算量は である.
下界は貪欲法で求める.
暫定解をそれまでに求めた最良の解とすれば, 上界が暫定解より小さければ はこれ以上仮定しても無駄なので計算を打ち切る.
下界が暫定解より大きければ暫定解を下界で更新し, さらに仮定を進めて再帰する.