
LECT10
.DOCЛекция №10
Задача поиска маршрутов в графе (путей в орграфе)
Алгоритм Тэрри поиска маршрута в
связном графе, соединяющего вершины
и
.
Правила.
1) Идя по произвольному ребру всегда отмечать направление его прохождения.
2) Исходя из некоторой вершины
всегда следовать по тому ребру, которое
не было пройдено или было пройдено в
противоположном направлении.
3) Для всякой вершины
отмечать ребро по которому в вершину
попали
в первый раз
4) Исходя из некоторой вершины
идти по первому заходящему в
ребру лишь тогда, когда нет других
возможностей.
Найти маршрут
соед.
+
и
+, значит
прошли
+
+
Замечание: из полученного пути можно выделить простую цепь.
Поиск оптимального пути (маршрута) (т.е пути с наименьшим числом дуг или ребер)
Утверждения:
1) каждый минимальный путь (маршрут) является простой цепью
Доказательство.
Пусть
минимальный путь в орграфе D,
не являющийся простой цепью. Тогда
i и j такие,
что
и vi=vj.
Рассмотрим путь
.
Его длина меньше, чем ,
что противоречит предположению.
2) (о минимальности подпути минимального
пути). Пусть
- минимальный путь (маршрут) в орграфе
D (в графе G).
Тогда для i
и j таких, что
путь (маршрут)
тоже является минимальным.
Доказательство. Предположим, что
не является оптимальным, тогда
т.ч. он короче чем
.
Если в
вошли вершины из
,
то этот путь не является простой цепью.
Тогда исключив из него циклы, можно
найти еще более короткий путь
не является минимальным. Пришли к
противоречию.
Пусть
орграф
-
некоторая вершина
.
Обозначим
-
образ вершины
;
-
прообраз вершины
;
-
образ множества вершин V1
;
прообраз множества вершин V1.
Для неориентированного графа образ и прообраз совпадают.
Пусть
граф
.
Обозначим
-
образ вершины
;
-
образ множества вершин V1.
Пусть
орграф с n2
вершинами и v,w
(vw)
– заданные вершины из V
Алгоритм поиска минимального пути из
в
в орграфе D
(алгоритм фронта волны).
1) Помечаем вершину
индексом 0, затем помечаем вершины
образу вершины
индексом 1. Обозначаем их FW1
(v). Полагаем k=1.
2) Если
или k=n-1, и
одновременно
то вершина
не достижима из
.
Работа алгоритма заканчивается.
В противном случае продолжаем:
3) Если
,
то переходим к шагу 4.
В противном случае мы нашли минимальный
путь из
в
и его длина =k. Последовательность
вершин
есть этот минимальный путь. Работа завершается.
4) Помечаем индексом k+1
все непомеченные вершины, которые
принадлежат образу множества вершин c
индексом k. Множество
вершин с индексом k+1
обозначаем
.
Присваиваем k:=k+1
и переходим к 2).
Замечания
Множество
называется фронтом волны kго
уровня.
Вершины
могут быть выделены неоднозначно, что
соответствует случаю, если
несколько min путей из
в
.
Пример 1. Дана матрица смежности. Найти минимальный путь из v1 в v6.
Исх\вход |
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
1 |
0 |
|
1 |
0 |
0 |
1 |
1 |
1 |
|
1 |
1 |
0 |
1 |
1 |
1 |
|
0 |
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
1 |
0 |
0 |
|
1 |
1 |
1 |
1 |
1 |
0 |
|
0 |
2 |
2 |
1 |
1 |
3 |
Пример 2. Дан орграф.
1
2
3
4
5
6
Задание. Найти минимальный путь из v1 в v6.
Расстояния в графе
Пусть
-
граф (или псевдограф).
Расстоянием между вершинами
наз. min длина пути между
ними.
.
в орграфе, если не
пути
Расстояние в графе удовл. аксиомам метрики
1)
,
2)
(не орграф)
3)
4)
в связном графе (не орграфе).
Пример ???
|
1 |
2 |
3 |
4 |
5 |
6 |
1 |
0 |
2 |
2 |
1 |
1 |
3 |
2 |
1 |
0 |
1 |
1 |
1 |
1 |
3 |
1 |
1 |
0 |
1 |
1 |
1 |
4 |
2 |
1 |
1 |
0 |
1 |
2 |
5 |
1 |
1 |
1 |
1 |
0 |
2 |
6 |
1 |
1 |
1 |
1 |
1 |
0 |
Из 1 в 6.
Из 4 в 5
опр || Пусть
связный граф (или псевдограф).
Величина
- называется диаметром графа G.
Пусть
.
Величина
- называется максимальным удалением
(эксцентриситетом) в графе G
от вершины
.
Радиусом графа G наз.
величина
Любая верш.
такая, что
наз. центром графа G.
Матрица смежности
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
|
1 |
0 |
1 |
1 |
0 |
|
0 |
1 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
0 |
0 |
0 |
1 |
0 |
Матрица расстояний
|
|
|
|
|
|
|
0 |
1 |
2 |
2 |
3 |
|
1 |
0 |
1 |
1 |
2 |
|
2 |
1 |
0 |
1 |
2 |
|
2 |
1 |
1 |
0 |
1 |
|
3 |
2 |
2 |
1 |
0 |
Центры в вершинах 2,3,4
Примеры.
1
2
3
4
5
6
Матрица смежности
|
1 |
2 |
3 |
4 |
5 |
6 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
2 |
1 |
0 |
0 |
1 |
0 |
1 |
3 |
0 |
0 |
0 |
0 |
1 |
1 |
4 |
0 |
1 |
0 |
0 |
1 |
0 |
5 |
1 |
0 |
1 |
1 |
0 |
0 |
6 |
0 |
1 |
1 |
0 |
0 |
0 |
Матрица расстояний
|
1 |
2 |
3 |
4 |
5 |
6 |
1 |
0 |
1 |
2 |
2 |
1 |
2 |
2 |
1 |
0 |
2 |
1 |
2 |
1 |
3 |
2 |
2 |
0 |
1 |
1 |
1 |
4 |
2 |
1 |
1 |
0 |
1 |
2 |
5 |
1 |
2 |
1 |
1 |
0 |
2 |
6 |
2 |
1 |
1 |
2 |
2 |
0 |
,
центр - все вершины