Я застрял на этом вопросе в течение нескольких дней. По-видимому, мне нужно написать лучший алгоритм, чтобы выиграть алгоритм ниже. Ниже приведен код из известного файла Aima. Есть ли здесь какой-нибудь эксперт, который мог бы направить меня на то, как выиграть алгоритм?Реализовать более быстрый алгоритм
(defun find-closest (list)
(x (car (array-dimensions list)))
(y (cadr (array-dimensions list)))
(let ((elems (aref list x y)))
(dolist (e elems)
(when (eq (type-of e) type)
(return-from find-closest (list x y)))) nil))
Я попытался реализовать DFS, но потерпел неудачу, и я не совсем понимаю, почему. Ниже мой код.
(defun find-closest (list)
(let ((open (list list))
(closed (list))
(steps 0)
(expanded 0)
(stored 0))
(loop while open do
(let ((x (pop open)))
(when (finished? x)
(return (format nil "Found ~a in ~a steps.
Expanded ~a nodes, stored a maximum of ~a nodes." x steps expanded stored)))
(incf steps)
(pushnew x closed :test #'equal)
(let ((successors (successors x)))
(incf expanded (length successors))
(setq successors
(delete-if (lambda (a)
(or (find a open :test #'equal)
(find a closed :test #'equal)))
successors))
(setq open (append open successors))
(setq stored (max stored (length open))))))))
Не было бы это лучше в статье [Обзор кода SE] (http://codereview.stackexchange.com/)? – Sylwester
Что такое обзор кода SE. Извините, я все еще довольно новичок – Hero1134
@Sylwester это будет не по теме в Code Review, поскольку код, похоже, не работает корректно, так как в авторе ищет какой-то фелп для создания кода. См. [Руководство по обзору кода для пользователей переполнения стека] (http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users) – Phrancis