Материал: АиСД. Практикум (in dev)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Записываем выражения для функции fi

f1 +3 f1 + 4 f1 + 2

f1 = 0; f2 = min; f3 = min; f4 = min f5 + 5

f6 + 3 f6 + 6 f6 + 2

f2 + 3

f4 + 5 f3 + 6

f6 + 1 f4 + 2 f5 + 6

f5 = min ; f6 = min ; f7 = min

f9 +12 f5 + 1 f6 + 8

f7 + 6 f7 + 8

f8 + 7

f7 + 4

f6 + 7 f5 + 12

f8 = min ; f9 = min ; f10 = min f8 + 3 .

f9 + 6 f8 + 6

f9 + 11

Указанные целевые функции , представляют собой систему линейных алгебраических уравнений (в примере имеется 10 уравнений и 10 неизвестных).

Рассмотрим один из вариантов ее решения, учитывая, что f1 = 0 .

Тогда имеем:

2

f2 = 3; f3 = 4; f4 = min f5 + 5 = 2;

f6 + 2

6

7 10

f6 + 1 7 4 4

f5 = min f9 +12 = min ; f6 = min f5 +1 = min = 4

f7 + 6 f6 + 1 f7 + 1 f5 + 1

f8 + 7

Подставив выражение для f6 в f5, получим

7 f5 = min 4 + 1 = 5.

f5 + 1 + 1

Тогда

11 17 15

f7 = 11; f8 = min ; f9 = min ; f10 = min f8 + 3 .

f9 + 6 f8 + 6 f9 + 11

Подставляя f9 в f8, получаем

11

f8 = min 17 + 6 = 11.

f8 + 6 + 6

Окончательно имеем: f9 = 17; f10 = 14.

    1. Метод Дейкстры

Алгоритм Дейкстры предназначен для нахождения кратчайшего пути между вершинами в неориентированном графе. Идея алгоритма следующая, сначала выберем путь до начальной вершины равным нулю, и заносим эту вершину во множество уже выбранных, расстояние от которых до оставшихся невыбранных вершин определено. На каждом следующем этапе находим следующую невыбранную вершину, расстояние до которой наименьшее и соединённую ребром с какой-нибудь вершиной из множества выбранных (это расстояние будет равно расстоянию до уже выбранной вершины плюс длина ребра).

Найти кратчайший путь на графе от вершины L до вершины D (рис.2).

Рис.2. Взвешенный неориентированный граф

Запишем алгоритм в виде последовательности шагов.

Шаг 1. Определяются расстояния от начальной вершины L до всех остальных .

Длина пути до выбранной вершины

Выбранная вершина

Невыбранные вершины

B

G

N

R

D

S

M

A

0

L

7

∞

10

∞

∞

∞

∞

∞

7

B

Шаг 2. Выбираем наименьшее расстояние от L до B, найденная вершина В прини-

мается за вновь выбранную. Найденное наименьшее расстояние добавляется к длинам ребер

от новой вершины В до всех остальных. Выбирается минимальное расстояние от В до N. Новая вершина N принимается за выбранную.

Длина пути до выбранной вершины

Выбранная вершина

Невыбранные вершины

B

G

N

R

D

S

M

A

0

L

7

∞

10

∞

∞

∞

∞

∞

7

B

∞

16

10

∞

∞

∞

∞

34

10

N

Для наглядности в дальнейшем вместо знака ∞ будем ставить знак “-“.

Шаг 3. Определяются расстояния от вершины N до всех оставшихся (за исключением

L и B) .

Длина пути до выбранной вершины

Выбранная вершина

Невыбранные вершины

B

G

N

R

D

S

M

A

0

L

7

∞

10

∞

∞

∞

∞

∞

7

B

∞

16

10

∞

∞

∞

∞

34

10

N

∞

16

∞

41

∞

∞

∞

34

16

G

Расстояние от вершины L через вершину N до вершины G равно 18. Это расстояние

больше, чем расстояние LB+BG= 16, поэтому оно не учитывается в дальнейшем.

Продолжая аналогичные построения, построим таблицу. Таким образом, найдена

длина кратчайшего пути между вершинами L и D (44 условных единицы).

Траектория пути определяется следующим образом.

Осуществляем обратный просмотр от конечной вершины к начальной.

Просматриваем столбец, соответствующий вершине, снизу вверх и фиксируем первое появление минимальной величины. В столбце, соответствующем вершине D, впервые минимальная длина 44 появилась снизу в четвертой строке. В этой строке указана вершина S, к которой следует перейти, то есть следующим нужно рассматривать столбец, соответствующий вершине S.

Длина

пути до выбранной вершины

Выбранная вершина

Невыбранные вершины

B

G

N

R

D

S

M

A

0

L

7

-

10

-

-

-

-

-

7

B

-

16

10

-

-

-

-

34

10

N

-

16

-

41

-

-

-

34

16

G

-

-

-

41

-

16+11=

=27

-

34

27

S

-

-

-

41

27+17=

=44

-

27+15=

=42

34

34

A

-

-

-

41

44

-

42

[34+15]

-

41

R

-

-

-

-

44

[41+32]

-

42

-

42

M

-

-

-

-

44

[42+21]

-

-

-

Источник: https://studfile.net/preview/12528130/