ナップザック問題を解決するための01アリコロニーアルゴリズム。
私はそれが完全に強引な方法だと思ったが、Baiduは、それは、このされるべきだと思います
(4)分岐限定 - プライオリティキュー(STL)
//#分枝限定法プライオリティキュー
//ノードタイプキュー
構造体のノードタイプ
{//ノードの分岐限定
int型ません何; //ノード番号
私はint型; //現在のノード探索空間の階層に
現在のノードの//総重量; W INT
int型V; //現在のノードの合計値
int型X [MAXN]; //現在のノードの解ベクトルを含んでいます
ダブルUB; //円に
ブール演算子<(constのノードタイプ・ノード)CONST
このように{//ソートプライオリティキュー
リターンUB <node.ub; // UB大きなチームから優先
}
}。
/ *トランク
* - >初期ルート
* - >計算チームへのルートとコミュニティ
* - >キューループスルーが空の状態である:ノードは、
計算は、上限左子供のを計算し、チームにされ満たすための条件を剪定子ノードを残しました。
右の上限チームに右の子の境界条件に沿って、子どもたちによって計算されます。
(境界条件に応じて右の子をカットし、子供を残し容量カットに応じて)
*
* /
空BFS();
//チームに----がチームに直接リーフノードではありません、更新が最適解である場合、そのノードは、葉よりよい解決策であるか否かを判断します
空エンキュー(ノードタイプE、PRIORITY_QUEUE <ノードタイプ>&QU);
//境界の残容量計算のサイズは、値のアイテムと装填部の値に残りのすべての項目に基づいて算出されます
//(容量の単位当たりの価値のレベルに応じて項目のいくつか---それは貪欲の考えに順序のビット'S)
空バウンド(ノードタイプ&E)。
//!#分枝限定法のプライオリティキュー
免責事項:この記事は元の記事CSDNブロガー「Dディアンワインダンス」で、CC 4.0 BY-SAの著作権契約書に従って、再現し、元のソースのリンクと、この文を添付してください。
オリジナルリンクします。https://blog.csdn.net/u010323330/article/details/80302227