Next: 5.4 状態表現の一般化
Up: 5.3 探索手続き
Previous: 5.3.1 迷路の探索
以下のようにパスを求めることが可能となる.
> (depth-first *blocks-graph*
'((a on b) (b on c) (c on table))
'((a on table) (b on c) (c on a)))
(((a on b) (b on c) (c on table))
((a on table) (b on c) (c on table))
((a on table) (b on table) (c on table))
((a on table) (b on table) (c on a))
((a on table) (b on c) (c on a)))
> (breadth-first *blocks-graph*
'((a on b) (b on c) (c on table))
'((a on table) (b on c) (c on a)))
(((a on b) (b on c) (c on table))
((a on table) (b on c) (c on table))
((a on table) (b on table) (c on table))
((a on table) (b on table) (c on a))
((a on table) (b on c) (c on a)))
状態としてリスト表現を与えるのではなく,
状態を表現したシンボル変数を与えても
結果は同じである.
(setq *s1*
'((a on table) (b on table) (c on table)))
(setq *s1a*
'((b on table) (a on table) (c on table)))
(setq *s2* '((a on table) (b on c) (c on table)))
(setq *s3* '((a on table) (b on a) (c on table)))
(setq *s4* '((a on c) (b on table) (c on table)))
(setq *s5* '((a on b) (b on table) (c on table)))
(setq *s6* '((a on table) (b on table) (c on b)))
(setq *s7* '((a on table) (b on table) (c on a)))
(setq *s8* '((a on b) (b on c) (c on table)))
(setq *s9* '((a on table) (b on a) (c on b)))
(setq *s10* '((a on c) (b on a) (c on table)))
(setq *s11* '((a on b) (b on table) (c on a)))
(setq *s12* '((a on c) (b on table) (c on b)))
(setq *s13* '((a on table) (b on c) (c on a)))
> (depth-first *blocks-graph* *s8* *s13*)
(((a on b) (b on c) (c on table))
((a on table) (b on c) (c on table))
((a on table) (b on table) (c on table))
((a on table) (b on table) (c on a))
((a on table) (b on c) (c on a)))
> (breadth-first *blocks-graph*
*s8* *s13*)
(((a on b) (b on c) (c on table))
((a on table) (b on c) (c on table))
((a on table) (b on table) (c on table))
((a on table) (b on table) (c on a))
((a on table) (b on c) (c on a)))
generated through LaTeX2HTML. M.Inaba 平成18年5月7日