Алгоритмы построения кратчайших связывающих деревьев (КСД). Алгоритм построения КСД с ограничением на степени вершин

Страницы работы

3 страницы (Word-файл)

Содержание работы

Содержание

Введение

1.Алгоритмы построения кратчайших связывающих деревьев (КСД).

1.1   Точные алгоритмы (без ограничения на степени вершин).

1.1.1Алгоритм Краскала

1.1.2Алгоритм использующий пометки вершин

1.1.3Алгоритм Прима

1.2 Алгоритм построения КСД с ограничением на степени вершин

1.2.1       Модифицированный алгоритм Прима

1.2.2       Алгоритм построения дерева-цепочки

2.  Алгоритм построения матрицы контуров и сечений

 Введение

Приведём некоторые сведения из теории графов, необходимые для рассмотрения последующих задач.

Графом G(X,U) называют совокупность двух множеств: Х={x1,x2,...xn} - множество вершин и U={u1,u2,...um}- множество дуг в ориентированном графе (рёбер в неориентированном) вида uk=(xi,xj), xi,xjОX.

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

Связным называется граф, в котором для любой пары вершин существует хотя бы один путь (маршрут).

Замкнутым путём (маршрутом) называют путь (маршрут), в котором начальная вершина первой дуги (ребра) и конечная вершина последней дуги (ребра) совпадают.

Если в замкнутом пути (маршруте) каждая его дуга (ребро) встречается не более одного раза, то он называется циклом.

Деревом называется связный неориентированный граф без циклов, или граф, содержащий n вершин и n-1 рёбер.

Ориентированное дерево  представляет собой ориентированный граф без циклов, в котором полустепень захода каждой вершины (число дуг, заходящих в вершину),  кроме одной, называемой корнем дерева, равна 1, а полустепень захода корня дерева равна 0.

Остовным деревом или остовом графа называют дерево, содержащее все вершины графа.

Заметим, что в неориентированном графе всегда может быть построен остов, в то время как не всякий ориентированный граф содержит остов. Например, ориентированный граф, изображённый на рис.1.1 не содержит остова; если же убрать ориентацию дуг, то можно построить, например, остов, представленный на рис.1.2.

X1X2X1X2

 


X6X3

X3X5X6X4

X5X4

Рис.1.1.Орентированный граф             .              Рис.1.2.Остовное дерево.  

Очевидно, что остовов в графе может быть множество; Кэли показал [ ],что если граф с n вершинами полный, то количество остовных деревьев равно nn-2  ,другими словами, на n вершинах можно построить nn-2   остовных деревьев. Будем называть их, деревьями. Произвольное дерево на графе может быть построено, например, методом поиска в глубину.

Приведем алгоритм поиска в глубину.

Дан связный неориентированный граф G(X,U),содержащий n вершин. Обозначим здесь и в последующем через Т множество вершин строящегося графа, через А -множество ребер.

Шаг 1.Выбрать произвольно начальную вершину Xs. Т={Xs};А=0; последняя включенная в дерево вершина p=Xs.

Шаг 2.Если множество F=F(p) Ç(X\T) ¹0,т.е. среди вершин, смежных с p, имеются не вошедшие в поддерево Т, то любую из вершин Хj ÎF включить в дерево: T=TÈXj ;A=A È(pj , xj ).Положить р=хj .Если ïTï=n, то дерево построено, иначе повторить шаг2. Если F=0 ,то вернуться в множество Т к вершине, предшествующей вершине р , принять ее за вершину р и повторить шаг 2.

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

В большинстве прикладных задач требуется найти дерево минимальной длины; будем называть его кратчайшим связывающим деревом - КСД.

1.   Алгоритмы построения кратчайших связывающих деревьев.

2.   Точные алгоритмы.

3.   Алгоритм Краскала.

Дан связный неориентированный граф G(X,U), содержащий n вершин и описываемый взвешенной матрицей сложности.

Шаг 1. Все ребра графа G упорядочить по неубыванию их весов.

Шаг 2. Начав с первого ребра в этом списке ,добавлять следующее ребро, если оно не образует цикла в строящемся дереве.

Шаг 3. Повторять шаг2 до тех пор , пока число ребер в дереве не станет равным  n-1.

Приведем пример использования алгоритма Краскала.

Пример 1.1. для графа , представленного на рис.1.3 и заданного матрицей Д , построить КСД. 

1,6,3,2,7,3,7,6,4,8,5,10,X1,X2,X5,X7,X6,X3,X4

       0  3  6  ì ì ì ì

3  0  7   3  6  ì ì

6  7  0   3  ì 4  ì

Д=  ì 3  3   0   2  1 10

ì 6  ì  2   0  5  7

ì ì  4  1   5  0  8

ì ì ì 10 7  8  0

Рис.1.3. Представление графа для примера 1.1.

Список упорядоченных ребер: ( Х4, Х6),(Х4,Х5),(Х1,Х2),(Х2,Х4),(Х3,Х4),(Х3,Х6),

(Х5,Х6),(Х1,Х3),(Х2,Х5),(Х2,Х3),(Х5,Х7),(Х6,Х7),(Х4,Х7).

Дерево с семью вершинами должно содержать пять ребер.

Полученное дерево длиной  L=19  изображено на рис.1.4.

7,3,3,3,2,1,X1,X5,X2,X7,X6,X3,X4
 



Рис.1.4. КДС для графа на рис.1.3.

Заметим, что ребра (Х3,Х6),(Х5,Х6),(Х1,Х3),(Х2,Х5),(Х2,Х3) не включены в дерево , т.к. они образуют циклы.

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

Похожие материалы

Информация о работе