Опубликован: 25.07.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 12:
Каркасы и изоморфизм деревьев
Аннотация: Каркас неориентированного графа. Нахождение каркасов в графе.
Алгоритм Краскала. Изоморфизм деревьев.
Ключевые слова: Оптимальный каркас, взвешенный граф, Произведение, оптимальный каркас, связывающая сеть, связывающая сеть, алгоритм, поиск в ширину, Два графа, изоморфны, смежность, Инвариант графа G, значение, граф, дерево, инцидентор, предикат, ребро, отношение, Отношение деревьев рефлексивно, симметрично, транзитивно, эквивалентность, Два корневых дерева называются изоморфными, функция, множество вершин, отображение, автоморфизмом дерева, группа дерева, число симметрий дерева, группа, Два плоских дерева называются изоморфными, Два помеченных дерева называются изоморфными
Каркас неориентированного графа
Оптимальным каркасом взвешенного графа называется каркас, минимизирующий некоторую функцию от весов входящих в него ребер. Чаще всего в качестве такой функции выступает сумма весов ребер, реже — произведение. Оптимальный каркас еще называют кратчайшей связывающей сетью для данного графа.
Задача о построении кратчайшей связывающей сети встречается в различных приложениях достаточно часто.
Нахождение каркасов в графе
Алгоритм нахождения каркаса на основе поиска в глубину.
Вход. Связный граф , заданный списками смежности ЗАПИСЬ . Выход. Каркас графа . Процедура WGD ( : граф; : вершина) //поиск в глубину, с нахождением ребер дерева; переменные НОВЫЙ, ЗАПИСЬ, — глобальные// Шаг 1. НОВЫЙ ; Шаг 2. Для (ЗАПИСЬ цикл Шаг 3. если НОВЫЙ[ ] то // — новое ребро// Шаг 4. ; Шаг 5. ; все все; Шаг 6. Начало //главная программа// Шаг 7. Для цикл НОВЫЙ ; Шаг 8. //множество найденных к этому моменту ребер// Шаг 9. ; // — произвольная вершина графа// все конец.
Алгоритм нахождения каркаса на основе поиска в ширину.
Вход. Связный граф , представленный списками смежности ЗАПИСЬ , . Выход. Каркас графа . Процедура КАРКАС( : граф; : вершина) Шаг 1. для цикл НОВЫЙ[u]=истина все; //инициализация// Шаг 2. ; // — множество найденных к этому моменту ребер// Шаг 3. ОЧЕРЕДЬ ; ОЧЕРЕДЬ ; //корень каркаса// Шаг 4. НОВЫЙ ; Шаг 5. Пока ОЧЕРЕДЬ цикл Шаг 6. ОЧЕРЕДЬ; Шаг 7. Для ЗАПИСЬ цикл Шаг 8. если НОВЫЙ то // — новое ребро// Шаг 9. ОЧЕРЕДЬ ; Шаг 10. НОВЫЙ ; Шаг 11. все все все все.
Алгоритм Краскала
Вход. Неориентированный граф с функцией стоимости ребер . Выход. Оптимальный каркас . Метод Процедура Оптимальный каркас ( : граф) Шаг 1. Шаг 2. Шаг 3. Построить очередь с приоритетами , содержащую все ребра из ; Шаг 4. Для всех из цикла добавить к все; Шаг 5. Пока цикл Шаг 6. Выбрать в ребро наименьшей стоимости; Шаг 7. удалить ( ) из ; Шаг 8. Если и принадлежат различным множествам и из Шаг 9. То заменить и на в : Шаг 10. добавить к все все все.
Пример.
Найдите оптимальный каркас для графа, приведенного на (рис.12.1).