f p = g p h p 8パズルでの h p はゴールと異なる位置にあるタイルの数とする。 [性質1]すべてのノード(p とする)でゴールまでの推定値 h p が真のコスト h(p)以下、すなわ ち h p ≤h p (admissible condition 適格性条件)ならば、A*アルゴリズムは常に最適経路 (最小コスト経路)を見出す。 [証明]スタートノード(s)からゴールノード(g)に至る最適経路上のノードを < s, P 1, P 2, … , P i ,… P k ゴール >とする。< s, P 1, P 2, … , P i >まで展開されたとすると、 次の P i 1 も必ず展開されることを示す。 ノード q を g(q)>g( P k 最適経路経由のゴールノード)である最適でない経路経由のゴールノード とすると f P i 1 = g P i 1 h P i 1 ≤ g P i 1 h P i 1 = g(最適経路のゴールノード)<g(q) したがって、 P i 1 が展開されるより前に q に至り、探索が終了することは無い。 [性質2] h 1 p ≤h 2 p ≤h p なるゴールまでのコストの推定値 h 1 p と h 2 p があるとき、 h2 p を用いる A*アルゴリズムによって展開されるノードは、 h1 p を用いる A*のアルゴリズ ムによっても必ず展開される。 ( h 2 p を用いる方が展開ノード数は少なく、効率が良い)[証明略] 8パズルの場合 ゴールノードと離れているマンハッタン距離(水平垂直方向距離の和)を用いる A*アルゴリズム h p :ヒューリスティック関数(heuristic function)(探索効率を向上させる情報を表す) 2.6 分岐限定法(branch-and-bound method)B&B 組み合わせ最適化問題の効率的探索法、OR(operation research)分野 目的関数 : f x 最小 ( または最大 ) {¿ 制約条件 : x ∈ D ( 離散領域 )} x :実行可能解(feasible) このような { 列挙法(enumeration method) 実行可能解を列挙→f(x)が最小の最適解 組み合わせ的爆発 B&B: 1つの実行可能解を求め、それを暫定解とし、その目的関数値を暫定値とする。D の部分領域 A における f(x)の下界値:f(A) これが残低地以上ならば探索枝をかる(prunning) アルゴリズム 1)[初期化]:R←{D},Z(暫定解の目的関数値)←∞ 2)[探索]:R=Φ なら終了(Z が最小値、Z=∞なら実行可能解なし) otherwise R から部分領域の1つを選び、A とする。R←R-{A} x x が求まり、 f x z なら z f 3)[テストと枝刈り]:A の実行可能解 A の下界値を f A を求め、 f A ≥z なら2 ) へ f A z なら4 ) へ 4)[分枝]:A を展開して継続ノード R 1, R 2, … , R k を生成して、R に加える。 2)へ ステップ 2)で R の中から A の選び方 i)縦型探索(深さ優先探索)←通常はこれ ii)最良下界探索→ R の中で下界値 f A が最小のものを選んで、展開 最後にならないと(最適)解が得られず、途中で近似解が得られない R が大になる(効率は高い) A*アルゴリズム f p = g p h p のノードをpの下界値 f p とすれば、最良下界探索の分枝限定法 に等価。 2.7 反復深化(iterative deepening) 縦型探索: 深さ d の探索時のメモリ量 O(d) 探索の深さ限界の設定が難しい。 最初に見つかるゴールがもっとも浅いとは限らない。 横型探索: d 平均分枝数:b 探索のメモリ量 O b 指数的増大。 深さ優先反復深化(DFID, depth-first iterative deepening) 深さ限界を1ずつ増やし、縦型探索。メモリ量小、もっとも浅いゴールが最初に見つかる。 平均分枝:b 深さ d のゴールが見出されたとすると 深さ d-1 の b d −1 深さ d-2 の b d −2 個のノード:2回生成 個のノード: 3回生成 ・ ・ ・ 深さ優先反復深化による増加分 1 − x −2 倍 1 −1 / b −2 倍 b 1−1/ b −2 2 4 3 2.25 5 1.56 10 1.23 100 1.11 ・反復 A*(IDA*) 深さ限界を1つずつ増やし、深さ優先探索。メモリ量は縦型探索並 ↑ f p = g p h p
© Copyright 2024 Paperzz