Если бы я занимался этой проблемой, я бы, вероятно, начал с аннотированного графика. Каждый узел на графике будет представлять все перекрестки в городе, независимо от того, останавливается ли там общественная транспортная система - это помогает учесть необходимость ходить и т. Д. На перекрестках с транзитной службой вы отмечаете их метками остановки - метки, позволяющие вам посмотреть расписание обслуживания для остановки.
Тогда у вас есть выбор. Вам нужен оптимальный маршрут или просто маршрут? Отображаете ли вы маршруты в реальном времени, или решения могут быть рассчитаны и кэшированы?
Если вам нужно вычисление «в реальном времени», вы, вероятно, захотите использовать своего рода жадный алгоритм, я думаю, что A * алгоритм , вероятно, вполне удовлетворительно подходит к этой проблемной области.
Если вам нужны оптимальные решения, вам следует взглянуть на динамическое программирование решений для графика ... оптимальные решения, вероятно, займут гораздо больше времени, но вам нужно найти их только один раз, тогда они могут быть кэшированным. Возможно, ваш алгоритм A * может использовать заранее рассчитанные оптимальные пути, чтобы сообщать свои решения о «похожих» маршрутах.