Допустим, мы едем с 1 по 5. Самый короткий маршрут будет 1-4-3-5 (всего: 60 км).
Мы можем использовать алгоритм Дейкстры для этого.
Теперь проблема в том, что самый короткий маршрут не всегда самый быстрый из-за пробок или других факторов.
Например:
- Известно, что 1-2 часто бывают пробки, поэтому его следует избегать.
- Внезапно происходит автомобильная авария на 4-3, поэтому ее тоже следует избегать.
- И т.д...
Так что, вероятно, мы можем ускоряться на маршруте 1-4-5 из-за отсутствия пробок / аварий, поэтому мы прибудем на 5 быстрее.
Ну, это общая идея, и я пока не думаю о более подробной информации.
Есть ли алгоритм для решения этой проблемы?
Ответы:
Так как вы привели к застою в картине, будьте осторожны, вы не попадетесь под парадокс Брасса . Если каждый выберет оптимальный путь, это приведет к худшему времени в пути для всех.
источник
Да, Дейкстра
Дейкстра работает так же хорошо в этой ситуации.
Вы просто используете время, а не расстояние, как вес каждой дуги.
источник
Да. Алгоритм Дейкстры решит эту проблему.
Проблема в вашем случае заключается в том, что вы автоматически предполагаете, что кратчайший путь равен пройденному расстоянию, тогда как на самом деле он более уместно соответствует СТОИМОСТИ прохождения маршрута.
Если у одного пути есть контрольно-пропускной пункт, тогда его COST должен быть выше, и алгоритм все еще применяется.
источник
Вы должны просто иметь возможность заменить свое расстояние временем между узлами и решить его таким же образом.
источник
Дейкстра
Как уже было сказано, он используется не только для кратчайшего расстояния. Я считаю, что эта анимация дает хорошее представление о «силе» (из-за отсутствия лучшего слова) Дейкстры:
источник