OnLisp の P.303 に幅優先探索の疑似コードがありますので、以下に示します。以下のグラフでは、最初にノード 1 を処理し、次にノード 2、3、および 4 をキューに入れ、繰り返し自分自身を再度呼び出します。次に、キューの先頭にあるノード 4 に進みます。これにより、ノード 7 と 8 がキューの先頭に配置されます。
最後に、それが通過したパスは、深さ優先検索である 1->4->7-11->12->8->3->2->5->9->10->6 になります。私はここで間違っていますか?
(define (path node1 node2)
(bf-path node2 (list (list node1))))
(define (bf-path dest queue)
(if (null? queue)
'@
(let* ((path (car queue))
(node (car path)))
(if (eq? node dest)
(cdr (reverse path))
(bf-path dest
(append (cdr queue)
(map (lambda (n)
(cons n path))
(neighbors node))))))))