Поиск маршрутов для автомобиля довольно прост: вы храните взвешенный график всех дорог, и вы можете использовать алгоритм Джикстры [1]. Маршрут автобуса менее очевиден. С автобусом вы должны представлять такие вещи, как "подождите 10 минут для следующей шины" или "пройдите один блок к другой остановке" и подайте их в свой алгоритм поиска пути.
Это даже не всегда просто для автомобилей. В некоторых городах некоторые дороги идут в одну сторону только в город утром, а вечером в один конец - только из города. Некоторые продвинутые GPS-устройства знают, как избежать загруженных маршрутов в час пик.
Как бы вы эффективно представляли такой график, зависящий от времени, и находили маршрут? Нет необходимости в доказуемо оптимальном решении; если путешественник хотел быть вовремя, они купили бы машину.; -)
[1] Замечательный алгоритм, упомянутый в примере, потому что все слышали об этом, хотя A * является более вероятным выбором для этого приложения.