f p =g p h p

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  があるとき、
h2  p  を用いる A*アルゴリズムによって展開されるノードは、 h1  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 