ХабрПостыНовостиМегапосты?

Добавление расчёта пути к схеме метро Москвы из Википедии

В процессе создания своей схемы метро я использовал SVG-схему из статьи Википедии как визуальный образец. После добавления возможности расчёта и вывода пути к своей схеме стал думать о том, как использовать алгоритм поиска по графу и для других подобных схем. И решил недавно попробовать адаптировать его для схемы метро из Википедии.

Для этого решил адаптировать не алгоритм к схеме, а схему к алгоритму. Поскольку алгоритм BFS использует перебор массивов станций, координат линий и пересадок, то нужно было распарсить схему из Википедии в массивы: для этого я написал различные варианты CSS-селекторов.

Приведу сложности, возникшие при разборе схемы, в виде списка:

@egaxegax
24.09.2022 20:37 UTC
Первоисточник

Комментарии

@little-brother
24.09.2022 15:45 UTC
0

>>можете протестировать ещё один поиск по схеме метро Москвы.

при поездке с Авиамоторной до Текстильщиков он ведет через пешеходный переход на кольцо, а не на прямой маршрут: Марксистская - Таганская Рад.

24.09.2022 16:40 UTC
0

Внешние переходы по умолчанию отключены. Включаются в выпадающем списке в правом верхнем углу Пересадки -> МЦК. МЦК, Монорельс, переход на Некрасовкую линию входят в МЦК меню.

24.09.2022 18:23 UTC
0

24.09.2022 19:00 UTC
0
В
В

В меню надо включить внешние пересадки.

24.09.2022 20:12 UTC
+1

Вам про Фому, а вы про Ерёму. Суть в том что отрисовка перехода с жёлтой Марксистской на фиолетовую Таганскую показана через коричневую Таганскую, вместо того чтобы отрисовывать прямой маршрут с жёлтой на фиолетовую.

24.09.2022 20:39 UTC
0

Спасибо за пояснение. Не так понял ремарку. Да, иногда маршруты неоптимальны. Зависит от того, в какой последовательности координаты переходов заданы в списке. Дальше проверяются рекурсивным перебором. Тройные и четверные переходы нужно разбить на пары, это должно уточнить поиск.

25.09.2022 07:10 UTC
0

а че этом в меню нет "все"?

25.09.2022 08:35 UTC
0

чтобы длинные маршруты проходили по радиальной, и их не забирало кольцо мцк. Думаю, это больше соответствует реальным поездкам. В коде mosmetro2.html заменить строчку <option id="inch_out">&emsp; МЦК</option> на <option id="inch_out">&#9745; Метро</option> и всё будет включено.