Алгоритмы сканирования и обхода Лекция 3. Алгоритм сканирования графа Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s,

Презентация:



Advertisements
Похожие презентации
Остовные деревья Лекция 4. Задача «Минимальное остовное дерево» Дано: Граф G, веса c: E(G) R. Найти остовное дерево в G наименьшего веса или определить,
Advertisements

Графы Лекция 2. Графы Неориентированным графом (графом) называется тройка (V, E, ), где V и E конечные множества и {X V : | X | = 2}. Ориентированным.
M-чередующаяся декомпозиция Лекция 10. Нечетная декомпозиция Теорема 9.7 (Lovász [1972] ) Граф является фактор-критическим тогда и только тогда, когда.
Алгоритм Эдмондса Лекция 11. Идея алгоритма Эдмондса Пусть есть некоторое паросочетание M, построим M-чередующийся лес F. Начинаем с множества S вершин.
Паросочетания в двудольных графах Лекция 8. Паросочетание Паросочетанием в графе G называется множество попарно несмежных ребер.
Потоки в сетях Теорема о максимальном потоке и минимальном разрезе Лекция 6.
Матроиды Лекция 12. Введение Даны система множеств (E, F ), то есть конечное множество E, F 2 E и стоимостная функция c : F R, найти элемент из F, стоимость.
Фактор-критические графы Лекция 9. Необходимость Необходимое условие для графа иметь совершенное паросочетание – это четное число вершин в каждой компоненте.
Кратчайшие пути Лекция 5. Задача «Кратчайший путь» Дано: Орграф G, веса c: E(G) R и две вершины s, t V(G). Найти s-t-путь минимального веса.
V-множество вершин, E- множество ребер Граф - G(V, Е). Л. Эйлер 1736 г. G(V, Е, f) V,E – множества, отображение инциденции f: Е V&V множества Е в V&V Основы.
Двусвязность Лекция 14. Связность компонент Граф G называется k-связным (k 1), если не существует набора из k-1 или меньшего числа узлов V` V, такого,
Теория графов. Теория графов – обширный самостоятельный раздел дискретной математики. Используется при проектировании компьютерных сетей, трубопроводов,
Линейное программирование Задача теории расписаний.
1 Основные понятия теории графов Леонард Эйлер, 1736 г. Кирхгоф – электрические цепи Кэли – органические изомеры Гамильтон – головоломки Д.Кениг, 1936.
Маршруты на графах Нахождение компонент связности Поиск маршрутов, удовлетворяющим определённым требованиям Кратчайшие маршруты.
Лекция 9 Отношения, графы Определения. Определение. Пусть а и b объекты. Через (а, b) обозначим упорядоченную пару, состоящую из объектов а и b, взятых.
Введение в теорию графов. ЗАДАЧА ПРОКЛАДКИ КОММУНИКАЦИЙ
ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ И ЕГО ЭЛЕМЕНТОВ. ГРАФОМ G = (V, X) НАЗЫВАЕТСЯ ПАРА ДВУХ КОНЕЧНЫХ МНОЖЕСТВ: МНОЖЕСТВО ТОЧЕК И МНОЖЕСТВО ЛИНИЙ, СОЕДИНЯЮЩИХ.
Раскраски графов Раскраска вершин Пусть Г (V,E,Ф) – граф, раскраска вершин Г в n цветов – отображение f : V {1,2,…,n } Правильная раскраска вершин графа.
Теория графов Основные определения. Задание графов Графический способ – Привести пример графического задания графа, состоящего из вершин А, В и С, связанных.
Транксрипт:

Алгоритмы сканирования и обхода Лекция 3

Алгоритм сканирования графа Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s, и множество T E(G) такое, что (R,T) ордерево с корнем в s (дерево). 1) Set R := {s}, Q := {s} and T := ø. 2) If Q = ø then stop, else выбрать v Q. 3) Выбрать w V(G) \R с e=(v,w) E(G). If нет такой w then Q := Q\{v} и go to 2. 4)Set R := R {w}, Q := Q {w} и T := T {e}. Go to 2.

Связность Предложение 3.1 Алгоритм сканирования графа находит решение.

Доказательство (для орграфа) По построению (R,T) ордерево с корнем в s. Предположим, что существует w V(G)\R, достижимая из s. Пусть P s-w-путь из s в w, и (x,y) дуга в P, такая что x R и y R. Так как x была добавлена в R, то она была добавлена в Q, на каком-то шаге алгоритма. Алгоритм не остановится пока не удалит x из Q. По шагу 3 это возможно только если нет дуги (x,y) с y R.

Матрица инцидентности Матрицей инцидентности графа G называется матрица A=( a v,e ) v V(G),e E(G), где Матрицей инцидентности орграфа G называется матрица A=( a v,e ) v V(G),e E(G), где

Матрица смежности Матрица смежности простого графа G 0-1- матрица A=( a v,w ) v,w V(G) с a v,w =1 тогда и только тогда, когда (v,w) E(G). Матрица смежности удобна, когда граф плотный, то есть имеет Θ(n 2 ) ребер.

Разреженные графы (O(n) ребер) Список ребер с указанием его граничных точек. Сопоставим каждой вершине число от 1 до n. (2m + 1)log n = O(m log n)

Лист смежности Сопоставим каждой вершине список ее инцидентных ребер. Для орграфа сопоставим каждой вершине два списка: список входящих в нее ребер и список исходящих из нее ребер. Такая структура данных называется листом смежности. Для прямого доступа к списку каждой вершины заведем указатели на начало списка (2n log m) O(m log n + n log m)

Время работы алгоритма сканирования графа Предложение 3.2 Алгоритм сканирования графа требует O(m+n) элементарных операций. Связные компоненты графа могут быть найдены за линейное время.

Алгоритм сканирования графа Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s, и множество T E(G) такое, что (R,T) ордерево с корнем в s (дерево). 1) Set R := {s}, Q := {s} and T := ø. 2) If Q = ø then stop, else выбрать v Q. 3) Выбрать w V(G)\R с e=(v,w) E(G). If нет такой w then Q := Q\{v} и go to 2. 4)Set R := R {w}, Q := Q {w} и T := T {e}. Go to 2.

Поиск ? В каком порядке выбирать вершины на шаге 3 ? Поиск в глубину (DFS-процедура) Выбираем v Q, последнюю из добавленных в Q. Другими словами, Q рассматривается как LIFO-стек (последний зашел, первый вышел). Поиск в ширину (BFS-процедура) Выбираем v Q, первую из добавленных в Q. Здесь Q рассматривается как FIFO-очередь (первый зашел, первый вышел). Дерево (R,T) построенное DFS -процедурой (resp. BFS - процедурой ) называется DFS-дерево (resp. BFS-дерево).

BFS-дерево Предложение 3.3 BFS-дерево содержит кратчайший путь из s к каждой вершине, достижимой из s. Величина dist G (s,v) для всех v V(G) может быть определена в линейное время.

Алгоритм сканирования графа-BFS Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s, и множество T E(G) такое, что (R,T) ордерево с корнем в s (дерево). 1) Set R := {s}, Q := {s} and T := ø, l(s):=0. 2) If Q = ø then stop, else выбрать v Q. 3) Выбрать w V(G) \R с e=(v,w) E(G). If нет такой w then Q := Q\{v} и go to 2. 4)Set R := R {w}, Q := Q {w} и T := T {e} l(w):= l(v) +1. Go to 2.

Доказательство Предложения 3.3 l(v) = dist (R,T) (s,v) Пусть v текущая просматриваемая вершина (выбранная на шаге 2). Не существует w R с l(w) > l(v) + 1. Предположим, что после завершения работы алгоритма существует w V(G) c dist (G) (s,w) < dist (R,T) (s,w). Пусть w лежит на кратчайшем расстоянии от s в G среди всех вершин с таким свойством. Пусть P кратчайший s-w-путь в G и e = {v,w} последнее ребро в P. Тогда dist (G) (s,v) = dist (R,T) (s,v) и e T. Кроме того, по предположению l(w) = dist (R,T) (s,w) > dist (G) (s,w) = =dist (G) (s,v) + 1= dist (R,T) (s,v) + 1 = l(v) + 1. Следовательно w R, когда v удаляется из Q. Противоречие шагу 3 алгоритма.

Алгоритм поиска сильно связных компонент Input: Орграф G. Output: Функция comp: V(G) N, указывающая принадлежность вершины к сильно связной компоненте. 1) Set R := ø. Set n:= 0. 2) For all v V(G) do: If v R then Visit1(v). 3) Set R := ø. Set K := 0. 4) For i :=|V(G)| down to 1 do: If - 1 (i) R then K := K+1 and Visit2( - 1 (i)).

Алгоритм поиска сильно связных компонент (2) Visit1(v) 1) Set R := R {v}. 2) For all w V(G) \ R с (v,w) E(G) do Visit1(w). 3) Set n := n +1, (v) := n и - 1 (N) := v. Visit2(v) 1) Set R := R {v}. 2) For all w V(G) \ R с (w,v) E(G) do Visit2(w). 3) Set comp(v) := K.

Пример a b g c d e f a b (1) g c d e f a g c d (3) e (2) f a (6) b (1) g (5) c (7) d (3) e (2) f (4) a (6) b (1) g (5) c (7) d (3) e (2) f (4)

Сильная связность Теорема 3.4 Алгоритм поиска сильно связных компонент находит сильно связные компоненты в линейное время. a b g c d e f

Эйлеров граф Определение 3.5 Эйлеровым обходом в графе G называется замкнутый обход, содержащий все ребра. Граф G называется Эйлеровым если степень каждой вершины четна. Орграф G Эйлеров, если – v + v для всех v V(G). Теорема 3.6 (Эйлер [1736]) Граф G имеет Эйлеров обход тогда и только тогда, когда он связный и Эйлеров.

Алгоритм Эйлера Input: Связный Эйлеров граф G. Output: Эйлеров обход W в G. Выбрать произвольную v 1 V(G). Return W := Euler(G, v 1 ) Euler(G, v 1 ). 1) Set W := v 1 и x := v 1. 2) If X = then go to 4. Else пусть e X, скажем e = {x,y}. 3) Set W := W, e, y и x := y. Set E(G := E(G \{e } и go to 2. 4) Let v 1, e 1, v 2, e 2,…, v k, e k, v k+1 be the sequence W. For i := 1 to k do: Set W i := Euler(G, v i ). 5) Set W := W 1, e 1, W 2, e 2, …, W k, e k, v k+1. Return W

Алгоритм Эйлера(2) Теорема 3.7 Алгоритм Эйлера находит решение за O(m+n) элементарных операций, где n V(G) и m E(G)

Доказательство (индукция по |E(G)|) E(G) = ø (очевидно) Так как степени вершин четные, то v k+1 =x=v 1, когда выполняется шаг 4. W замкнутый обход. Пусть G граф G на этот момент. В G также степени всех вершин четны.

Биразбиение Биразбиением графа G называется разбиение множества вершин V(G)=A B так что подграфы индуцированные на A и B оба пустые. Граф называется двудольным, если для него существует биразбиение.

Теорема Кёнига Предложение 3.8 (König[1916]) Граф является двудольным тогда и только тогда, когда он не содержит циклов нечетной длины. Существует линейный алгоритм, который по данному графу находит либо его биразбиение, либо цикл нечетной длины.

Достаточность Пусть G связный. Выберем произвольную вершину s V(G). Применим поиск в ширину и найдем расстояние от s до остальных вершин. Пусть T будет полученное BFS-дерево. A := {v V(G): dist G (s, v) четно}. B := {v V(G): dist G (s, v) нечетно}. e={x,y} ребро в G[A] или в G[B]. x-y-путь в T вместе с e дают нечетный цикл. Таких ребер в G[A] и в G[B] нет! A B биразбиение, G двудольный.

Упражнение 3.1 Пусть G простой граф. Доказать, что G или его дополнение связно.

Упражнение 3.2 Доказать, что любой разрез в неориентированном графе является непересекающимся объединением минимальных разрезов

Упражнение 3.3 Дан граф или орграф G. Показать, что существует линейный алгоритм находящий цикл или показывающий, что его не существует.

Упражнение 3.4 Пусть G неориентированный граф, C цикл в нем, а D разрез. Показать, что |E(C)D| четно.