- •Виды графов
- •Изоморфизм
- •Матричное задание графа
- •Свойства матрицы смежности
- •Операции над графами
- •Достижимость и связность
- •Матрицы достижимости и контрдостижимости
- •Нахождение сильных компонент
- •Базы и антибазы
- •Построение компонент связности в неориентированном графе
- •Конденсация графа
- •Построение компонент связности в ориентированном графе
- •Система независимых циклов
- •Дерево. Остов граф
- •Процесс восстановления дерева по набору
- •Алгоритм построения произвольного остова
- •Определение минимального остова
- •Алгоритм построения системы независимых циклов графа
- •Определение кратчайшего пути на графе методом Дейкстры
- •Модификация Форда
- •Алгоритмы поиска всех кратчайших путей
- •Алгоритм Флойда
- •Алгоритм Флойда
- •Алгоритм Данцига
- •Алгоритм Данцига
- •Раскраска
- •Метод построения функции Гранди на графе
- •Свойства хроматического числа
- •Гамильтоновы пути, контуры и задача Коммивояжера
- •Метод Роберта и Флореса (перебор-метод для орграфов)
- •Применение метода ветвей и границ к решению задачи Коммивояжера.
- •Потоковые алгоритмы
- •Алгоритм поиска увеличивающего пути
- •Алгоритм поиска максимального потока
- •Алгоритм Форда и Фалкерсона
- •Модификация алгоритма поиска максимального потока при нескольких источниках и стоках
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритмы построения покрывающих деревьев
- •Алгоритм построения покрывающего дерева славик?!! последняя :-(
Метод Роберта и Флореса (перебор-метод для орграфов)
Метод работает с путём, непрерывно продлеваемым до тех пор, пока либо получим Гамильтонов контур, либо ясно, что мы его не получим.
Строят M = {mij} k×n, где n – число вершин, k – наибольшая полустепень исхода вершины. Элемент mij представляет собой вершину (например (x, q)), для которой в графе G существует дуга (xj, xq). Вершины (x, q) во множестве Г(xj) можно упорядочить произвольно, образовав элементы j-ого столбца матрицы М.
Некоторая вершина (например, x1) выбирается в качестве отправной и образуется первый элемент множества S, в котором хранятся уже найденные вершины строящегося пути. К множеству S добавляется первая вершина (например, x2) из столбца x1, затем к множеству S добавляется первая возможная вершина (пусть x3) из столбца x2 и т.д.
Под “возможной” вершиной мы понимаем вершину, ещё не принадлежащую множеству S.
Существует две причины, препятствующие включению некоторой вершины на шаге r в S:
B столбце xr нет возможной вершины;
Путь, определяемый последовательностью вершин из множества S, имеет длину (n-1), т.е. является Гамильтоновым.
В этом случае:
В графе G существует дуга (xr, x1) и поэтому Гамильтонов контур может быть найден;
Дуга (xr, x1) не существует и не может быть получен Гамильтонов контур.
В случае 1 и 2б) следует прибегнуть к операции возвращения, 2а) – можно распечатать результат. Возвращение состоит в удалении последней включённой вершины xr из множества S.
и добавлений к множеству S
первой возможной вершины следующей за
хr в столбце
хr-1
матрицы М.
Если не существует никакой возможной
вершины в столбце
,
делается следующий шаг возвращения и
т.д.
Поиск заканчивается в том случае, когда множество S состоит только из вершины x1 и не существует никакой возможной вершины в столбце х1, которую можно добавить к множеству S, потому что следующий шаг возвращения делает множество S пустым. Таким образом, можно найти все Гамильтоновы контуры.
Пример: применение алгоритма Роберта и Флореса.
Множество S |
Комментарии |
|
1 |
|
Добавляем первую возможную
вершину из множества
|
2 |
|
Добавляем первую возможную
вершину из множества
|
3 |
|
Добавляем первую возможную
вершину из множества
|
4 |
|
Добавляем первую возможную
вершину из множества
|
5 |
|
В множестве
|
6 |
|
В множестве нет возможных вершин «возвращение» |
7 |
|
В множестве нет возможных вершин «возвращение» |
8 |
|
Добавляем первую возможную вершину из множества |
9 |
|
Добавляем первую возможную
вершину из множества
|
10 |
|
Добавляем первую возможную вершину из множества |
11 |
|
Добавляем первую возможную вершину из множества |
12 |
|
Гамильтонов контур, так
как дуга
|
13 |
|
В множестве нет возможных вершин «возвращение» |
14 |
|
В множестве нет возможных вершин «возвращение» |
15 |
|
Добавляем первую возможную вершину в множество |
16 |
|
Добавляем первую возможную вершину в множество |
17 |
|
Добавляем первую возможную вершину в множество |
18 |
|
Гамильтонов контур, так
как дуга
|
19 |
|
Нет возможных вершин «возвращение» |
20 |
|
Нет возможных вершин «возвращение» |
21 |
|
Нет возможных вершин «возвращение» |
22 |
|
Нет возможных вершин «возвращение» |
23 |
|
Нет возможных вершин «возвращение» |
24 |
|
|
Конец поиска, в результате которого мы нашли два Гамильтоновых контура.
