Next: 9.5 最良優先探索法(best-first search)
Up: 9 見込み探索
Previous: 9.3 ヒューリスティック関数
現在の頂点から次の候補の頂点を展開した時に,
その展開したものの中でもっともゴールに近そうな
ものを次の探索コースと決める方法である.
(defun hill-climb
(graph start goal)
(hill-climb-aux graph start goal
(list (list start))))
(defun hill-climb-aux
(graph start goal path-queue)
(let ((path (first path-queue)))
(cond
((null path-queue) nil)
((node-equal goal (first path)) (reverse path))
(t (hill-climb-aux
graph start goal
(append
(sort
(new-paths path graph)
#'(lambda (p1 p2) (closerp p1 p2 goal)))
(rest path-queue)))))))
> (hill-climb *graph1* 's 'f)
(s a b e f)
> (path-length '(s a b e f))
19.9137144
> (hill-climb *graph1* 'f 's)
(f e d s)
> (path-length '(f e d s))
13.0735922
generated through LaTeX2HTML. M.Inaba 平成18年5月7日