Очевидно, мой учитель считает, что даже если у нас нет времени на изучение материала (и недостаточно примеров), мы должны двигаться дальше, поэтому теперь мне нужно знать, как сделать алгоритмы Флойда-Уоршалла и Уоршалла в clisp.
Как и в случае с прологом, моя проблема состоит в том, чтобы сгенерировать матрицу смежности из графа, в данном случае это будет список списков, например:
((A B) (A C) (A D) (B C) (C D))
Это должно сгенерировать:
((0 1 1 1) (1 0 1 9) (1 1 0 1) (1 9 1 0))
У меня есть это:
(defun floyd(graph)
(setf l (length graph))
(setf mat (matrix l graph))
)
(defun matrix(l graph)
(setf matrix (make-array (list l l)))
(dotimes (i l)
(dotimes (j l)
(if (= i j)
(setf (aref matrix i j) 0)
(setf (aref matrix i j) ???)
)
)
)
matrix
)
Любая помощь приветствуется.
Кроме того, и немного не по теме: если бы я мог решить свой собственный вопрос, должен ли я ответить себе, чтобы получить ответ на вопрос?
let
вместоsetf
дляl
,mat
иmatrix
. - person Terje Norderhaug   schedule 25.05.2011(A B C D)
. - person Terje Norderhaug   schedule 25.05.2011SETF
. - person Terje Norderhaug   schedule 25.05.2011