Алгоритмы Алгоритм Краскалла Алгоритм Дейкстры

advertisement
Алгоритмы
Алгоритм Краскалла
Алгоритм Дейкстры
Остов минимального веса
Задача нахождения остова минимального веса во взвешенном
связном графе, возникает при проектировании линий
электропередачи, трубопроводов, дорог и т.п., когда требуется
заданные центры соединить некоторой системой каналов,
связных либо непосредственно соединяющим их каналом, либо
через другие центры и каналы, так, чтобы общая длина (или,
например, стоимость) каналов связи была минимальной.
Решение этой задачи «слепым» перебором вариантов
потребовало бы чрезвычайно больших вычислений даже при
относительно малых n (можно доказать, что полный граф Kn
содержит nn–2 различных остовных дерева). Однако для ее
решения имеются эффективные алгоритмы. Опишем два из них
- алгоритмы Дж. Краскала (1956) и Р. Прима (1957),
применяемые к произвольному связному графу (G, w) порядка
n.
Алгоритм Краскалла


Шаг
1.
Строим
граф
T1=On+e1,
присоединяя
к
пустому
графу
на
множестве вершин VG ребро e1∈VG
минимального веса.
Шаг 2. Если граф Ti уже построен и i<n–1,
то строим граф Ti+1=Ti+ei+1, где ei+1 – ребро
графа G, имеющее минимальный вес
среди ребер, не входящих в Ti и не
составляющих циклов с ребрами из Ti.
Задание


Построить связный 9-вершинный граф,
без петель и кратных ребер. Случайным
образом распределить веса ребер.
С помощью алгоритма Краскалла найти
остов минимального веса.
Задание

Дан граф, найти остов минимального веса.
4
3
2
8
5
3
4
1
9
6
7
4
5
2
2
6
1
5
3
7
Задача о минимальной связке

Найти остовное дерево графа с наименьшим
весом, используя алгоритм Краскалла.
9
12
2
7
11
3
2
6
4
1
7
6
4
8
5
3
1
1
6
2
1
7
8
5
4
9
6
10
3
11
Задача о кратчайшей цепи




Задача о кратчайшем пути. Пусть задана сеть из n + 1
вершины, то есть ориентированный граф, в котором
выделены две вершины – вход (нулевая вершина) и выход
(вершина с номером n). Для каждой дуги заданы числа,
называемые длинами дуг.
Длиной пути (контура) называется сумма длин входящих в
него дуг (если длины дуг не заданы, то длина пути (контура)
определяется как число входящих в него дуг).
Задача заключается в поиске кратчайшего пути (пути
минимальной длины) от входа до выхода сети.
Известно, что для существования кратчайшего пути
необходимо и достаточно отсутствия в сети контуров
отрицательной длины.
Алгоритм Дейкстры

Алгоритм основан на приписывании узлам
временных
или
постоянных
меток.
Первоначально только источнику приписывается
постоянная метка, равная нулю. Всем другим
узлам
приписываются
временные
метки,
соответствующие весу дуги из источника в
рассматриваемый узел. Если такой дуги нет, то
узлу приписывается временная метка, равная
бесконечности.
Алгоритм Дейкстры

Для
определения
ближайшего
к
источнику узла выберем временную
метку с минимальным значением и
объявим ее постоянной. Затем, до тех
пор, пока стоку не будет приписана
постоянная
метка,
необходимо
выполнить следующее:
Алгоритм Дейкстры
Рассмотреть оставшиеся узлы с временными метками.
Сравнить величину каждой временной метки с суммой
величин последней из постоянных меток и веса дуги,
ведущей из соответствующего постоянно помеченного
узла в рассматриваемый. Минимальная из двух
сравниваемых величин определяется как новая временная
метка рассматриваемого узла.
2.
Среди временных меток выбрать минимальную и
объявить ее постоянной.
После
постоянного
помечивания
стока
алгоритм
прекращает работу, при этом минимальная сумма весов
дуг, соединяющий источник и сток, равна постоянной метке
стока. Искомая цепь состоит из дуг, для каждой из которых
разность между постоянными метками ее концевых узлов
равна весу этой дуги.
1.

Задание 1

Дана сеть. Определить ориентированную цепь
из узла S в узел t, сумма весов дуг которой
минимальна.
V1
1
V2
10
2
2
3
3
6
S
t
3
V3
3
1
7
5
V4
1
V5
Задание 2

Дана сеть. Определить
ориентированную цепь из узла S в узел
t, сумма весов дуг которой минимальна.
4
3
2
8
5
3
1
9
6
S
4
t
7
4
5
2
2
6
1
5
3
7
Задание 3

Дана сеть. Определить ориентированную цепь
из узла S в узел t, сумма весов дуг которой
минимальна.
V1
5
V2
12
S
2
6
4
V4
V5
3
4
8
3
8
t
7
2
12
V6
V3
6
9
8
5
V7
V8
Download