Problème 19-2 dans « Lisp » par les Etats Winston et Cor,Q à propos de problème 19-2 dans « Lisp » par Winston et Corne
A la recherche de profondeur d'abord, tous les chemins partiels la file d'attente à un point dans la recherche sont liés à l'un de l'autre d'une manière simple: chacun est l'extension d'un noeud du chemin partiel après l'avoir dans la file d'attente. La file d'attente peut, par exemple, regarder comme ceci:
((D C B A) (C B A) (B A) (A))
Cependant, je ne vois pas comment cela est le cas. Par exemple, je reçois la sortie comme ce qui suit:
(depth-first 's 'f)
queue: ((S))
(S)
queue: ((A S) (D S))
(S A)
queue: ((B A S) (D A S) (D S))
(S A B)
queue: ((C B A S) (E B A S) (D A S) (D S))
(S A B C)
queue: ((E B A S) (D A S) (D S))
(S A B E)
queue: ((D E B A S) (F E B A S) (D A S) (D S))
(S A B E D)
queue: ((F E B A S) (D A S) (D S))
(S A B E F)
où je mets une déclaration d'impression au début de la routine:
(defun depth-first (start finish &optional
(queue (list (list start))))
(format t "~%queue: ~a" queue)
(cond ((endp queue) nil)
((eq finish (first (first queue)))
(reverse (first queue)))
(t (depth-first
start
finish
(append (extend (first queue))
(rest queue))))))
Dans ce cas, aucun chemin d'accès partiel dans la file d'attente est la extension par un nœud du chemin partiel après celui-ci dans la file d'attente. S'agit-il d'une faute d'impression dans l'exercice ou y a-t-il une entrée que donne réellement à la file d'attente qu'il donne?