(defun new-nodes (path graph) (new-nodes-aux path (adjacency-list (first path) graph))) (defun new-nodes-aux (path nodes) (cond ((null nodes) nil) ((node-member (car nodes) path) (new-nodes-aux path (cdr nodes))) (t (cons (car nodes) (new-nodes-aux path (cdr nodes)))))) (defun new-paths (path graph) (mapcar #'(lambda (n) (cons n path)) (new-nodes path graph)))new-nodesはpathをもらってpathの先頭の頂点(現在探索中の頂点) の隣接点リストを取りだし,隣接点リストの各頂点のうちpathに すでに含まれているものを取り除く.つまり,すでに通って来た 道にある頂点を除いた点のみを返す. new-pathsは,pathをもらって,それを伸ばしてゆく新しいpathを 生成する.new-nodesを用いてそれにより増える頂点の数だけの 新しいpathのリストが返される.
> (new-nodes '(e d s) *graph1*) (b f) > (new-paths '(e d s) *graph1*) ((b e d s) (f e d s))