есть проблема, которая сводит меня с ума!
- это должно быть решено с помощью динамического c программирования btw -
У меня 80 городов, и есть дополнительный стартовый город для поездки. Мне нужно найти кратчайший путь к каждому из этих 80 городов из одного города. Но проблема в том, что путешественник может воспользоваться автобусом или поездом.
Во входных данных информация о том, существует ли железнодорожный путь между двумя указанными c городами, если между указанными c городами существует автобусная линия, среднее время в пути для путешественника, который использует один из этих вариантов, а также будет указано среднее время в пути между автовокзалом и железнодорожным вокзалом в городе, если оно есть. Во время поездки в конкретный город c мы можем изменить наш вариант перевозки не более одного раза.
Я думаю, что я могу абстрагировать эту проблему до уровня, что каждый город является вершиной, и поскольку эта структура не может быть ациклическим c графом; Я могу использовать такой алгоритм, как Беллман-Форд, или другой алгоритм, который выполняется за время O (VE). Но между двумя городами может быть 2 ребра, одно для автобуса и одно для поезда. Тогда я понятия не имею о том, как я мог справиться с этим. Таким образом, рекурсия будет зависеть от 2 параметров, назначенной вершины и максимального количества ребер, которые должны достигнуть этого города. Но здесь, я думаю, у меня есть еще один параметр, касающийся этой проблемы, связанной с поездом-автобусом, с которым я понятия не имею, b c, поскольку, как я уже говорил, мы можем изменить наш транспорт не более одного раза во время путешествия.
Моя проблема просто если есть два города, в которых мы можем изменить наш способ транспортировки на протяжении всего пути, изменение варианта перевозки в первом возможном городе из-за более низкой стоимости может не привести к наименьшей общей стоимости, поскольку, возможно, изменение варианта перевозки во втором возможном город снижает стоимость больше, чем первый город снижается.
Любая помощь будет оценена. Заранее спасибо!