МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


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


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Каркаси (з'єднувальні дерева)





Нехай — простий зв'язний граф. Каркасом, або з'єднувальним деревом, графа називають його підграф, який являє собою дерево та містить усі вершини графа . Нехай граф має n вершин і m ребер. Щоб отримати каркас, можна використати процедуру вилучення ребер, які належать простим циклам. Очевидно, що потрібно вилучити ребер. Число називають циклома-тичним числом графа Із теореми 3.6 випливає, що . Цикломатичне число — це певною мірою числова характеристика зв'язності графа; цикломатичне число дерева дорівнює 0.

Побудова каркаса — поширена задача. Алгоритм, який полягає у вилученні ребер із простих циклів, неефективний для комп'ютерної реалізації. Для його виконання потрібно ідентифікувати прості цикли, а це складна задача. Ефективний із погляду комп'ютерної реалізації алгоритм побудови каркаса — це послідовний добір ребер у каркас. Це можна зробити за допомогою обходу графа як пошуком углиб, так і пошуком ушир. Під час виконання цих алгоритмів природним способом будують каркас (див. підрозділ 3.9, ребра каркаса позначено потовщеними лініями). Якщо до протоколу обходу графа додати че-тверртий стовпчик, то туди можна записувати ребра, які під час роботи алгоритму позначають потовщеною лінією, і, отже, включають у каркас.

 

Приклад 4.20. На рис. 4.34, а зображено каркас, який було одержано пошуком углиб, а на рис. 4.34, б — пошуком ушир. Початкова вершина в обох випадках — а.

а Рис. 4.34

 

ТЕОРЕМА 4.4. Нехай - каркас графа , побудований пошуком ушир, починаючи з вершини а. Тоді шлях з а до довільної вершини в - найкоротший шлях від до в графі G.

Доведення ґрунтується на аналізі алгоритму пошуку вшир у графі Пропонуємо виконати його як вправу.

Зауваження. Використавши для побудови дерева найкоротших шляхів від вершини алгоритм Дейкстри (уважаємо, що довжина кожного ребра дорівнює 1), отримаємо те саме дерево, що й за алгоритмом пошуку вшир. Проте складність цього алгоритму становить чи залежно від способу подання графа, а складність алгоритму пошуку вшир — , де — кількість вершин, — кількість ребер у графі . Проте алгоритм Дейкстри більш універсальний, він придатний для будь-яких додатних до-вжин ребер (а не тільки 1).

Тепер розглянемо одну важливу задачу, пов'язану з ідеєю оптимізації. Нехай — зв'язний зважений граф (див. підрозділ 3.8). Потрібно описати алгоритм побудови каркаса , у якому сума ваг ребер якнайменша (су-му беруть за всіма ребрами дерева ). Каркас називають мінімальним. Розв'язати цю задачу дає змогу алгоритм Краскала (J. Kruskal).

Алгоритм Краскала

Нехай — зв'язний зважений граф з вершинами та ребрами. Виконати такі дії.

1.Вибрати ребро яке має в графі найменшу вагу.

2.Визначити послідовність ребер ; на кожному кроці вибирати відмінне від попередніх ребро з найменшою вагою й таке, що не утворює простих циклів з уже вибраними ребрами. Одержане дерево з множиною ребер — мінімальний каркас графа .

Розглянемо одну з можливих реалізацій алгоритму Краскала.Крок 1. Упорядкувати множину ребер за зростанням ваг: .Крок 2. Утворити розбиття множини вершин на одноелементні підмножини: .

Крок 3. Вибирати таке чергове ребро з упорядкованої послідовності ребер, що його кінці містяться в різних множинах розбиття (це забезпечить відсутність простих циклів). Якщо вибрано ребро , то множини розбиття, які містять вершини та , об'єднують в одну множину.



Приклад 4.21. На рис. 4.35 зображено граф, ребра якого пронумеровано за зростанням ваг. Мінімальний каркас виділено потовщеними лініями. Процес відбору ребер наведено в табл. 4.4. Мінімальний каркас утворюють ребра .
Рис. 4.35

Крок 4. Якщо вже вибрано ребро (у такому разі всі підмножини розбиття об'єднаються в одну), то зупинитись, бо вибрані ребра утворюють мінімальний каркас. Інакше перейти до кроку 3.

 

Ребро Розбиття множини вершин Відбір ребра у мінімальний каркас
   

 

Алгоритм Краскала належить до жадібних [23]. Так називають алгоритми опти-мізації, які на кожному кроці вибирають найкращий із можливих варіантів.

 

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.