分枝限定法とは?上限・下限を見積もってムダな枝を刈り

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

分枝限定法とは(全体像)

分枝限定法は、「いちばんよい答え」を確実に見つけるための探索のやり方。英語の頭文字からB&Bとも呼ばれる。

考え方の土台はバックトラック(候補を試して、ダメなら戻る)。これに「見積もり」を足したのが分枝限定法だ。

ポイントは、各枝について「この先どんなにがんばっても、この程度より良くはならない」という上限・下限を見積もること。すでに見つけた答えより良くなりようがないと分かれば、その枝は調べるだけムダなので、早めに刈ってしまう。これで探索量を減らしつつ、最適解を取りこぼさない。

身近な例が最安の旅行プラン探し。「この経路は途中までで、もう最安記録を超えてしまう」と分かれば、その先は調べない。これが分枝限定法のイメージだ。


詳しく:手順とバックトラックとの違いだけ覚えれば戦える

ここが記事の心臓部。分枝限定法は、次の流れで最適解を探す。

分枝限定法の流れ

ステップやること
分枝問題を部分問題に分けて、木のように枝分かれさせる
限定(見積もり)各枝の上限・下限を見積もる
枝刈り今の最良解より良くなりえない枝は切る
確定残った枝を調べ尽くして最適解を決める

いちばんの違いは、よく似たバックトラックとの関係。バックトラックは「解があるか・全部の解」を探すのに対し、分枝限定法は「いちばんよい解」を見積もりを使って確実に求める。

バックトラックとの違い

バックトラック分枝限定法
目的解の有無・全部の解最適解(いちばんよい解)
見積もり(上下限)使わない使って枝を刈る
代表問題数独・8クイーン巡回セールスマン・ナップサック

つまり、分枝限定法は「バックトラックに見積もりを足して、最適解を効率よく探す」手法。答えにくい難問(TSPやナップサックなど)でも、実用的な速さで最適解を出せるのが強みだ。ただし、最悪の場合は時間が大きくふくらむこともある、というわけだね。

わかりやすく言い換えると

要するに、分枝限定法は「見積もって、ムダな枝を刈る」探索だ。

分枝 … 問題を枝分かれさせて部分問題にする

限定 … 各枝の上限・下限を見積もる

枝刈り … 今より良くなりえない枝は切って、最適解だけ残す

バックトラックとの違いは「最適解を見積もりで確実に求める」点。ここを押さえると混ざらない。


試験のツボ

🔴 一番出る:上限・下限で枝を刈り最適解を保証

①各枝の上限・下限を見積もる

②今より良くなりえない枝は切る

🔴 次に出る:バックトラックとの違い

①バックトラックは解の有無・全部の解を探す

②分枝限定法は見積もりで最適解を求める

🟡 押さえると安定:応用と計算量

①巡回セールスマン・ナップサックに応用

②最悪では時間が大きくふくらむこともある


よくある間違い

「分枝限定法とバックトラックはまったく同じもの」→ ✗  分枝限定法は見積もり(上限・下限)を使う最適化の発展形。

「分枝限定法は最適解を保証しない」→ ✗  見積もりで枝を刈っても、最適解は取りこぼさない。

「分枝限定法はいつも一瞬で解ける」→ ✗  最悪では時間が大きくふくらむ。実用的には速いが万能ではない。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(分枝限定法の考え方)

📝 オリジナル問題 1 分枝限定法の考え方

分枝限定法の考え方に関する次の記述のうち、正しいものはどれか。

  1. 上限や下限はいっさい見積もらず、すべての枝を最後まで調べ尽くすだけの手法だ
  2. 各枝の上限・下限を見積もり、今より良くなりえない枝を刈って最適解を求めるものだ
  3. 最適解を求めることはできず、近い答えを一つ返すだけで終わってしまう手法とされる
  4. 枝分かれをいっさい使わず、はじめから答えだけを直接書き出せる手法のことである
オーエスペン
オーエスペン 解答・解説

解答は 2 だよ。

分枝限定法は各枝の上限・下限を見積もり、今より良くなりえない枝を刈って最適解を求めるんだ。ムダな枝を切るから速いんだよ。

選択肢1の「見積もらない」、選択肢3の「最適解を求められない」、選択肢4の「枝分かれを使わない」はどれも誤りだよ。

選択肢判定理由
1上限・下限を見積もる
2見積もりで枝を刈り最適解を求める
3最適解を保証する
4枝分かれを使う

オリジナル問題2(バックトラックとの違い)

📝 オリジナル問題 2 バックトラックとの違い

分枝限定法とバックトラックの違いに関する次の記述のうち、正しいものはどれか。

  1. バックトラックは解の有無や全部の解を、分枝限定法は見積もりで最適解を求める
  2. バックトラックは最適解、分枝限定法は解の有無を求めるという、逆の関係である
  3. どちらも上限・下限を必ず使う点で同じで、両者にはなんの違いも存在していない
  4. 分枝限定法は上限・下限をいっさい使わず、バックトラックだけが見積もりを使う
オーエスペン
オーエスペン 解答・解説

解答は 1 だよ。

バックトラックは解の有無や全部の解を探し、分枝限定法は見積もり(上限・下限)で最適解を求めるんだ。見積もりを使うのが分枝限定法だよ。

選択肢2は目的が逆。選択肢3の「違いがない」、選択肢4の「分枝限定法は見積もりを使わない」はどちらも誤りだよ。

選択肢判定理由
1バックトラック=解探索・分枝限定=最適解
2目的が逆
3見積もりの有無で違う
4見積もりを使うのは分枝限定法

オリジナル問題3(応用と計算量)

📝 オリジナル問題 3 応用と計算量

分枝限定法の応用や計算量に関する次の記述のうち、正しいものはどれか。

  1. 分枝限定法はどんな問題でも必ず一瞬で解け、時間がふくらむことはありえない
  2. 分枝限定法は数独や8クイーンのような、解の有無を調べる問題だけに使われる
  3. 分枝限定法は巡回セールスマンやナップサックに応用でき、最悪は時間がふくらむ
  4. 分枝限定法は最適解を求められないので、実際の問題ではいっさい使われていない
オーエスペン
オーエスペン 解答・解説

解答は 3 だよ。

分枝限定法は巡回セールスマンやナップサックなどに応用できるんだ。実用的には速いけど、最悪では時間が大きくふくらむこともあるよ。

選択肢1の「必ず一瞬」、選択肢2の「数独・8クイーンだけ」、選択肢4の「使われていない」はどれも誤りだよ。

選択肢判定理由
1最悪では時間がふくらむ
2それはバックトラックの代表例
3TSP・ナップサックに応用
4最適解を求める実用解法

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る