1行定義
ブルートフォースとは、考えられるすべての候補や手順を、絞り込みの工夫をせずに1つずつ調べ尽くして答えを見つける方法のことです。
くわしく
ブルートフォースは、英語で「力ずく」という意味です。答えの候補を、賢い絞り込みをせずに片端から試していく方法を指します。日本語では「総当たり」「しらみつぶし」とも呼ばれます。
強み
すべての候補を漏れなく調べるので、候補の数が有限なら、解があれば必ず見つかります。最短の手順や最善の手のように、最もよい答えを確実に求めたいときにも使えます。手順が単純で、問題についての特別な知識がいらない点も利点です。幅優先探索や深さ優先探索で探索木を最後までたどるのも、この考え方にもとづいています。
弱点は組合せ爆発
調べる候補の数は、問題が大きくなると急激に増えます。1つの局面で選べる手がb通りで、d手先まで読むなら、手順の数はbのd乗です。手が30通りで10手先なら、約5.9×10の14乗通りになります。クロード・シャノンは1950年の論文で、チェスの初期局面から考えられる手順の数を10の120乗程度と見積もりました。このように候補が爆発的に増えて調べきれなくなる現象を、組合せ爆発と呼びます。
総当たりを避ける工夫
そこで、ゲームや探索の研究では、調べる範囲を減らす方法が考えられてきました。
- αβ法:Mini-Max法と同じ結果を保ったまま、結果に影響しない枝を刈り込みます。
- 評価関数:先読みを途中で打ち切り、局面のよしあしを数値で見積もります。
- モンテカルロ法:ランダムな試行を多数繰り返し、その結果から手のよしあしを推定します。
1997年にチェスの世界チャンピオンに勝ったIBMのディープブルーも、専用のハードウェアで膨大な局面を調べました。ただし、枝刈りや評価関数と組み合わせており、終局までのすべての手順を調べたわけではありません。
なお、情報セキュリティの分野では、パスワードを総当たりで試す攻撃をブルートフォース攻撃と呼びます。
覚え方
「確実だが、数が増えると終わらない」のがブルートフォースです。
G検定での出題
出題のされ方
すべての候補を調べるため有限の問題なら必ず解が見つかる一方、組合せ爆発で現実的な時間に終わらない点、αβ法やモンテカルロ法など探索を減らす工夫との違いが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| ブルートフォースこのページの用語 | 考えられるすべての候補や手順を、絞り込みの工夫をせずに1つずつ調べ尽くして答えを見つける方法 |
| モンテカルロ法 | 乱数を使った試行(シミュレーション)を多数くり返し、その結果の平均や割合から答えを近似的に求める方法 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
1997年にチェスの世界チャンピオンに勝ったディープブルーは、初期局面から終局までのすべての手順を調べ尽くして指し手を決めていた。
答えを見る
答え × 誤り
チェスの手順は10の120乗程度と見積もられ、調べ尽くせません。ディープブルーは膨大な局面を調べましたが、枝刈りと評価関数で探索を打ち切っていました。
-
1つの局面で選べる手が30通りあるゲームで、10手先まですべての手順を調べる場合、調べる手順の数は30×10=300通りである。
答えを見る
答え × 誤り
手順の数は掛け算で増え、30の10乗、約5.9×10の14乗通りになります。深さとともに指数関数的に増えるのが組合せ爆発です。
-
αβ法は、Mini-Max法と同じ手を選びながら、結果に影響しない枝の探索を省くため、すべての局面を調べるより計算量を減らせる。
答えを見る
答え ◯ 正しい
評価する必要のない枝を刈り込む(枝刈り)ことで、総当たりより少ない計算で同じ結論に達します。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目3 探索・推論)
- Claude E. Shannon, Programming a Computer for Playing Chess, Philosophical Magazine Series 7, 41(314), 256–275 (1950)
- Murray Campbell, A. Joseph Hoane Jr., Feng-hsiung Hsu, Deep Blue, Artificial Intelligence 134(1–2), 57–83 (2002)
- Stuart Russell, Peter Norvig, Artificial Intelligence: A Modern Approach, 3rd ed., Pearson (2010) (3.4 Uninformed Search Strategies / 5.3 Alpha-Beta Pruning)