> 1 <
Автор | Сообщение |
Day_moon
3 сообщений |
#1968 2010-05-06 16:29 GMT+3 часа(ов) |
Взял готовую программу, но видимо не я один такой "умный" и пришла рецензия:
Реценция Попытался переделать, но застрял... Вот что у меня получилось: (defun F (Graph &optional (Temp (cons (caar Graph) nil)) (Way nil)) Подскажите в чем ошибка в Find, или еще где... Осталось еще метку ребра добавить... отредактировал(а) Day_moon: 2010-05-06 17:45 GMT+3 часа(ов) |
|
Михаил
120 сообщений |
#1969 2010-05-06 16:43 GMT+3 часа(ов) |
Day_moon
3 сообщений |
#1970 2010-05-06 16:49 GMT+3 часа(ов) |
Я уже отправлял этот код... Мне теперь нужно что бы ребра задавались так: ((1 2)(1 3)(2 3)(2 4)(2 5)(3 4)(3 5)(4 5))
Скажите хотя бы как правильно передать в Find вершину и список ребер. |
|
VH
289 сообщений |
#1972 2010-05-06 17:19 GMT+3 часа(ов) |
Это из препода цитата «...Может (выделено мной - VH.) программа проходит по какому-нибудь из параллельных ребер дважды...»?
|
|
Day_moon
3 сообщений |
#1974 2010-05-06 17:45 GMT+3 часа(ов) |
Да это цитата
|
|
VH
289 сообщений |
#1975 2010-05-06 18:05 GMT+3 часа(ов) |
Фраза сия обнаруживает туповатость <данного> препода во всей ея красе.
Анализировать представленную функцию на предмет того, каким же образом она все-таки генерирует Эйлеров путь, препод <видимо> не способен. Можно ли чем иным объяснить <чисто научные> словечки "сомнения" и "может"? Особенно впечатляет выражение «...программа проходит...». Функция (F) никуда не «проходит», а выполняет <рекурсивно> преобразование данных <в виде списков> (являющихся ее аргументами) и возвращает результат этих преобразований. В процессе обработки данных <в том числе> функция (F) посредством вызова функции (REMOVE_FIRST) последовательно исключает из элементов представляющего граф списка пару вершин, ребро между которыми «рассмотрено» и включено в Эйлеров путь, в чем легко можно удостовериться, применив трассировку вызовов функции (F) с помощью функции (trace). Предоставлю <для убедительности> часть протокола трассировки (полужирным шрифтом выделяются исключаемые к следующему уровню рекурсии пары вершин): (F '((1 2 2 6)(2 1 1 3 5 6)(3 2 4 5 6)(4 3 5)(5 2 3 4 6)(6 1 2 3 5))) Entering: F, Argument list: (((1 2 2 6) (2 1 1 3 5 6) (3 2 4 5 6) (4 3 5) (5 2 3 4 6) (6 1 2 3 5))) Entering: F, Argument list: (((1 2 6) (2 1 3 5 6) (3 2 4 5 6) (4 3 5) (5 2 3 4 6) (6 1 2 3 5)) (2 1) NIL) Entering: F, Argument list: (((1 6) (2 3 5 6) (3 2 4 5 6) (4 3 5) (5 2 3 4 6) (6 1 2 3 5)) (1 2 1) NIL) Entering: F, Argument list: (((1) (2 3 5 6) (3 2 4 5 6) (4 3 5) (5 2 3 4 6) (6 2 3 5)) (6 1 2 1) NIL) и так далее... К слову, описание графа вовсе не представляет собой совокупность «обозначение ребра как список из двух вершин». отредактировал(а) VH: 2010-05-06 18:10 GMT+3 часа(ов) |
|
Hoya
2 сообщений |
#7777 2017-05-17 13:03 GMT+3 часа(ов) |
Доброго времени суток! можно как то код этот под чистый лисп переписать?
|
|
> 1 <