Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Примеры решения задач. Пример 1. Пусть задан граф g = (x, u), изображенный на рис

Читайте также:
  1. B. Принятия оптимального управленческого решения по наиболее важным вопросам деятельности на рынке.
  2. I. 1.1. Пример разработки модели задачи технического контроля.
  3. I. 3.1. Двойственная задача линейного программирования.
  4. I.2. Структура оптимизационных задач
  5. I.5.3. Подготовка данных для задачи линейного программирования.
  6. I.5.4. Решение задачи линейного программирования.
  7. I.5.5. Просмотр и анализ результатов решения задачи.

Пример 1. Пусть задан граф G = (X, U), изображенный на рис. 16.41,а. Привести примеры произвольного и покрывающего деревьев для заданного графа.

Ответ: Пример покрывающего дерева приведен на рис. 16.41,б. На 16.41,в,г приведены примеры выделения произвольных деревьев из исходного графа.

а исходный граф б покрывающее дерево

в произвольное дерево г произвольное дерево

Рис. 16.41. Граф G и его деревья: а – исходный граф; б – покрывающее дерево; в – произвольное дерево; г – произвольное дерево.

Пример 2. Записать все покрывающие деревья для полного графа на три вершины, заданного на рис. 16.42,а.

Решение: согласно теореме Кэли число покрывающих деревьев полного графа равно: t = n n - 2.

Таким образом, подставив в формулу число вершин заданного графа, получим результат t = 3 3 - 2 =31 = 3.

Из полученного результата следует, что для данного графа можно построить три покрывающих дерева как это показано на рис. 16.42,б.

а б

Рис. 16.42. Граф (а) и множество его покрывающих деревьев(б)

Пример 3. Пусть задан граф G = (X, U), изображенный на рис. 16.43,а. Построить кратчайшее покрывающее дерево (КПД), используя алгоритм Краскала.

Рис. 16.43. а Граф G

Решение: запишем треугольную матрицу смежности R заданного графа.

               
R =             .
           
           
           
           

1.1. Выбираем по матрице смежности минимальный элемент. Это ребро u 25. Заносим его в массив M = { u 25}.

1.2. Выбранное ребро единственное, поэтому переходим к пункту 3.

1.3. |M| ¹ n - 1, переходим к пункту 1.

2.1. Выбираем ребро u 35, заносим его в массив M = { u 25, u 35}.

2.2. Цикл не образуется, поскольку в массиве всего два ребра.

2.3. |M| ¹ n - 1, переход к пункту 1.

3.1. Выбираем ребро u 12, заносим его в список M = { u 25, u 35, u 12}.

3.2. Проверяем выбранные ребра. Цикл не образуется, поэтому переходим к пункту 3.

3.3. |M| ¹ n - 1, переходим к пункту 1.

4.1. Выбираем ребро u 24, заносим его в список M = { u 25, u 35, u 12, u 24}.

4.2. Проверяем выбранные ребра. Цикл не образуется, поэтому переходим к пункту 3.

4.3. Мощность |M| = 4. Так как 4 = 5 – 1, алгоритм закончен. Кратчайшее покрывающее дерево (КПД) построено (рис. 16.43,б). Его суммарный вес равен SКПД = 2 + 3 + 4 + 4 = 13.

 

б

Рис. 16.43. (б) Кратчайшее покрывающее дерево для графа G (рис. 6.43 а)

Пример 4. Построить КПД для графа G, изображенного на рис. 16.44, используя алгоритм Прима.

Рис. 16.44. Исходный граф

Решение

1.1. Выбираем произвольную вершину. Пусть это будет вершина x 1. Составляем список:

1.2. Из списка L1 выбираем ребро (1, 2) и включаем его в поддерево T’ =

={(1, 2)}.

1.3. Так как цикл не образуется, переходим к пункту 4.

1.4. Как видно |X’| ¹ |X|, следовательно, переходим к пункту 5.

1.5. Добавляем в список L1 ребра, инцидентные вершине x 2 и после переупорядочивания списка L1 получаем новый список L2.

.

2.2. Выбираем из списка L2 ребро (2, 3) и включаем его в поддерево T’ = {(1, 2); (2, 3)}.

