Теория графов

Post on 30-Dec-2015

62 views 4 download

description

Теория графов. Основные определения. Дуга. Пусть имеется множество вершин V={V 1 ,V 2 ,…,V n } и пусть на нем задано бинарное отношение Г ⊂ V × V , V i Г V j ↔( V i V j ) ∈ Г – эту пару назовем дугой U k. Пример. Неориентированные графы. - PowerPoint PPT Presentation

Transcript of Теория графов

Теория графов

Основные определения

Дуга

Пусть имеется множество вершин V={V1,V2,…,Vn} и пусть на нем задано бинарное отношение Г⊂V×V, – Vi Г Vj↔(Vi Vj)∈ Г – эту пару назовем дугой Uk

Пример

Неориентированные графы

Если бинарное отношение симметрично, то наряду с дугой (Vi,Vj) есть дуга (Vj,Vi). В этом случае чаще всего переходят к неориентированным графам.

Задание графов

Матрица инцидентности A. По вертикали указываются вершины, по горизонтали - ребра. aij=1 если вершина i инцидентна ребру j, в противном случае aij=0. Для орграфа aij=-1 если из вершины i исходит ребро j, aij=1 если в вершину i входит ребро j. Если ребро - петля, то aij=2.

Список ребер. В первом столбце ребра, во втором вершины им инцидентные.

Матрица смежности - квадратная симметричная матрица. По горизонтали и вертикали - все вершины. Dij= число ребер, соединяющее вершины i,j.

Матрица Кирхгофа: bij=-1, если вершины i и j смежны, bij=0 если вершины i и j не смежны. Сумма элементов в каждой строке и каждом столбце матрицы Кирхгофа равна 0.

Полустепень вершины

Для ориентированных графов: полустепенью исхода вершины |Г(Vi)| будем называть число дуг, исходящих из вершины Vi; полустепенью захода вершин |Г-1(Vi)| будем называть число дуг, заходящих в вершину. В орграфе две локальных степени вершины v: deg(v)+ и deg(v) - (число ребер с началом и концом в v). Для неориентированных графах говорят только о степени.

Следствие 2 из леммы о рукопожатиях. Число ребер в полном графе n(n-1)/2.

Достижимость

Матрица достижимости R={rij}, {rij}=1, если Vj достижима из Vi, {rij}=0 в противном случае. R=E+A+А2+…+Ak

В степенях используется «булевское» умножение матриц (строк на столбец, но 1+1=1, 0+1=1,0+0=0, 1+0=0).

K – такое число, при котором дальнейшее сужение степеней не меняет матрицу R.

Алгоритм Краскалла

Составляется список ребер в порядке увеличения весов.

В искомое дерево добавляем, начиная с первого элемента списка по порядку этого списка ветви до те пор, пока не встречаем ветвь, образующую с ранее включенной цикл. Данную ветвь вычеркиваем из списка. Затем продолжаем аналогичные действия до (n-1) ветви.

Алгоритм Дейкстры

Пусть имеется направленный ориентированный граф с двумя выделенными вершинами Vs и Vt. Найти минимальный направленный путь из Vs в Vt.

Помечаем вершину Vs, и присваиваем ей вес qs:=0, а всем остальным присваиваем временный вес qi=∞

Полагаем i=s – номер последней отмеченной вершины Для каждой неотмеченной вершины Vj выполняется

следующий оператор qj:=min(qj, qi+pij), где pij – вес ветви, ведущей из i-той вершины в j-тую, если нет pij, считаем pij=∞

Алгоритм Дейкстры

Проверяем, есть ли среди только что отмеченных qj конечное значение. Если таких вершин нет, то мы завершаем алгоритм, пути из s в t не существует. Если же конечное значение qj найдется, то из них выбирается минимальная. Пусть это вершина j0, тогда мы помечаем эту вершину, а так же помечаем ту дугу, по которой мы добирались в вершину Vj0, при получении этого минимального значения.

I=jo Проверяем условие i=t. Если это так, алгоритм

