Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Следующая теорема утверждает, что ²жадный² алгоритм Краскала всегда приводит к остову минимального веса ⇐ ПредыдущаяСтр 2 из 2 Теорема 10.1. При i<n-1 граф Тi+1 можно построить. Граф Тn-1 является остовом минимального веса во взвешенном графе <G,w>. Подграф Тi имеет ровно i рёбер и n вершин и потому при i < n-1 является несвязным. А так как граф G связен, то в нём есть по крайнеё мере одно ребро, не составляющее циклов с рёбрами графа Тi. Итак, нужное ребро ei+1 существует и граф Тi+1 можно построить. Рассмотрим граф Тn-1. Поскольку Тn-1 является (n, n-1)-графом без циклов, то по теореме 9.1 является деревом. Докажем, что Тn-1 - остов минимального веса. Предположим противное. Среди всех остовов графа G минимального веса выберем такой остов Т, который имеет с деревом Тn-1 максимальное число общих рёбер. Пусть e i = (а,в) ребро дерева Тn-1, не содержащееся в Т и имеющее минимальный номер среди рёбер дерева Тn-1, не входящих в Т (в процессе построения дерева Тn-1 его рёбра получили номера 1,2,…,n-1). В дереве Т есть простая (а,в)- цепь. Присоединив к ней ребро еi, получим цикл. В этом цикле есть ребро е, не входящее в дерево Тn-1 (иначе в Тn-1 был бы цикл). Заменив в дереве Т ребро е на еi, получим новый остов Т¢ = Т – е + еi. Но Т - остов минимального веса, следовательно, w(Т¢) = w(T) + w(ei) - w(e) ≥ w(T), т.е. w( ei) ≥ w(e) (1). С другой стороны, присоединяя ребро е к Тi-1 (при i=1 полагаем Тi-1 = Оn), мы не получим цикла, поскольку рёбра е1,е2,…, еi-1, е входят в дерево Т, и потому, если бы вес w(ei) был больше, чем w(e), мы взяли бы при построении дерева Тi ребро е вместо ei. Из (1) теперь следует, что w(ei)= w(e), w(Т¢)= w(Т). Итак, Т' - остов минимального веса. Число рёбер, общих для деревьев Т' и Тn-1, больше, чем число рёбер, общих для Т и Тn-1, что противоречит выбору дерева Т. Полученное противоречие и доказывает теорему. Теперь зная алгоритм, решим задачу. На каждом шаге будем строить ациклический подграф с 5 вершинами (n=5), значит будет n-1 = 4 шага (рис. 9.3). На первом шаге выбираем e1 = (1,5), на втором - e2 = (2,4), на третьем - e3 = (1,3) и на четвертом - e4 = (5,4). Рёбра (1,5), (2,4), (1,3), (4,5) составляют остов минимального веса. Вес остова Тn-1 равен: w(Тn--1) = 1+2+3+4 = 10. Таким образом, эта сеть дорог (рис.9.3 (4)) будет самой дешёвой и ее строительство обойдётся в 10 условных единиц.
Алгоритм Прима отличается от алгоритма Краскала только тем, что на каждом шаге строится не просто ациклический подграф, а дерево: 1. Выбираем ребро e1 = (a,b) минимального веса и строим дерево D1 = e1. 2. Если дерево Di, содержащее i ребер порядка i + 1, уже построено, и i < n - 1, то среди ребер, соединяющих вершины этого дерева с вершинами графа G, не входящими в Di, выбираем ребро ei+1 минимального веса и строим дерево Di+1 = DiÈ ei+1 (рис.9.4). Для алгоритма Прима также верна теорема 10.1.
Теорема. Алгоритм Краскала строит минимальный остов (n,m)-графа G за время O(m×n). Доказательство: в алгоритме Краскала n - 1 шагов; на каждом шаге разыскивается ребро минимального веса из некоторого списка ребер, содержащего не более m ребер, поэтому число операций кратно m×n.
|