240 likes | 458 Views
人工 知能 知識を用いる 探索法 Heuristic Search). L ecture 5 田中 美栄子. ヒューリスティック探索. ヒューリスティック と いう概念を知る. Heuristic :発見に役立つモノ(定義曖昧). 1957 Newell, Shaw, Simon の 定義 「 ある与えられた問題を解くかも知れないが、その可能性が保証されていないプロセス 」( つまり保証付きでない 方策) 1961 : 問題解決の動作効率を改良するヒント Herbert A. Simon “ Science of Artificial ”
E N D
人工知能知識を用いる探索法HeuristicSearch) Lecture 5 田中 美栄子
ヒューリスティック探索 ヒューリスティック という概念を知る
Heuristic:発見に役立つモノ(定義曖昧) • 1957 Newell, Shaw, Simonの定義 「ある与えられた問題を解くかも知れないが、その可能性が保証されていないプロセス」(つまり保証付きでない方策) • 1961: 問題解決の動作効率を改良するヒント HerbertA. Simon “Science of Artificial” (人工物の科学→ 邦訳は 「システムの科学」)
Heuristic:発見に役立つ知恵(定義曖昧) 1963FeigenbaumとFeldmanによる定義: 「ruleof thum のことである」 親指で1インチを測る程度の大雑把で、巨大な探索空間を大幅に制限する為の戦略、仕掛け、単純化、等の方法 解を保証しないが、多くの場合に良い解を提供する 後になってそれが,最適解だった,と判ることもある
これまでは知識を用いない探索(blind search)であった・・・ 対象とする事柄に対し 多少とも知識を持っている場合 ヒューリスティック・サーチが可能 ※(ヒューリスティック・サーチ:発見法的な探索)
探索の基本アルゴリズム Search algorithm{ • 初期節点をopenリストに入れる • LOOP:if(open==empty)break; (探索失敗) • n=first(open); • if(goal(n))print(n);break; (探索終了) • remove(n,open); • 次に調べる節点をopenに入れる(順序) • ステップ2にもどる}
Heuristicの例(1) 各点に ゴールまでの推定コストを 仮定する
ヒューリスティック探索(1) 最良優先探索:best-first search 各節点からゴールまでのコスト(距離)が 予想できるとき 全コストは の正確な値が分からない時 予測値で代用
ヒューリスティック探索(1) 最良優先探索:best-first search ステップ6で予測値の昇順に並べる 次の例参照:出口までの x距離とy距離の和とする: →駄目かもしれない
問題点 ヒューリスティック関数の 推定が間違っていれば失敗
Heuristic:ヒントを多用して解を発見 例:迷路問題 ヒューリスティック関数 h’(n) = n→G間の距離の推定値 h’(n)=|nx-Gx|+|ny - Gy| 使えそうな知識
これまでは知識を用いない探索(blind search)であった、、 • 対象とする事柄に対し多少とも知識を持っている場合、ヒューリスティック・サーチが可能 (Heuristic search:発見法的な探索) • こういうときはこうするのがよい、という選択ができる、但し100%信頼は出来ない(うまく行くことが多い、または過去にうまく行ったことがある)
h = 点nから目標地Gまでの推測コスト S(1,1)からG(4,4)へ
h=|nのx座標-Gのx座標|+|nのy座標-Gのy座標| S(1,1)からG(4,4)へ
A*-アルゴリズム A*-search algorithm{ • 初期節点をopenリストに入れる • LOOP:if(open==empty)break; (探索失敗) • n=first(open); • if(goal(n))print(n);break; (探索終了) • remove(n,open); • 次に調べる節点をopenに入れる(nを展開し、全ての子節点をopenに入れ、推定コストの昇順に並べる)。さらにからへポインタを付ける。 • ステップ2にもどる}
A*-アルゴリズムとA-アルゴリズム 推定コスト 推定値 A*の条件 この条件が成立しなければA-searchとなる。 A-searchならば解は保証されない はの推定値だが 出発点からまでの、解っているコストの内で最小のもの
A*-アルゴリズム 探索例 S : 初期節点 G : 目標節点
A*-アルゴリズム 探索例 OPENリスト S(6)
A*-アルゴリズム 探索例 OPENリスト S(6) a(6) 3+3
A*-アルゴリズム 探索例 OPENリスト S(6) a(6) b(6) , c(8) 3+1+2 3+1+4
A*-アルゴリズム 探索例 OPENリスト S(6) a(6) b(6) , c(8) e(6) , d(8) , c(8) 3+1+1+1 3+1+1+3
A*-アルゴリズム 探索例 OPENリスト S(6) a(6) b(6) , c(8) e(6) , d(8) , c(8) G(6) , d(8) , c(8) 3+1+1+1
A*-アルゴリズム 探索例 OPENリスト S(6) a(6) b(6) , c(8) e(6) , d(8) , c(8) G(6) , d(8) , c(8) 探索順番 S→a→b→e→G