代码之家  ›  专栏  ›  技术社区  ›  Paul Reiners

问:关于温斯顿和霍恩的“Lisp”中的问题19-2

  •  1
  • Paul Reiners  · 技术社区  · 15 年前

    温斯顿和霍恩在“Lisp”中的问题19-2,

    深度优先搜索,所有 给定队列中的部分路径 搜索中的点与 以一种简单的方式相互交流:每一个都是 一个节点的扩展 队列中它后面的部分路径。 例如,队列可能会 这样地: ((D C B A) (C B A) (B A) (A))

    不过,我不知道情况如何。例如,我得到输出 如下所示:

    (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) 
    

    我在程序的开头放了一个打印语句:

    (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)))))) 
    

    在这种情况下,队列中的任何部分路径都不是1的扩展名 队列中部分路径后面的节点。 这是练习中的印刷错误还是有输入错误? 真的给他排队吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Paul Reiners    15 年前

    answer 帕斯卡·布吉尼翁。