Я хочу найти кратчайший путь между двумя вершинами с дополнительным ограничением: max n можно посетить вершины. График направлен, связан, не отрицателен и может содержать циклы.Самый короткий путь с максимальным числом вершин
Пример:
- Кратчайший путь 0-> 2 с п = 2 является
- Кратчайший путь 0-> 3 с п = -
- Кратчайший путь 0-> 3 с п = 4 является
До сих пор я реализовал Djikstras алгоритм, чтобы получить простой короткий путь, и моя идея состояла в том, чтобы сохранить счетчик из текущих посещенных вершин, если он превышает n, он принимает один или несколько шагов назад и пытается с другим путем .. но насколько я знаю, Djikstras не может использоваться для обратного отслеживания, как объяснено here.
Другая идея - как-то хранить каждый путь между каждым узлом в таблице. Но я не совсем уверен, как Джикстра может найти путь 0-> 2 с весом 18, так как это не самый короткий путь ...
Есть ли у кого-нибудь идеи, как решить эту проблему?
Как насчет подсчета количества посещений вершин, как вы упомянули, но вместо того, чтобы отступать, примените его как часть веса? вес должен увеличиваться для каждого шага. вам все равно придется его нормализовать. – gidim