Алгоритм Дейкстры
-
Расстояние от s до s, конечно же, равно 0. Кроме того, это расстояние уже никогда не сможет стать меньше - ведь веса всех ребер графа у нас положительны. Таким образом:
dist[s]:= 0; done[s]:= true; last:= s;
-
Повторить N-1 раз следующие действия:
-
для всех непомеченных вершин х, связанных ребром с вершиной last, необходимо пересчитать расстояние:
dist[x]:= min(dist[x], dist[last]+ sm[last,x]);
- среди всех непомеченных вершин найти минимум в массиве dist: это будет новая вершина last;
- пометить эту новую вершину в массиве done.