Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3. Теория графов.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
492.03 Кб
Скачать
    1. Построение остовного дерева

Рассмотрим алгоритм построения остовного дерева. Следуя принятой в монографии [4] терминологии, обозначим термином "букет" множество вершин любого дерева, содержащегося в исходном графе G. Просматривая ребра исходного графа, будем каким-либо способом помечать их, например, окрашивая в синий и красный цвета.

Алгоритм содержит следующие шаги:

  1. Выбрать любое ребро, окрасить его в синий цвет. Сформировать букет, включив в него концевые вершины окрашенного ребра.

  2. Если все вершины исходного графа вошли в один букет, то синим цветом окрашено остовное дерево. Тогда перейти к шагу 5, иначе - к шагу 3.

  3. Выбрать любое неокрашенное ребро. Если неокрашенного ребра нет, то исходный граф не содержит остовного дерева. Тогда перейти к шагу 5, иначе - к шагу 4.

  4. Сделать выбор для вершин, инцидентных выбранному на шаге 3 ребру:

    1. если обе вершины принадлежат одному букету, то окрасить ребро в красный цвет;

    2. если ни одна из вершин не принадлежит ни одному из букетов, то окрасить ребро в синий цвет и сформировать новый букет;

    3. если одна вершина принадлежит одному из букетов, то окрасить ребро в синий цвет и включить вторую вершину в тот же букет;

    4. если две вершины принадлежат разным букетам, то окрасить ребро в синий цвет и слить два букета в один новый.

По окончании выбора перейти к шагу 2.

  1. Закончить выполнение алгоритма.

При решении прикладных задач часто приходится работать со взвешенным графом, каждому ребру {vi,vj} которого присвоена числовая характеристика w(i,j) - вес ребра. Это позволяет учитывать параметры реальной задачи (расстояние между пунктами, стоимость или время транспортировки и прочее). Весом графа называется сумма весов его ребер. Приведенный выше алгоритм позволяет строить остовное дерево минимального (максимального) веса. Для этого достаточно просматривать ребра исходного графа в порядке возрастания (убывания) их весов. Ребра одинакового веса просматриваются в произвольном порядке

Теорема 7. Алгоритм построения остовного дерева позволяет построить остовное дерево минимального веса, если такое дерево существует в данном графе.

▲ Пусть остовное дерево T построено по алгоритму, а дерево S0 является остовным деревом минимального веса. Обозначим через e1={u,v} первое из просмотренных в алгоритме ребер, которое входит в T и не входит в S0. Так как дерево S0 является остовным, то в силу теоремы 3 в S0 существует простая цепь, соединяющая вершины u, v. Эта цепь не содержит ребра e1. В силу теоремы 3 граф S0+e1 содержит цикл. В этот цикл входит ребро e1, а также некоторое ребро e2, которое содержится в S0, но не содержится в T. Рассматривая граф S1=S0+e1-e2, нетрудно убедиться, что перед нами новое остовное дерево с весом

w(S1)=w(S0)+w(e1)-w(e2). (8)

Так как S0 - дерево с минимальным весом, то

w(e1)-w(e2)≥0. (9)

Предположим теперь, что в алгоритме ребро e2 просматривалось раньше, чем e1. Так как e2 не было при этом включено в T, то e2 образует цикл вместе с ребрами, которые рассмотрены в алгоритме раньше и уже включены в T. Среди этих ребер, в силу сделанного предположения, нет ребра e1. Значит, все они входят в S0 и образуют в S0 цикл вместе с e2. Наличие этого цикла противоречит тому условию, что S0 - дерево. Следовательно, сделанное ранее предположение об очередности просмотра ребер e1 и e2 неверно; ребро e2 просматривалось в алгоритме не раньше, чем e1. Это означает, что

w(e2) ≥w(e1). (10)

Рассматривая совместно неравенства (9) и (10), приходим к равенству

w(e1) =w(e2),

из которого с учетом (8) следует, что

w(S1)=w(S0).

Последний результат означает, что S1 также является остовным деревом минимального веса. При этом S1 имеет с T на одно общее ребро больше, чем S0.

Повторяя сделанные рассуждения, построим далее остовное дерево S2 минимального веса, у которого еще на одно общее с T ребро больше, и так далее. За конечное число шагов получается последовательность остовных деревьев равного веса S0, S1, S2, …, T.

Так как w(S0)=w(T) и вес S0 минимальный, то T - остовное дерево минимального веса. ▲