Я пытался понять эту реализацию алгоритма Дейкстры на C и в то же время измените его так, чтобы был найден только кратчайший путь между двумя конкретными узлами (источник и пункт назначения).
Однако я не знаю точно, что делать. Как я это вижу, делать особо нечего, я не могу изменить d[]
или prev[]
, потому что эти массивы объединяют некоторые важные данные для расчета кратчайшего пути.
Единственное, что я могу придумать, это остановить алгоритм, когда путь найден, то есть разорвать цикл, когда mini = destination
когда он помечен как посещенный.
Могу ли я сделать что-то еще, чтобы сделать его лучше, или этого достаточно?
РЕДАКТИРОВАТЬ:
Хотя я ценю сделанные мне предложения, люди по-прежнему не могут точно ответить на мой вопрос. Все, что я хочу знать, это как оптимизировать алгоритм для поиска только кратчайшего пути между двумя узлами. Меня пока не интересуют все остальные общие оптимизации. Я имею в виду, что в алгоритме, который находит все кратчайшие пути от узла X ко всем другим узлам, как мне оптимизировать его для поиска только определенного пути?
P.S. Я только что заметил, что циклы for
начинаются с 1
до <=
, почему они не могут начинаться с 0
и продолжаться до <
?