завершается, L(s-t)=qj0. Сам же минимальный путь считается, начиная с вершины Vt по выделенным дугам в обратном порядке. Если же i≠t, возвращаемся к пункту 3.

Медиана графа

Медиана — вершина графа, у которой сумма кратчайших расстояний от неё до вершин графа минимальная возможная.

p-медиана

Внешнее передаточное число

p(i→k) – длина кратчайшего пути из i в k φi – сумма длин из вершины i в другие

вершины, внешнее передаточное число этой вершины

n

ii kip1

Внутреннее передаточное число

Ψi-сумма длин от всех вершин до данной, внутреннее передаточное число i-той вершины.

n

ii ikp1

Медиана

Внешней медианой называется такая вершина, для которой внешнее передаточное число минимально. i0=arg min φi.

Внутренней медианой называется такая вершина, для которой внутреннее передаточное число минимально. j0=arg min Ψi.

Медиана – это вершина, в которой сумма Ψ и φ минимальна. Q= Ψi+ φi.

Волновой метод

Постановка задачи. Пусть G – неориентированный связный граф, а и b – две его вершины. Требуется найти цепь, соединяющую вершины а и b и содержащую наименьшее число ребер.

Волновой метод

Алгоритм решения задачи волновым методом.

1. Помечаем вершину а индексом 0.2. Вершины, смежные с а и соединенные с а,

дугами, инцидентными вершине а, помечаем индексами 1.

3. Вершины, смежные с помеченными индексами 1 и соединенные с ними инцидентными вершинам 1 дугами, помечаем индексами 2.

Волновой метод

4. Аналогично помечаем вершины индексами 3, 4, …

5. Совокупность вершин, помеченных индексом m, обозначим Am.

6. В некоторой момент будет помечена вершина b, пусть b∈An. Останавливаем процесс индексации.

Волновой метод

7. По построению можно найти вершину b1∈An-1, смежную с b, по тем же соображениям существует вершина b2∈An-2, смежная с b1, и т.д.

8. Искомая цепь с наименьшим числом ребер получается теперь как последовательность вершин (b, b1, b2, …, bn=a), где bi An-i, то есть нужно двигаться, начиная от конечной вершины b в сторону убывания индекса вершины.

Пример

Первая итерация

0 1

1

Вторая итерация

0 1

1 2

2

Третья итерация

0 1

1 2

2

3

Четвертая итерация

0 1

1 2

2

3

4

Пятая итерация

0 1

1 2

2

3

4

5

5

Определяем путь

0 1

1 2

2

3

4

5

5

1, 3, 4, 7, 8, 9

1, 2, 4, 7, 8, 9

1. 3, 6, 7, 8, 9

Волновой метод

В случае ориентированного графа волновой метод позволяет решить две задачи:– Найти длины кратчайших путей от вершины а до

остальных вершин графа;– Найти длины кратчайших путей от каждой вершины

графа до вершины а. При этом в основном алгоритме изменяется

только построение множества Аn.

Условный радиус вершины

Если мы не будем останавливать индексацию, то через некоторое количество шагов все вершины графа будут снабжены индексами, причем наибольший из них является условным радиусом графа G относительно вершины а.

ra=max d(a, b)

Центр и диаметр графа

Расстоянием между вершинами a и b называется длина кратчайшей цепи из a в b.

Радиус графа определяется как наименьший из условных радиусов вершин графа.

Центром графа G называется такая вершина a, что максимальное расстояние между a и любой другой вершиной является наименьшим из всех возможных. Это расстояние называется радиусом графа.

Диаметром d связного графа называется максимальное возможное расстояние между любыми двумя его вершинами.

Если расстояние между двумя вершинами равно диаметру графа, то кратчайший путь, соединяющий эти вершины, называется диаметральным путем, а подграф, образованный вершинами и ребрами этого пути, – диаметральной цепью.

Алгоритм Флойда

Построим матрицу D0 размерности |V| x |V|, элементы которой определяются по правилу:

dii0= 0;

dij0= Weight(vi, vj), где i<>j, если в графе

существует ребро (дуга) (vi, vj);

