ищется вершина, ближайшая от всего построенного фрагмента дерева. Отсюда, в отличие от алгоритма Краскала, единственное строящееся поддерево последовательно наращивается до построения остова.
Основные принципы построения минимального связывающего дерева (или кратчайшей связывающей сети) при наличии ограничений на локальные степени вершин следующие.
В начале любая произвольная вершина соединяется с ближайшей соседней, образуя исходное поддерево. (Для определенности построения минимального дерева можно начинать с ребра, инцидентного первой вершине , или с минимального ребра). На каждом последующем шаге к строящемуся поддереву присоединяют очередное ребро минимально возможной длины, связывающее новую, еще не присоединенную вершину с одной из вершин поддеревьев , локальная степень которой .
Для реализации алгоритма составляют матрицу расстояний , элемент которой вычисляют по одной из формул (5.1) или (5.2). Просматривают элементы первой строки матрицы D и находят минимальный элемент. Пусть таким оказался элемент g-го столбца, тогда весь 1-й и g-й столбцы матрицы D исключаются из рассмотрения, а первое соединение проводится между точками и . Просматриваются 1-я и g-я строки матрицы с оставшимися элементами. Из элементов этих строк находится минимальный. Предположим, что им оказался элемент, принадлежащий j-му столбцу. Если этот элемент находится на пересечении с первой строкой, то точку соединяем с 1-й точкой (), если же он находится на пересечении с g-й строкой, то точку соединяем с g-й (), после чего из матрицы D исключаем все элементы j-го столбца. Просматриваются 1-я, g-я и j-я строки и т. д.
Выполнение ограничения на локальную степень вершин обеспечивается проверкой в каждой просматриваемой i-ой строке числа уже выбранных для построения минимального дерева элементов – . При все оставшиеся элементы i-й строки исключаются из рассмотрения, т.е. эта строка удаляется.
АЛГОРИТМ
1. Вычислить элементы матрицы расстояний по одной из формул – (5.1) или (5.2).
2. Найти минимальный элемент матрицы , где ; . Номера строки и столбца q и p, на пересечении которых он находится, определяют номера вершин и , соединяемых ребром.
3. Занести номера вершин во множество , построенное ребро – во множество .
4. Подсчитать локальные степени и , подлежащих соединению на данном шаге вершин и .
5. Проверить условие и . Индексы вершин, для которых это условие не выполняется, указывают номера строк матрицы D, которые необходимо исключить из рассмотрения.
6. Найти . Здесь , , т. е. среди еще не вошедших в дерево вершин отыскать вершину , минимально удаленную от некоторой вершины дерева .
7. Дополнить множества ; .
8. Проверить, все ли вершины графа соединены ветвями . Если условие выполняется, идти к 9, иначе – к 4.
Конец.
Расчетная часть.
Рис. 3.
Составляем матрицу длин:
Просматриваем все строки матрицы и выбираем элемент, являющийся минимальным. Помечаем его, локальные степени 1-й и 2-й вершин увеличиваем на единицу. Исключаем из рассмотрения (вычеркиваем) все элементы первого и второго столбцов. Соединяем m1 и m2.
Просматриваем вторую и третью строки матрицы. Выбираем элемент d23=3,2; локальные степени 2-й и 3-й вершин увеличиваем на единицу.
Исключаем из рассмотрения элементы 3-го столбца. Соединяем m2 и m3.
Просматриваем вторую и третью строки матрицы. Выбираем элемент d25=3.2; локальные степени 2-й и 5-й вершин увеличиваем на единицу.
Исключаем из рассмотрения элементы 5-го столбца и 2-й строки (к 2-й вершине m подключено уже три ребра).
Соединяем m2 и m5.
Просматриваем первую и третью строки матрицы. Выбираем элемент d34=3.2. Соединяем m3 и m4.
Рис. 4.
Минимальное связывающее дерево, полученное в результате решения, приведено на рис.4
Множество ребер в нем R={r12, r23, r25, r34}=4=(n-1). Суммарная длина его ребер L равна 12.4
Вывод: Для обоих алгоритмов получили одинаковые графики и суммарную длина его ребер L=25
Оба рассмотренных алгоритма позволяют при выполнении соответствующих
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.