480 likes | 783 Views
Теория графов. Основные определения. Дуга. Пусть имеется множество вершин V={V 1 ,V 2 ,…,V n } и пусть на нем задано бинарное отношение Г ⊂ V × V , V i Г V j ↔( V i V j ) ∈ Г – эту пару назовем дугой U k. Пример. Неориентированные графы.
E N D
Теория графов Основные определения
Дуга • Пусть имеется множество вершин 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 в другие вершины, внешнее передаточное число этой вершины
Внутреннее передаточное число • Ψi-сумма длин от всех вершин до данной, внутреннее передаточное число i-той вершины.
Медиана • Внешней медианой называется такая вершина, для которой внешнее передаточное число минимально. i0=arg min φi. • Внутренней медианой называется такая вершина, для которой внутреннее передаточное число минимально. j0=arg min Ψi. • Медиана – это вершина, в которой сумма Ψ и φ минимальна. Q= Ψi+ φi.
Волновой метод • Постановка задачи. Пусть G – неориентированный связный граф, а и b – две его вершины. Требуется найти цепь, соединяющую вершины а и b и содержащую наименьшее число ребер.
Волновой метод • Алгоритм решения задачи волновым методом. • Помечаем вершину а индексом 0. • Вершины, смежные с а и соединенные с а, дугами, инцидентными вершине а, помечаем индексами 1. • Вершины, смежные с помеченными индексами 1 и соединенные с ними инцидентными вершинам 1 дугами, помечаем индексами 2.
Волновой метод • Аналогично помечаем вершины индексами 3, 4, … • Совокупность вершин, помеченных индексом m, обозначим Am. • В некоторой момент будет помечена вершина b, пусть b∈An. Останавливаем процесс индексации.
Волновой метод • По построению можно найти вершину b1∈An-1, смежную с b, по тем же соображениям существует вершина b2∈An-2, смежная с b1, и т.д. • Искомая цепь с наименьшим числом ребер получается теперь как последовательность вершин (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 4 2 3
Пятая итерация 0 1 1 5 2 4 2 5 3
Определяем путь 0 1 1, 3, 4, 7, 8, 9 1, 2, 4, 7, 8, 9 1. 3, 6, 7, 8, 9 1 5 2 4 2 5 3
Волновой метод • В случае ориентированного графа волновой метод позволяет решить две задачи: • Найти длины кратчайших путей от вершины а до остальных вершин графа; • Найти длины кратчайших путей от каждой вершины графа до вершины а. • При этом в основном алгоритме изменяется только построение множества А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
Пример 5 V2 2 V1 3 V3 3 3 2 2 V4 V5 1
Основная часть алгоритма • Построим матрицу Dm+1по Dm, вычисляя ее элементы следующим образом: • dijm+1=min{dijm, di(m+1)m + d(m+1)jm}, где i<>j; diim+1=0 (*). Если dimm + dmim< 0 для какого-то i, то в графе существует цикл (контур) отрицательной длины, проходящий через вершину vi. • 2. m:=m+1; если m<|V|, то повторяем шаг (1), иначе элементы последней построенной матрицы D|V| равны длинам кратчайших путей между соответствующими вершинами
Пример m=0 5 V2 2 V1 3 V3 3 3 2 2 V4 V5 1
Пример m=1 5 V2 2 V1 3 V3 3 3 2 2 V4 V5 1
Пример m=2 5 V2 2 V1 3 V3 3 3 2 2 V4 V5 1
Пример m=3 5 V2 2 V1 3 V3 3 3 2 2 V4 V5 1
Пример m=4 5 V2 2 V1 3 V3 3 3 2 2 V4 V5 1
Пример φ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 – медиана.