dij0= бесконечность , где i<>j, если нет ребра

(дуги) (vi, vj). m=0

Пример

V1 V2 V3 V4 V5

V1 0 х 3 3 2

V2 5 0 х х х

V3 х 2 0 х 3

V4 х х 2 0 х

V5 х х х 1 0

V1

V2

V3

V4V5

52

3

33

2

1

2

Основная часть алгоритма

1. Построим матрицу Dm+1 по Dm, вычисляя ее элементы следующим образом: – dij

m+1=min{dijm, di(m+1)

m + d(m+1)jm}, где i<>j; dii

m+1=0 (*). Если dim

m + dmim < 0 для какого-то i, то в графе

существует цикл (контур) отрицательной длины, проходящий через вершину vi.

2. m:=m+1; если m<|V|, то повторяем шаг (1), иначе элементы последней построенной матрицы D|V| равны длинам кратчайших путей между соответствующими вершинами

Пример m=0

V1 V2 V3 V4 V5

V1 0 х 3 3 2

V2 5 0 х х х

V3 х 2 0 х 3

V4 х х 2 0 х

V5 х х х 1 0

V1 V2 V3 V4 V5

V1 0 х 3 3 2

V2 5 0 5+3 х х

V3 х 2 0 х 3

V4 х х 2 0 х

V5 х х х 1 0

V1

V2

V3

V4V5

52

3

33

2

1

2

Пример m=1

V1 V2 V3 V4 V5

V1 0 х 3 3 2

V2 5 0 8 8 7

V3 х 2 0 х 3

V4 х х 2 0 х

V5 х х х 1 0

V1 V2 V3 V4 V5

V1 0 х 3 3 2

V2 5 0 8 8 7

V3 5+2 2 0 х 3

V4 х х 2 0 х

V5 х х х 1 0

V1

V2

V3

V4V5

52

3

33

2

1

2

Пример m=2

V1 V2 V3 V4 V5

V1 0 х 3 3 2

V2 5 0 8 8 7

V3 7 2 0 10 3

V4 х х 2 0 х

V5 х х х 1 0

V1 V2 V3 V4 V5

V1 0 3+2 3 3 2

V2 5 0 8 8 7

V3 7 2 0 10 3

V4 х х 2 0 х

V5 х х х 1 0

V1

V2

V3

V4V5

52

3

33

2

1

2

Пример m=3

V1 V2 V3 V4 V5

V1 0 5 3 3 2

V2 5 0 8 8 7

V3 7 2 0 10 3

V4 9 4 2 0 5

V5 х х х 1 0

V1 V2 V3 V4 V5

V1 0 5 3 3 2

V2 5 0 8 8 7

V3 7 2 0 10 3

V4 9 4 2 0 5

V5 9+1 х х 1 0

V1

V2

V3

V4V5

52

3

33

2

1

2

Пример m=4

V1 V2 V3 V4 V5

V1 0 5 3 3 2

V2 5 0 8 8 7

V3 7 2 0 10 3

V4 9 4 2 0 5

V5 10 5 3 1 0

V1 V2 V3 V4 V5

V1 0 5 3 3 2

V2 5 0 8 8 7

V3 7 2 0 3+1 3

V4 9 4 2 0 5

V5 10 5 3 1 0

V1

V2

V3

V4V5

52

3

33

2

1

2

Пример m=5

V1 V2 V3 V4 V5

V1 0 5 3 3 2

V2 5 0 8 8 7

V3 7 2 0 4 3

V4 9 4 2 0 5

V5 10 5 3 1 0

Пример

V1 V2 V3 V4 V5

V1 0 5 3 3 2

V2 5 0 8 8 7

V3 7 2 0 4 3

V4 9 4 2 0 5

V5 10 5 3 1 0

φ1=13 Ψ1=31 Q1=44

φ2=28 Ψ2=16 Q2=44

φ3=16 Ψ3=16 Q3=32

φ4=20 Ψ4=16 Q4=36

φ5=19 Ψ5=17 Q5=36

Q3 – медиана.