2.3. Цикл не образуется, переход к пункту 4.

2.4. |X’| ¹ |X|, переходим к пункту 5.

2.5. Добавляем в список L ребра, инцидентные вершине x 3, и переупорядочиваем список. Переходим к пункту 2.

.

3.2. Из списка L3 выбираем ребро (3, 4) и заносим его в поддерево T’ = {(1, 2); (2, 3); (3, 4)}.

3.3. Цикл не образуется, переходим к пункту 4.

3.4. |X’| ¹ |X|, переходим к пункту 5.

3.5. Добавляем в список L ребра, инцидентные вершине x 4, и переупорядочиваем список. Ребро (1, 4) исключено из списка L4, так как оно образует цикл с уже выбранными ребрами. Переходим к пункту 2.

.

4.2. Из списка L4 выбираем ребро (4, 5) и включаем его в поддерево T’ = {(1, 2); (2, 3); (3, 4); (4, 5)}.

4.3. Цикл не образуется, переходим к пункту 4.

4.4. | X’| ¹ |X|, переходим к пункту 5.

4.5. Добавляем в список L ребра, инцидентные вершине x 5, и переупорядочиваем список. Ребро (2, 5) исключено из списка L5, т.к. оно образует цикл с уже выбранными ранее ребрами. Переходим к пункту 2.

.

5.2. Из списка L5 выбираем ребро (3, 6) и включаем его в поддерево T’ = {(1, 2); (2, 3); (3, 4); (4, 5); (3, 6)}.

5.3. Цикл не образуется, переход к пункту 4.

5.4. |X’| = |X|, переход к пункту 6.

5.6. Построено КПД (рис. 16.45): T’ = {(1, 2); (2, 3); (3, 4); (4, 5); (3, 6)} c суммарным весом равным SКПД = 2 + 5 + 1 + 3 + 4 = 15.

Работа алгоритма закончена.

Рис. 16.45. Кратчайшее покрывающее дерево

Пример 5. Для графа G r, заданного на рис. 16.46, построить кратчайшее покрывающее дерево.

Рис. 16.46. Задача построения дерева Штейнера

Решение: подсчитаем разность координат по обеим осям:

ось s: 10 - 1 = 9,

ось t: 9 - 2 = 7.

Перепад координат по оси t меньше, следовательно, проводим перпендикуляр к оси t.

Теперь определим точку, через которую мы проведем ось дерева. Поскольку число вершин слева и справа от предполагаемой оси равно, проводим перпендикуляр, к примеру, через точку с координатой t = 6. Таким образом, мы провели ось дерева Штейнера.

И теперь, соединив с полученной осью все вершины графа, не находящиеся на оси, мы получим в итоге дерево Штейнера (рис. 16.47). Суммарная длина дерева Штейнера находится путём простого сложения длин отрезков составляющих дерево:

Lå = 1 + 2 + 1 + 2 + 4 + 3 + 3 + 9 = 25.

Рис. 16.47. Дерево Штейнера

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ

1. Приведите механизмы определения деревьев в произвольном графе.

2. Приведите определение произвольного, покрывающего и кратчайшего покрывающего деревьев в графе.

3. Что в теории графов подразумевается под терминами “корень”, “ветвь”, “лес”?

4. Каким образом определяется число покрывающих деревьев в произвольном полном графе?

5. Сформулируйте задачу о лабиринте.

6. Приведите теорему для определения дерева.

7. Запишите теорему Кэли и следствие из нее.

8. Приведите теорему о каркасе минимального веса в графе.

9. В чем заключаются алгоритмы Краскала и Прима?

10. Приведите леммы о деревьях Штейнера.


Дата добавления: 2015-10-26; просмотров: 159 | Нарушение авторских прав


Читайте в этой же книге: Алгоритм Форда | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | Эйлеровы и гамильтоновы цепи и циклы | Связь между эйлеровыми и гамильтоновыми графами | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | Алгоритм Робертса ─ Флореса | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | Геометрический метод решения | Расстояния на графах | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ |
<== предыдущая страница | следующая страница ==>
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ| Цикломатическое и хроматическое числа графа

mybiblioteka.su - 2015-2024 год. (0.021 сек.)