Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Кратчайший путь с пересадками


Автор: AIs 26.12.2008, 11:34
В городе расположены n автобусных остановок, обозначенных числами из N={1,2,....,n}. Имеется R автобусных маршрутов, заданных последовательностями соседних остановок при движении автобуса в одном направлении:
М1={I11,I12,...,I1m1},
М2={I21,I22,...,I2m2},
.....
Mr={Ir1,Ir2,...,Irmr},
где Ijk натуральное.

Программа должна по заданным номерам остановок I и J определять наиболее быстрый путь перемещения пассажира из остановки I в остановку J с использованием имеющихся маршрутов автобусов при условии, что время движения между соседними остановками у всех маршрутов одинаково и в 3 раза меньше времени изменения маршрута. Кроме того, автобусы могут двигаться в обоих направлениях.

В общем, единственная проблема - как обозначить пересадку.

Автор: Akina 26.12.2008, 12:42
Цитата(AIs @  26.12.2008,  12:34 Найти цитируемый пост)
единственная проблема - как обозначить пересадку

Очень просто - остановку X, на которой останавливаются автобусы M и N, раздели на две остановки XM и XN. После того, как ты проделаешь это со всеми остановками и маршрутами, тебя вообще перестанет волновать маршрут.

То есть сначала ты разделяешь остановки. Потом для каждой пары начальной Xi и конечной Yi находишь минимум времени движения, после чего из них из всех выбираешь минимальный.

Автор: deshton 4.1.2009, 19:46
Никогда не любил задачки подобного плана, я пас.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)