|
2 / 1 / 0
Регистрация: 17.02.2013
Сообщений: 82
|
|
Дана схема метрополитена, найти кратчайший путь между станциями31.03.2013, 22:49. Показов 7130. Ответов 25
Метки нет (Все метки)
Всем привет!
Дана схема метрополитена, найти кратчайший путь между станциями. Схема метрополитена задаётся с помощью матрицы смежности или матрицы инциденций. Каждому перегону соответствует некоторый вес (длительность перегона). Каждой пересадке также соответствует некоторый вес (длительность пересадки). Необходимо для заданной преподавателем схемы вывести самый короткий путь или все такие пути, если их несколько.
0
|
|
| 31.03.2013, 22:49 | |
|
Ответы с готовыми решениями:
25
Найти кратчайший путь между точками графа Найти кратчайший путь между двумя заданными пунктами Найти кратчайший путь между двумя заданными городами |
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 01.04.2013, 02:14 | |
|
Наверно, надо каждый узел разодрать на два, чтобы пересадка тоже изображалась ребром. И реализовать алгоритм Дейкстры. Или погуглить...
2
|
|
|
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 19
|
|
| 28.04.2014, 14:56 | |
|
Случайно, ни у кого нет готового решения?
0
|
|
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|
| 28.04.2014, 15:33 | |
|
Bertolotto, есть, но не дам =)
1
|
|
|
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 19
|
|
| 28.04.2014, 15:37 | |
|
transformator.t, очень-очень жаль.=(
0
|
|
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|
| 28.04.2014, 15:52 | |
|
мой код вам не подойдёт.
0
|
|
|
431 / 259 / 23
Регистрация: 23.11.2010
Сообщений: 278
|
|||||||||||||||||||||
| 28.04.2014, 19:47 | |||||||||||||||||||||
Вызов функции (F) возвращает список, элементами которого являются маршруты (списки обозначений станций) с минимальным числом промежуточных станций от начальной до конечной станции. Например, для сети, представленной списком
2
|
|||||||||||||||||||||
|
Супер-модератор
|
||||||
| 28.04.2014, 21:12 | ||||||
|
А ведь для графа c одинаковыми длинами ребер кратчайший путь из A в B может быть получен просто обходом в ширину из вершины A...
Добавлено через 38 минут Вот поиск кратчайшего пути для графа с равными ребрами:
2
|
||||||
|
431 / 259 / 23
Регистрация: 23.11.2010
Сообщений: 278
|
|
| 28.04.2014, 21:55 | |
|
Уважаемая(ый) Bertolotto, можно в поисковой системе задать в качестве строки для поиска
"(defun F (Net Init Term &optional (Route_list (list (list Init))))" и легко обнаружить тот вполне приличный ресурс, на котором сохранилось данное обсуждение с дальнейшими переработками текста (кроме скопипасченного впопыхах сюда).
0
|
|
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
| 01.05.2014, 02:09 | |
|
0
|
|
|
431 / 259 / 23
Регистрация: 23.11.2010
Сообщений: 278
|
||||||||||||||||
| 01.05.2014, 12:16 | ||||||||||||||||
Сообщение было отмечено Catstail как решение
Решение
На том же вполне приличном ресурсе обнаружился такой текст:
((узел (связанный_узел . длина_дуги)...)...) Например, сеть (setq Net '((1 (2 . 4)(3 . 7)) (2 (1 . 4)(3 . 3)(6 . 1)) (3 (1 . 7)(2 . 3)(4 . 2)(5 . 5)) (4 (3 . 2)(5 . 1)(6 . 7)) (5 (3 . 5)(4 . 1)(6 . 3)) (6 (2 . 1)(4 . 7)(5 . 3))))
3
|
||||||||||||||||
|
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
|
|||||||||||
| 03.05.2014, 16:48 | |||||||||||
|
Хорошо когда все необходимые данные уже добыты, и сформирована надлежащая структура.
Но как составить данные? Представим себе схему токийского метрополитена. Моло того что нужно выписать все станции, так еще и найти расстояния между ними. Для решения подобной задачи предлагаю графический способ. Можно взять любую карту, закинуть ее картинкой в AutoCad, отмасштабировать. Затем обрисовать все станции кружочками и соединить линиями. Тоже рутина, но это всего лишь идея. Условные обозначения: ребра - линии, станции - окружности [необязательный элемент], вершины - названия станций [однострочный текст]. Для примера я взял картинку из сети, диамант, рисунок №1. Загрузил, обозначил углы вершинами. Получилась схема, рисунок №2. Названия следует вписывать таким образом, чтобы точка вставки была прямо в центре окружности, рисунок №3. Есть три пути из левого угла по горизонтали в правый. То есть: 1-one -> 7-seven. Следует найти самый короткий по длине. Визуально видно что это средний путь по прямой. Все что нужно для эксперимента, это достать данные об названиях пунктов и расстояния между ними. Доверим это дело машине. Это будет делаться в два этапа. Сначала будут нанесены все размеры, длины ребер. Для этого применим в одно действие команду-функцию (C:Number-Edges). Результат на рисунке №4. И теперь данные будут извлечены и отпечатаны в файл, команда (C:Map-Scan-Data). Если все прошло нормально, то в файле должна обнаружиться вот такая запись, рисунок №5:
На этом считаю autolisp-овую часть завершенной. Ну а дальше нужно сформировать требуемую структуру и применить соответствующий алгоритм. Обычный поиск в ширину, найдет путь: 1-one -> 8-eight -> 7-seven, который является наоборот самым длинным, хотя промежуточных станций там меньше всего. Естественно напрашивается алгоритм Дейкстры, но это уже совсем другая история. Кликните здесь для просмотра всего текста
2
|
|||||||||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|||||||||||
| 05.05.2014, 15:40 | |||||||||||
|
Lambdik, Вот Вы используете в своем коде локальные функции. Декларируете их при помощи defun. Но таким образом они становятся глобальными. Например, в racket такой номер не пройдет.
1
|
|||||||||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
| 05.05.2014, 16:20 | |
|
Catstail, Спасибо
, интересует AL, VL.
0
|
|
|
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
|
||||||||||||
| 05.05.2014, 21:01 | ||||||||||||
|
Вместо let, я предпочитаю делать так:
Вот неплохой справочник по AutoLisp: http://www.cad.dp.ua/stats/a_lisp/index.php Правда там не все, был еще один хороший сайт, но его вирусы съели. А вообще материала в сети полно. Кстати AutoLisp использует динамические переменные. Так что есть эксклюзивная возможность отправиться на 30 лет назад на лисп-машине времени. Что касается Visual Lisp, то это совсем другой зверь, объектный. Там и функций побольше, и возможностей. При помощи него можно использовать технологию ActiveX, она же COM.
2
|
||||||||||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||
| 05.05.2014, 21:16 | ||
|
Такое впечатление что паскалисты взяли лисп и убрали из него все нужное чтобы лисп стал паскалем с круглыми скобками.
0
|
||
|
Супер-модератор
|
||||||
| 05.05.2014, 21:25 | ||||||
|
castorsky, предлагаю суррогатное решение:
2
|
||||||
| 05.05.2014, 21:25 | |
|
Помогаю со студенческими работами здесь
20
Найти кратчайший путь между вершиной и стороной в n-угольнике С алгоритмом Дейкстра найти кратчайший путь в графе между парой вершин Определить кратчайший путь между вершинами Определить кратчайший путь между 2-мя точками Кратчайший путь между двумя точками на поверхности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|