Очевидно, мой учитель считает, что даже если у нас нет времени на то, чтобы учить что-либо (и не хватает примеров), мы должны двигаться дальше, поэтому мне теперь нужно знать, как сделать алгоритмы Флойда-Варшалла и Варшалла в надежном виде.
Как и в случае с прологом, моя задача - сгенерировать матрицу смежности из графа, в этом случае это будет список списков, например ::10000
((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
)
Любая помощь очень ценится.
Кроме того, и не по теме: если бы я мог решить свой собственный вопрос, должен ли я ответить себе ради ответа на вопрос?