Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Многомерные графы / ДМ / Математика7-1.doc
Скачиваний:
34
Добавлен:
15.04.2015
Размер:
1.07 Mб
Скачать

3.3. Определение кратчайшего остова неориентированного графа на основе упорядочения ребер графа (алгоритм Краскала)

Такая задача возникает при прокладке дорог, газопроводов, линий электропередач, линий связи и т.д., когда необходимо связать nточек так, чтобы общая длина «линий связи» была минимальной. Следует отметить, что «кратчайший остов графа» не имеет никакого отношения к дереву, дающему все кратчайшие пути, выходящие из некоторой выбранной вершины. Так, для графа (рис. 3.1), где числа, стоящие около ребер, являются их весами, дерево, дающее все кратчайшие пути, выходящие из вершиных1, изображено на рис.3.2, а кратчайший остов графа представлен на рис. 3.3.

X1

Рис. 3.1. Исходный граф с проставленными весами ребер

X1

Рис. 3.2. Кратчайшие пути из вершины X1

Рис. 3.3. Кратчайший остов графа

Итак, кратчайший остов графа связывает кратчайшим образом все вершины графа, а не только х1с другими вершинами.

Для построения кратчайшего остова с помощью алгоритма, изложенного в п. 3.3, необходимо в п.3.2(2) сформировать последовательность ребер в порядке возрастания их весов.

3.4. Построение кратчайшего остовного дерева с помощью алгоритма Прима в табличной форме

По заданному графу заполняется матрица весов W(N,N). Веса несуществующих ребер предполагаются сколь угодно большими. Образуется массивP(N) меток вершин графа (столбцов матрицы весов). Алгоритм решения задачи заключается в последовательном заполнении массива меток столбцов и состоит из следующих этапов.

Предварительный этап. Обнуляется массивP(N) меток столбцов таблицы. Произвольно выбранному столбцу присваивается значение метки, равное его номеру.

Этап, повторяющийся N-1 раз (общий этап).В строках, номера которых равны номерам помеченных столбцов, находится минимальный элемент среди элементов непомеченных столбцов. Столбец, в котором находится минимальный элемент, помечается меткой, номер которой равен номеру его строки. В случае если минимальных элементов несколько, то выбирается любой. После помечивания очередного столбца элементу, симметричному относительно главной диагонали (для многомерного графа - с ”транспонированными индексами”), присваивается сколь угодно большое значение.

Заключительный этап.Ребра, включенные в минимальное остовное дерево, определяются по меткам столбцов. Вес остовного дерева задается суммой весов входящих в него ребер.

Пример

Известна стоимость обеспечения связи между источником и потребителями информации (рис. 3.4).

Рис. 3.4. Исходный граф с проставленными весами ребер

Нужно синтезировать топологию сети, обеспечивающей минимальную стоимость. Требуется определить методами Краскала и Прима минимальное остовное дерево графа G(5, 10), представленного на рис. 3.4.

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

Таблица 3.1

_ _ 3_ _

1 2 3 4 5

1 5 10 8 9

2 5 3 7 1

3 10 3 2 6

4 8 7 2 4

5 9 1 6 4

Задачей общего этапа является помечивание всех столбцов таблицы. В 3-й строке находится минимальный элемент w34=2. 4-й столбец, содержащий минимальный элемент, помечается номером строки, где этот элемент находится. Элементуw43присваивается сколь угодно большое значение. В непомеченных столбцах 3-й и 4-й строк находится минимальный элементw32=3. 2-й столбец, его содержащий, помечается номером 3-й строки. Элементуw23присваивается сколь угодно большоезначение. После этого шага матрица имеет вид, представленный в табл. 3.2.

Таблица 3.2

_ 333_

1 2 3 4 5

15 10 8 9

2 5 7 1

3 10 3 2 6

4 8 7 4

59 1 6 4

В непомеченных столбцах 2, 3 и 4-й строк находится минимальный элемент w25 =1. 5-й столбец помечается номером 2-й строки, где находится минимальный элемент. Элементуw52присваивается сколь угодно большое значение. На очередном шаге общего этапа в непомеченных столбцах 2, 3, 4 и 5-й строк находится минимальный элементw21=5. 1-й столбец помечается номером 2, элементуw12присваивается сколь угодно большое значение. Таблица после этого шага имеет вид, представленный в табл. 3.3

Таблица 3.3

23332

1 2 3 4 5

110 8 9

2 5 7 1

3 10 3 2 6

4 8 7 4

5 9 6 4

Все столбцы таблицы помечены, общий этап закончен.

На заключительном этапе выписывается последовательность вершин, ребра между которыми включаются в минимальное остовное дерево. Это ребра, соединяющие вершины 1-2, 2-3, 3-4, 2-5.

Вес остовного дерева равен 5+3+2+1=11. Полученное остовное дерево показано на рис.3.5.

5 3

1

2

Рис. 3.5. Кратчайший остов графа

Метод Краскала. По заданному графу (рис.3.4) составляется список ребер (см. табл. 3.4), который на предварительном этапе упорядочивается в порядке возрастания весов (табл. 3.5). Ребро № 7, имеющее минимальный вес, включается в искомое остовное дерево (рис. 3.6). Второе по весу ребро № 6 также включается в остов. Следующее по весу ребро № 1 включается в остовное дерево, так как оно не образует цикла с ребрами № 6 и 7 (рис. 3.6). Ребро № 5 с минимальным весом среди оставшихся не включается в остов, так как оно образует цикл с ребрами № 1, 6 и 7. Следующее по весу ребро № 10 включается в остов. Вес остова равен 11, а его структура совпадает со структурой остова, полученного методом Прима (рис. 3.5).

Таблица 3.4 Таблица 3.5

Вес

Начало

Конец

1

3

2

3

2

10

1

3

3

8

1

4

4

9

1

5

5

4

4

5

6

2

3

4

7

1

2

5

8

6

3

5

9

7

2

4

10

5

1

2

Вес

Начало

Конец

7

1

2

5

6

2

3

4

1

3

2

3

5

4

4

5

10

5

1

2

8

6

3

5

9

7

2

4

3

8

1

4

4

9

1

5

2

10

1

3

5 3

1 2

Рис. 3.6. Кратчайший остов графа на основе метода Краскала

Реализация алгоритма Краскала требует предварительной сортировки весов всех ребер. Алгоритм Прима не имеет этого недостатка.

Соседние файлы в папке ДМ