При построении каркаса берут ребро графа и добавляют другие ребра не создающие циклов до тех пор, пока нельзя будет добавить ни одного ребра из-за появляющегося цикла.
Граф может содержать несколько каркасов.
и -каркасы графа
Оптимизация на графах
Существует большое число задач, связанных с решением оптимизационных задач на графах. Например: поиск кратчайшего или длиннейшего пути на карте между пунктами; нахождение сетей минимальной стоимости и т. д. При решении подобных задач используют взвешенные графы , каждой вершине (ребру) которого приписывается некоторое число. Будем рассматривать графы, в которых число задается на ребрах графа.
Число приписанное к некоторой дуге или ребру будем называть мерой дуги или ребра . В зависимости от конкретной задачи мера может иметь различный смысл: расстояние, стоимость и.т.д.
Мерой пути в графе будем называть сумму мер дуг, составляющих данный путь:
1. Построение минимального каркаса.
Пусть задан неориентированный граф с нагруженными ребрами.
Требуется выбрать ребра графа таким образом, чтобы полученный подграф был каркасом графа с минимальной суммой мер ребер.
Простейшим алгоритмом решения служит алгоритм Краскала. При его выполнении составляется список ребер в порядке увеличения мер ребер. Дальнейшие шаги заключаются в выборе ребер начиная с ребра с минимальной мерой. Если очередное ребро приводит к образованию цикла, то его отбрасывают. Когда выбранное число ребер на единицу меньше числа вершин процесс прекращают.
Пример: требуется построить линию электропередач минимальной стоимости между населенными пунктами a,b,c,d,e,f. Стоимость линий между различными пунктами известна.
a
f b
e c
d
Стоимость строительства линий приведена в таблице:
a |
b |
c |
d |
e |
f |
|
a |
- |
2 |
4 |
7 |
8 |
3 |
b |
- |
5 |
1 |
3 |
6 |
|
c |
- |
9 |
4 |
7 |
||
d |
- |
2 |
5 |
|||
e |
- |
3 |
||||
f |
- |
Составляем таблицу в порядке увеличения веса ребер:
Вес ребра |
Ребра |
1 |
|
2 |
, |
3 |
,, |
4 |
, |
5 |
, |
6 |
|
7 |
, |
8 |
|
9 |
Поскольку у графа 6 вершин, то для построения каркаса нам нужно выбрать 5 ребер. Устанавливаем значение счетчика
Выбираем - стоимость 1, ;
Выбираем - стоимость 2, ;
Выбираем - стоимость 2, ;
Выбираем - стоимость 3, ;
Выбираем - стоимость 3, однако это ребро создает цикл и его следует отбросить, ;
Выбираем - стоимость 3, опять возникает цикл, поэтому и это ребро исключаем, ;
Выбираем - стоимость 4, . Число выбранных ребер дерева на единицу меньше числа вершин графа, поэтому процесс завершен. Общая стоимость 12.
a
3 2
f b
4
1
e c
2
d
Замечание: изученный алгоритм может применяться для нахождения максимального каркаса. Для этого на каждом шаге следует выбирать ребро с максимальной мерой.
2. Нахождение минимального пути в ориентированном графе.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.