русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Остовное дерево связного графа


Дата добавления: 2015-07-23; просмотров: 3839; Нарушение авторских прав


 

Пусть G – некоторый связный граф. Дерево, множество вершин которого совпадает с множеством вершин графа G, а ребра являются ребрами графа G, называется остовным деревом графа G. Иными словами, остовное дерево графа G – это его подграф, содержащий все вершины и являющийся деревом.

 

Пример.На рис. 2 представлен граф с пятью вершинами и восемью ребрами. Четыре выделенные ребра (вместе с пятью вершинами) составляют остовное дерево этого графа. Остовное дерево определено неоднозначно.


 

Рис. 2

На рис. 3 выделены ребра, составляющие еще одно остовное дерево того же графа (заметим, что на этом рисунке невыделенные ребра также составляют остовное дерево).

 

 

Рис. 3

 

В прикладном плане задачу нахождения остовного дерева можно понимать как поиск системы связей между заданными точками без ненужного дублирования.

 

Построение остовного дерева. Остовное дерево T графа G можно сформировать следующим образом. Сначала берем в качестве T произвольную вершину графа G. Далее последовательно наращиваем дерево T в соответствии со следующим правилом: если на графе G имеется ребро, соединяющее вершины u и v такие, что u содержится в T, а v


 

 

нет, добавляем к T это ребро вместе с вершиной v. Покажем, что при этом граф Т остается деревом. Во-первых, каждая добавляемая вершина связана с одной из уже входящих в T, так что добавление новых вершин и ребер оставляет граф T связным. Далее, в начальный момент граф T содержит одну вершину и не имеет ни одного ребра. Затем на каждом шаге построения число его вершин и число ребер увеличивается на единицу. Таким образом, число вершин графа T на единицу превосходит число его ребер. Следовательно, граф T является деревом. На некотором шаге дальнейшее расширение T окажется невозможным. Покажем, что в этом случае T представляет собой остовное дерево графа G, т.е. все вершины графа G попали в T. Обозначим через T’ граф, который содержит все вершины графа G, не попавшие в T, и все соединяющие их ребра. На графе G нет ребер, которые имели бы одну концевую вершину в T, а другую в T’. Так как граф G связный, T’ не может быть непустым.



 

Пусть n – число вершин, а m – число ребер графа G. Любое его остовное дерево T имеет n вершин и n – 1 ребро. Таким образом, остовное дерево получается отбрасыванием m n + 1 ребер графа G. Число (G) = m n + 1 называют цикломатическим числом графа G.

Остовное дерево графа G может быть получено последовательным удалением (G) «лишних» ребер: на каждом


 

 

шаге можно отбросить любое ребро, если это не ведет к нарушению связности графа.

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

Пусть G – связный нагруженный граф. Обозначим через c(T) стоимость произвольного подграфа T графа G. Если граф T связный, содержит все вершины графа G и имеет минимальную стоимость среди всех подграфов графа G, обладающих этими двумя свойствами, то T является остовным деревом. В самом деле, если бы граф T содержал цикл, то можно было бы отбросить, по крайней мере, одно ребро и тем самым уменьшить стоимость T.

Опишем алгоритм построения остовного дерева минимальной стоимости. Он получается небольшим видоизменением алгоритма построения остовного дерева связного графа. Сначала берем в качестве T вершину графа G, из которой выходит ребро минимальной стоимости. Далее, пока


 

 

это возможно, последовательно наращиваем дерево T: из всех ребер графа G, соединяющих вершины uT и vT, выбираем ребро минимальной стоимости и добавляем к T это ребро вместе с вершиной v. Полученное в результате исполнения этого алгоритма остовное дерево будет иметь минимальную стоимость.

Пример.На рис. 4 выделено остовное дерево минимальной стоимости. Его стоимость равна 6. Остовное дерево, представленное на рис. 2, при тех же оценках ребер имеет стоимость 8, остовное дерево на рис. 3 – стоимость 8, невыделенные ребра на рис. 3 составляют остовное дерево

стоимости 10.

 

3

 

1 2

 

3 3

 

 

2 1

 

 

 

Рис. 4

 

 



<== предыдущая лекция | следующая лекция ==>
Общее понятие дерева | Ориентированные и упорядоченные деревья


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.15 сек.