Хелпикс

Главная

Контакты

Случайная статья





Второй этап.. Первый этап.



Второй этап.

Если W(t)<M, то выполняем второй этап алгоритма Беллмана-Калабы, в противном случае задача решения не имеет.

 

 

7.5. Алгоритм Дейкстры отыскания кратчайших расстояний на графе

 

Алгоритм Дейкстры применяется для случая, когда c(v)>0. В нем каждая вершина может быть:

- непомеченной,

- помеченной временной пометкой ,

- помеченной постоянной пометкой.

Вершина i непомечена, если до нее не найден ни один путь из вершины t. Помечена временной пометкой, если из вершины t найден путь и величина W(i) есть верхняя оценка кратчайшего расстояния от t до i, и на последующих итерация может быть уточнена вплоть до кратчайшего расстояния от t до i. Помечена постоянной пометкой, если W(i) из верхней оценки стала кратчайшим расстоянием от t до i. Алгоритм первого этапа заканчивает работу, если W(s) стало равным кратчайшему расстоянию от t до s.

 

Первый этап.

0-шаг. W(t):=0; вершину t считаем временной помеченной вершиной для всех iÎE\{t} W(i):=M, вершины iÎE\{t} не помечены;

k-й шаг. Среди всех временно помеченных вершин i ищем вершину j с наименьшим значением W. Вершину j помечаем постоянной пометкой. Если j=s, то переходим к выполнению второго этапа, в противном случае просматриваем вершину j. Для этого для всех vÎ V -(j) выполнить:

1. определяем i=h2(v).

2. если вершина i непомечена постоянной пометкой, то

W(i):=min( W(i) c(v)+W(j) ),

эта вершина помечается временной пометкой. Переходим к выполнению (k+1) шага.

 

Второй этап (восстановление кратчайшего пути).

0-шаг. i(0):=s;

k-й шаг. Среди vÎV +(i(k-1)) ищем v(k-1), для которой

 W(h1(v(k)))=c(v(k))+W(i(k-1)),

 i(k):=h1(v(k)).

Если i(k)=t, то алгоритм заканчивает работу, в противном случае переходим к выполнению (k+1)-го шага.

 

В результате выполнения второго этапа получим

t=i(k), v(k-1), i(k-1), v(k-2), ... ,v(0), i(0)=s,

являющееся решением задачи.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.