Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Variant_70.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
330.74 Кб
Скачать

Задача 5. Алгоритм Дейкстры.

Рассмотрим задачу в общем виде. Пусть дан граф G=(X,Г), дугам которого приписаны веса (стоимости), задаваемые матрицей С=||с ||. Задача о кратчайшем пути состоит в нахождении кратчайшего пути от заданной вершины s X до заданной конечной вершины t X., при условии, что такой путь существует, т.е. при условии t R(s). Здесь R(s)- множество вершин, достижимых из вершины s.

Элементы с могут быть положительными, отрицательными или нулями. Единственное ограничение состоит в том, чтобы в G не было циклов с суммарным отрицательным весом.

Из общей задачи о кратчайшем пути вытекают две подзадачи:

а) для заданной начальной вершины s найти кратчайшие пути между s и всеми другими вершинами x X;

б) найти кратчайшее расстояние между всеми парами вершин.

Рассмотрим задачу определения кратчайшего пути между заданными вершинами s и t для случая c >0, i , j . Наиболее эффективный алгоритм решения задачи о кротчайшем (s-t) пути первоначально дал Дейкстра. В общем случае этот метод основан на приписывании вершинам временных пометок, причём пометка вершины даёт верхнюю границу длины пути от s к этой вершине. Эти пометки (их величины) постепенно уменьшаются с помощью итерационной процедуры, и на каждом шаге итерации только одна из временных пометок становиться постоянной. Последнее указывает на то, что пометка уже не является верхней границей, а даёт точную длину кратчайшего пути от s к рассматриваемой вершине.

Рассмотрим действие алгоритма на примере. Пусть дан граф G, показанный на рисунке 1, где каждое неориентированное ребро рассматривается как пара противоположно ориентированных дуг равного веса. Матрица смежности весов С приведена ниже. Требуется найти все кратчайшие пути от вершины x, ко всем остальным вершинам. Для решения задачи воспользуемся алгоритмом Дейкстры, который является одним из самых быстрых для поиска кратчайшего расстояния от некоторой вершины до всех остальных.

Рисунок 1. Смешанный граф

Решение.

Постоянные пометки будем снабжать знаком +, остальные пометки рассматриваются как временные.

Шаг 1.

l(x ) = 0 , l(x ) = ∞ , x x , p = x .

Первая итерация

Шаг 2.

Г( p) = Г(x ) = { x } – все пометки временные.

Применяя (2) , получим

l(x ) = min { ; 0+4}= 4,

Так как на первой итерации вершина только одна , то шаг 3 по выбору минимума опускается.

Шаг 4.

l(x )=4 ; p= x .

Шаг 5.

Не все вершины имеют постоянные пометки.

Переход к следующей итерации.

i / j

x

x

x

x

x

x

x

---------

4

x

4

---------

3

2

3

x

3

---------

5

1

4

x

5

---------

3

x

2

1

---------

2

x

3

4

3

2

---------

Таблица 1- Матрица смежности весов .

Вторая итерация.

Шаг 2.

Г( p) = Г(x ) = { x , x , x , x }.

l(x ) = min { ; 4+3}= 7,

l(x ) = min { ; 4+2}= 6,

l(x ) = min { ; 4+3}= 7.

Шаг 3.

min{l(x ); l(x ); l(x )} = min{7,6,7} = 6.

Шаг 4.

l(x ) = 6 ; p = x .

Шаг 5. Переход к следующей итерации.

Третья итерация.

Шаг 2.

Г( p) = Г(x ) = { x , x , x }.

l(x ) = min {7; 7+4} = 7,

l(x ) = min {7; 6+2} = 7.

Шаг 3.

min{l(x ); l(x )} = min{7,7} = 7.

Выбираем любую вершину.

Шаг 4.

l(x ) = 7 ; p = x

Шаг 5. Переход к следующей итерации.

Четвёртая итерация.

Шаг 2.

Г( p) = Г(x ) = { x , x , x , x }.

l(x ) = min { ; 7+5} = 12.

l(x ) = min {7; 6+2} = 7.

Шаг 3.

min{ l(x ); l(x ) }= min{7,12} = 7.

Шаг 4.

l(x ) = 7 ; p = x

Шаг 5. Переход к следующей итерации.

Пятая итерация.

Шаг 2.

Г( p) = Г(x ) = { x ,x , x , x }.

l(x ) = min { ; 7+3}=10.

Шаг 3.

min(x ) =10.

Шаг 4.

l(x ) = 10 ; p= x .

Шаг 5. Все вершины имеют постоянные пометки. Остановка. Окончательная расстановка пометок приведена на рис.3

Для нахождения кратчайшего пути между вершиной x (например) и начальной вершиной применяем последовательно соотношение l(x ’) + c(x ’,x ) = l(x ) . Таким образом, полагая x =x , находим вершину x ’ , непосредственно предшествующую x в кратчайшем пути от x к x ; вершина должна удовлетворять соотношению

l(x ’)+ C(x ’, x ’ )= l(x ’ )= 10.

Одной из таких вершиной является х = x ’.

Продолжая аналогичные рассуждения, получим :

l(х ’) + C(х ’, х ) = l(х ) = 7 х ’ = x .

l(x ’) + C(x ’, x ) = l(x ) = 6 x ’ = x .

l(x ’) + C(x ’, x )= l(x ) = 4 x ’ = x

Таким образом, кратчайший путь от вершины x к вершине x проходит через вершины x , x и х . То есть ( x , x ) = (x , x , x , х , x ). Путь на рисунке выделен черным цветом.

Рисунок 2- Окончательные пометки вершин графа.

Список литературы

  1. Н. Кристофидес, Теория графов. М.: «Мир» 1978г. ;

  2. Вялых Б. И,, Сукманов С. А. Дискретная математика. ТАИИ 2004г;

  3. О. Оре Графы и их применение. Пер. с англ. под ред. И.М. Яглома. - М., “Мир”, 1965г;

  4. Е. П. Липатов. Теория графов и её применения. - М., Знание, 1986г.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]