ГРАФЫ В математике связи между теориями ... изоморфизмами лишь перефразировкой.

advertisement
ГРАФЫ
В математике связи между теориями или другими математическими
конструкциями называются изоморфизмами, если их описания отличаются
лишь перефразировкой.
В
математической теории
графов и информатике граф —
это
совокупность непустого множества вершин и множества пар вершин (связей
между вершинами).
Пусть имеется множество вершин V={V1,V2,…,Vn} и пусть на нем
задано бинарное отношение Г⊂V×V, Vi Г Vj↔(Vi Vj)∈ Г – эту пару назовем
дугой Uk
Если бинарное отношение Г не является симметричным, то граф
называется ориентированным. Если на плоскости каждой вершине
сопоставить точку, то дуге будет соответствовать графическая дуга.
Если бинарное отношение рефлексивно, то у каждой вершины будет
петля.
Если бинарное отношение симметрично, то наряду с дугой (Vi,Vj) есть
дуга (Vj,Vi). В этом случае чаще всего переходят к неориентированным
графам.
Граф,
содержащий
ориентированные
ребра
(дуги),
называется
орграфом.
Граф, не содержащий ориентированные ребра (дуги), называется
неографом.
Ребра, инцидентные одной паре вершин, называются параллельными
или кратными.
1
Граф с кратными ребрами называется мультиграфом.
Граф, содержащий петли и кратные ребра, называется псевдографом.
Конечный граф - число вершин и ребер конечно.
Пустой граф - множество ребер пусто (число вершин может быть
произвольным).
Полный граф - граф без петель и кратных ребер, каждая пара вершин
соединена ребром. Обозначение для полного графа с n вершинами - Kn.
Подграфом называется часть графа, образованная подмножеством
вершин вместе со всеми ребрами (дугами), соединяющими вершины из этого
множества. Если из графа удалить часть ребер (дуг), то получим частичный
граф.
Две вершины называются смежными, если они соединены ребром
(дугой).
Смежные
вершины
называются
граничными
вершинами
соответствующего ребра (дуги), а это ребро (дуга) - инцидентным
соответствующим вершинам.
Любой граф, изображенный геометрически, может быть представлен в
изоморфной
матричной
форме.
При
этом
используются
матрица
инцидентности и матрица смежности между вершинами.
Способы задания графов

Матрица инцидентности A. По вертикали указываются вершины, по
горизонтали - ребра. aij=1 если вершина i инцидентна ребру j, в
противном случае aij=0. Для орграфа aij=-1 если из вершины i
исходит ребро j, aij=1 если в вершину i входит ребро j. Если ребро петля, то aij=2.

Список ребер. В первом столбце ребра, во втором вершины им
инцидентные.

Матрица смежности - квадратная симметричная матрица. По
горизонтали и вертикали - все вершины. Dij= число ребер,
соединяющее вершины i,j.
2

Матрица Кирхгофа: bij=-1, если вершины i и j смежны, bij=0 если
вершины i и j не смежны. Сумма элементов в каждой строке и
каждом столбце матрицы Кирхгофа равна 0.
Главное значение для нас имеет матрица
смежности между вершинами. Матрица смежности
для него будет выглядеть следующим образом:
Матрица инцидентности - I
Для ориентированных графов: полустепенью исхода вершины |Г(Vi)|
будем называть число дуг, исходящих из вершины Vi; полустепенью захода
вершин |Г-1(Vi)| будем называть число дуг, заходящих в вершину. В орграфе
две локальных степени вершины v: deg(v)+ и deg(v) - (число ребер с началом
и концом в v). Для неориентированных графах говорят только о степени.
Локальная степень вершины - число ребер ей инцидентных. В неографе
сумма степеней всех вершин равна удвоенному числу ребер (лемма о
рукопожатиях, поскольку в каждом рукопожатии участвуют две руки, то
при любом числе рукопожатий общее число пожатых рук четно, при
условии, что каждая рука учитывается столько раз, в скольких рукопожатиях
она участвовала). Петля дает вклад, равный 2 в степень вершины.
Следствие 1 из леммы о рукопожатиях. Произвольный граф имеет
четное число вершин нечетной степени.
Следствие 2 из леммы о рукопожатиях. Число ребер в полном графе n(n1)/2.
3
Вершина, для которой не существует инцидентных ей ребер называется
изолированной. Вершина, для которой существует только одно инцидентное
ей ребро называется висячей.
Графы равны, если множества вершин и инцидентных им ребер
совпадают.
Графы, отличающиеся только нумерацией вершин и ребер, называются
изоморфными.
Граф называется регулярным (однородным), если степени всех его
вершин равны.
Путем называется последовательность дуг (в ориентированном графе),
такая, что конец одной дуги является началом другой дуги.
Направленный
путь
длины
n
можно
представить,
как
последовательность n вершин. Первую вершину называют начальной,
последнюю – конечной. Контур - путь, у которого конечная вершина
совпадает с начальной вершиной. Длиной пути (контура) называется число
дуг пути (или сумма длин его дуг, если последние заданы). Простой путь путь, в котором ни одна дуга не встречается дважды. Элементарный путь путь, в котором ни одна вершина не встречается дважды.
Лемма 1. Если степень всех вершин в графе больше или равна двум, то
граф обязательно содержит контур.
Доказательство. Действительно, выйдя из некоторой вершины и войдя
в другую, всегда можно выйти из нее по другому ребру, так как степень
вершины больше или равна двум. Выйти из вершины по новому ребру
невозможно только в том случае, если эта вершина уже встречалась, а это
означает, что можно выделить контур из вершин этого графа.
Цепью называется множество ребер (в неориентированном графе),
которые можно расположить так, что конец одного ребра является началом
другого. Другое определение: цепь - последовательность смежных вершин.
Замкнутая цепь называется циклом. По аналогии с простым и элементарным
путем, можно определить соответственно простые и элементарные цепь и
4
цикл. Любой элементарный цикл является простым, обратное утверждение в
общем случае неверно. Элементарная цепь (цикл, путь, контур), проходящая
через все вершины графа называется гамильтоновой цепью (соответственно
- циклом, путем, контуром). Простая цепь (цикл, путь, контур), содержащая
все ребра (дуги) графа называется эйлеровой цепью (соответственно - цик
лом, путем, контуром).
Вершина
Vj
называется
достижимой
из
Vi,
если
существует
направленный путь из Vi в Vj. Вершина Vj называется контр-достижимой из
Vi, если существует направленный путь из Vj в Vi.
Матрица достижимости 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.
Точно так же можно ввести понятие матрицы контр-достижимости:
Неориентированный граф называется связным, если любые две его
вершины соединены по крайней мере одной цепью.
Ориентированный граф называется связным, если любые две его
вершины соединены, по крайней мере, одним путем.
Ориентированный граф называется сильно связным, если для любых
двух вершин Vi, Vj существуют пути, направленные из Vi в Vj и наоборот.
При этом любые две вершины взаимнодостижимы.
Неориентированный граф называется деревом, если он связен и не имеет
циклов.
Теорема: если в дереве имеется n вершин, то оно содержит ровно (n-1)
ребро.
Доказательство: очевидно, любые две вершины дерева соединяются
только одной цепью. Одна цель между любыми двумя вершинами
существует в силу связности. Если бы их было более одной, то можно было
5
бы построить цикл. Выбрасывая одну ветвь из дерева, получаем две
несвязные компоненты, продолжая выбрасывать по одной ветви, будем
увеличивать число несвязных компонент. Выбросим (n-1) ветвей мы получим
n несвязных вершин.
Дерево ориентированного графа также не должно содержать циклов,
но в нем должна быть единственная вершина, из которой должен
существовать единственный путь в другую вершину графа
Оптимизация на графах
Граф называется взвешенным, если определена числовая функция на
множестве его дуг, или определена числовая функция и на множестве дуг, и
на множестве ветвей.
Весом (значением ветви) называется значение числовой функции на этой
ветви.
Рассматриваем неориентированный граф. Покрывающим деревом этого
графа называется его подграф, который является деревом и который
содержит все вершины исходного графа.
Минимальным покрывающим деревом взвешенного графа назовем
такое покрывающее дерево, сумма весов ветвей которого минимальна среди
всех других покрывающих деревьев.
Задача: найти минимальное дерево для данного неориентированного
взвешенного графа.
Алгоритма Краскала
1. Составляется список ребер в порядке увеличения весов.
2. В искомое дерево добавляем, начиная с первого элемента списка по
порядку этого списка ветви до те пор, пока не встречаем ветвь,
образующую с ранее включенной цикл. Данную ветвь вычеркиваем из
списка. Затем продолжаем аналогичные действия до (n-1) ветви.
Задача: рассмотрим ориентированный граф. Нужно найти минимальный
путь между двумя заданными вершинами.
6
Направленный путь из V1 вV2 называется минимальным, если сумма
весов ветвей этого пути минимальная среди всех направленных путей.
Алгоритм Дейкстры о нахождении минимального пути:
Пусть
имеется
направленный
ориентированный
граф
с
двумя
выделенными вершинами 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, тогда мы помечаем эту вершину, а так
7
же помечаем ту дугу, по которой мы добирались в вершину Vj0, при
получении этого минимального значения.
I:=jo
Проверяем условие i=t. Если это так, алгоритм завершается, L(s-t)=qj0.
Сам же минимальный путь считается, начиная с вершины Vt по выделенным
дугам в обратном порядке. Если же i t, возвращаемся к пункту 3.
q1=q2=q3=q4=qt=
1шаг: qs=0
2шаг: i:=s
3.1шаг:
q1:=min(q1, qi+pi1)=min( , 0 + 2)=2
q2:=min(q2, qi+pi2)=min( , 0+ )=
q3:=min(q3, qi+pi3)=min( , 0+3)=3)
q4:=qt=
4.1 шаг: выберем минимальный q – это q1, и соответственно V1, отметим
ее. Отмечаем Vs и дугу V 1.
8
5.1 шаг: i:=1
6.1 шаг: поскольку i≠t, переходим к пункту 3.
3.2 шаг: q2:=min(q2,q1+р12)=min(∞,2+5)=7
q3:=min(q3,q1+р13)=min(3,2+ )=3
q4:=min(q4,q1+р14)=min( ,2+4)=6
qt:=
4.2 шаг: отмечаем V3 и (Vs, V3)
5.2 шаг: i:=3
6.2 вновь переходим к пункту 3
3.3 шаг: q2:=min(q2,q3+р32)=min(7,3+5)=7
q4:=min(q4,q3+р34)=min(6,3+4)=6
qt:=
4.3 шаг: отмечаем V4 и (V3,V4)
9
5.3 шаг: i:=4
6.3 шаг: вновь переходим к пункту 3
3.4 шаг: q2:=min(q2,q4+р42)=min(7,6+ )=7
qt:=min(qt,q4+рt4)=min( ,6+5)=11
4.4 шаг: отмечаем V2 и (V1, V2)
5.4 шаг: i:=2
6.4 шаг: вновь возвращаемся к пункту 3
3.5 шаг: qt=min(qt,q2+tt,2)=min(11,7+1)=8
4.5 шаг: отмечаем Vt и (V2,Vt)
10
5.5 шаг: i:=t
6.5 шаг: i=t, задача решена. Кратчайший путь считывается «задомнаперед», начиная с конечной вершины, двигаясь по выделенным дугам.
Длина нашего кратчайшего пути – 8.
Замечание: часто необходимо найти кратчайший путь из заданной
вершины не в одну конечную, а во все другие вершины графа. При этом
можно пользоваться вышеописанным алгоритмом, но остановку осуществить
при отметке последней вершины.
Медиана графа
Пускай необходимо выбрать место для размещения телефонного
коммутатора, электроподстанции, баз снабжения в сети дорог или отдела
сортировки в почтовой связи. Во всех этих задачах о размещении пункта
обслуживания требуется так расположить этот пункт, чтобы сумма
кратчайших расстояний от этого пункта до вершин графа была минимально
возможной. Оптимальное в указанном смысле место расположения пункта
называется медианой графа. Под вершинами графа понимается, например,
расположение телефонов в задаче о размещении телефонного комутатора
(надеюсь, что в остальных примерах читателю интуитивно понятно
появление графа). Исходя из природы целевой функции, такие задачи
называются минисуммными задачами размещения.
11
В частности рассмотрим задачу о нахождении p-медианы данного
графа G; это задача о размещении заданного числа (скажем, p) пунктов
обслуживания, при которых сумма кратчайших расстояний от вершин
графа G до ближайших пунктов принимает минимально возможное значение.
Обозначим через p(i→k) длину кратчайшего пути из пункта i в пункт
k. φi – сумма длин из вершины i в другие вершины, внешнее передаточное
число этой вершины. i  i 1 pi  k 
n
Ψi-сумма длин от всех вершин до данной, внутреннее передаточное
число i-той вершины.  i  i 1 pk  i 
n
Внешней медианой называется такая вершина, для которой внешнее
передаточное число минимально. i0=arg min φi.
Внутренней медианой называется такая вершина, для которой
внутреннее передаточное число минимально. j0=arg min Ψi.
Медиана – это вершина, в которой сумма Ψ и φ минимальна. Q= Ψi+
φ i.
Эксцентриситет вершины — максимальное из расстояний от данной
вершины до других вершин.
Диаметр графа — это максимум расстояния между вершинами для
всех пар вершин. Расстояние между вершинами — наименьшее число рёбер,
которые необходимо пройти, чтобы добраться из одной вершины в другую.
Радиус графа — минимальный из эксцентриситетов вершин связного
графа; вершина, на которой достигается этот минимум называется
центральной вершиной.
Центр графа — вершина, расстояние от которой до самой дальней
вершины минимально.
Центров и медиан в графе может быть несколько.
Волновой алгоритм
На слайде
12
Алгоритм Флойда
Инициализация:
1.
Построим
матрицу D0 размерности
|V|
x
|V|,
элементы
которой
определяются по правилу:
1. dii0= 0;
2. dij0= Weight(vi, vj), где i<>j, если в графе существует ребро (дуга) (vi, vj);
3. dij0= бесконечность , где i<>j, если нет ребра (дуги) (vi, vj).
2. m:=0.
Основная часть:
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| равны
длинам
кратчайших
путей
между
соответствующими вершинами.
Если требует найти сами пути, то перед началом работы алгоритма
построим матрицу P с начальными значениями элементов pij=i. Каждый раз,
когда на шаге (1) значение dijm+1 будет уменьшаться в соответствии с (*) (т.е.
когда di(m+1)m + d(m+1)jm<dijm), выполним присваивание pij:=p(m+1)j. В конце
работы алгоритма матрица P будет определять кратчайшие пути между
всеми парами вершин: значение pij будет равно номеру предпоследней
вершины в пути между i и j (либо pij=i, если путь не существует).
13
5
V2
V1
2
3
V3
3
3
2
V5
1
2
V4
Рассмотрим пример:
На основании исходных данных формируем матрицу длин кратчайших дуг
D0, каждый элемент которой равен длине кратчайщей дуги между вершинами
i и j. Если такой дуги нет, положим значение элемента равным ∞.
D0=
0
∞ 3
5
0
∞ 2
3
2
∞ ∞ ∞
0
∞ ∞ 2
∞ 3
0
∞
∞ ∞ ∞ 1
0
На основании матрицы D0, вычислим последовательно все элементы
матрицы D1. Для этого мы используем рекуррентное соотношение di,j1=min{
di,10+ d1,j0; di,j0}.
d1,11=min{d1,10+d1,10d1,10}=min{0+0; 0}=0
d1,21=min{d1,10+d1,20d1,20}=min{0+∞; ∞}=∞
d1,31=min{d1,10+d1,30d1,30}=min{0+3; 3}=3
d1,41=min{d1,10+d1,40d1,40}=min{0+3; 3}=3
d1,51=min{d1,10+d1,50d1,50}=min{0+2; 2}=2
d2,11=min{d2,10+d1,10d2,10}=min{5+0; 5}=5
d2,21=min{d2,10+d1,20d2,20}=min{5+∞; 0}=0
d2,31=min{d2,10+d1,30d2,30}=min{5+3; ∞}=8
d2,41=min{d2,10+d1,40d2,40}=min{5+3; ∞}=8
d2,51=min{d2,10+d1,50d2,50}=min{5+2; ∞}=7
d3,11=min{d3,10+d1,10d3,10}=min{∞+0; ∞}=∞
d3,21=min{d3,10+d1,20d3,20}=min{∞+∞; 2}=2
d3,31=min{d3,10+d1,30d3,30}=min{∞+3; 0}=0
d3,41=min{d3,10+d1,40d3,40}=min{∞+3; ∞}=∞
d3,51=min{d3,10+d1,50d3,50}=min{∞+2; 3}=3
14
d4,11=min{d4,10+d1,10d4,10}=min{∞+0; ∞}=∞
d4,21=min{d4,10+d1,20d4,20}=min{∞+∞; ∞}=∞
d4,31=min{d4,10+d1,30d4,30}=min{∞+3; 2}=2
d4,41=min{d4,10+d1,40d4,40}=min{∞+3; 0}=0
d4,51=min{d4,10+d1,50d4,50}=min{∞+2; ∞}=∞
d5,11=min{d5,10+d1,10d5,10}=min{∞+0; ∞}=∞
d5,21=min{d5,10+d1,20d5,20}=min{∞+∞; ∞}=∞
d5,31=min{d5,10+d1,30d5,30}=min{∞+3; ∞}=∞
d5,41=min{d5,10+d1,40d5,40}=min{∞+3; 1}=1
d5,51=min{d5,10+d1,50d5,50}=min{∞+2; 0}=0
Представим матрицу D1, включив в нее рассчитанные элементы.
0
∞ 3
3
2
5 0 8 8 7
D= ∞ 2 0 ∞ 3
∞ ∞ 2 0 ∞
∞ ∞ ∞ 1 0
На основании матрицы D1, вычислим последовательно все элементы
матрицы D2. Для этого мы используем рекуррентное соотношение di,j2=min{
di,21+ d2,j1; di,j1}.
d1,12=min{d1,21+d2,11d1,11}=min{∞+5; 0}=0
d1,22=min{d1,21+d2,21d1,21}=min{∞+0; ∞}=∞
d1,32=min{d1,21+d2,31d1,31}=min{∞+8; 3}=3
d1,42=min{d1,21+d2,41d1,41}=min{∞+8; 3}=3
d1,52=min{d1,21+d2,51d1,51}=min{∞+7; 2}=2
d2,12=min{d2,21+d2,11d2,11}=min{0+5; 5}=5
d2,22=min{d2,21+d2,21d2,21}=min{0+0; 0}=0
d2,32=min{d2,21+d2,31d2,31}=min{0+8; 8}=8
d2,42=min{d2,21+d2,41d2,41}=min{0+8; 8}=8
d2,52=min{d2,21+d2,51d2,51}=min{0+7; 7}=7
d3,12=min{d3,21+d2,11d3,11}=min{2+5; ∞}=7
d3,22=min{d3,21+d2,21d3,21}=min{2+0; 2}=2
d3,32=min{d3,21+d2,31d3,31}=min{2+8; 0}=0
d3,42=min{d3,21+d2,41d3,41}=min{2+8; ∞}=10
d3,52=min{d3,21+d2,51d3,51}=min{2+7; 3}=3
d4,12=min{d4,21+d2,11d4,11}=min{∞+5; ∞}=∞
d4,22=min{d4,21+d2,21d4,21}=min{∞+0; ∞}=∞
d4,32=min{d4,21+d2,31d4,31}=min{∞+8; 2}=2
d4,42=min{d4,21+d2,41d4,41}=min{∞+8; 0}=0
d4,52=min{d4,21+d2,51d4,51}=min{∞+7; ∞}=∞
d5,12=min{d5,21+d2,11d5,11}=min{∞+5; ∞}=∞
d5,22=min{d5,21+d2,21d5,21}=min{∞+0; ∞}=∞
d5,32=min{d5,21+d2,31d5,31}=min{∞+8; ∞}=∞
d5,42=min{d5,21+d2,41d5,41}=min{∞+8; 1}=1
1
15
d5,52=min{d5,21+d2,51d5,51}=min{∞+7; 0}=0
Представим матрицу D2, включив в нее рассчитанные элементы.
0 ∞3 3 2
5 0 8 8 7
D2= 7 2 0 10 3
∞∞2 0 ∞
∞∞∞1 0
На основании матрицы D2, вычислим последовательно все элементы
матрицы D3. Для этого мы используем рекуррентное соотношение di,j3=min{
di,32+ d3,j2; di,j2}.
d1,13=min{d1,32+d3,12d1,12}=min{3+7; 0}=0
d1,23=min{d1,32+d3,22d1,22}=min{3+2; ∞}=5
d1,33=min{d1,32+d3,32d1,32}=min{3+0; 3}=3
d1,43=min{d1,32+d3,42d1,42}=min{3+10; 3}=3
d1,53=min{d1,32+d3,52d1,52}=min{3+3; 2}=2
d2,13=min{d2,32+d3,12d2,12}=min{8+7; 5}=5
d2,23=min{d2,32+d3,22d2,22}=min{8+2; 0}=0
d2,33=min{d2,32+d3,32d2,32}=min{8+0; 8}=8
d2,43=min{d2,32+d3,42d2,42}=min{8+10; 8}=8
d2,53=min{d2,32+d3,52d2,52}=min{8+3; 7}=7
d3,13=min{d3,32+d3,12d3,12}=min{0+7; 7}=7
d3,23=min{d3,32+d3,22d3,22}=min{0+2; 2}=2
d3,33=min{d3,32+d3,32d3,32}=min{0+0; 0}=0
d3,43=min{d3,32+d3,42d3,42}=min{0+10; 10}=10
d3,53=min{d3,32+d3,52d3,52}=min{0+3; 3}=3
d4,13=min{d4,32+d3,12d4,12}=min{2+7; ∞}=9
d4,23=min{d4,32+d3,22d4,22}=min{2+2; ∞}=4
d4,33=min{d4,32+d3,32d4,32}=min{2+0; 2}=2
d4,43=min{d4,32+d3,42d4,42}=min{2+10; 0}=0
d4,53=min{d4,32+d3,52d4,52}=min{2+3; ∞}=5
d5,13=min{d5,32+d3,12d5,12}=min{∞+7; ∞}=∞
d5,23=min{d5,32+d3,22d5,22}=min{∞+2; ∞}=∞
d5,33=min{d5,32+d3,32d5,32}=min{∞+0; ∞}=∞
d5,43=min{d5,32+d3,42d5,42}=min{∞+10; 1}=1
d5,53=min{d5,32+d3,52d5,52}=min{∞+3; 0}=0
Представим матрицу D3, включив в нее рассчитанные элементы.
0 5 3 3 2
5 0 8 8 7
D3= 7 2 0 10 3
9 4 2 0 5
∞∞∞1 0
16
На основании матрицы D3, вычислим последовательно все элементы
матрицы D4. Для этого мы используем рекуррентное соотношение di,j4=min{
di,43+ d4,j3; di,j3}.
d1,14=min{d1,43+d4,13d1,13}=min{3+9; 0}=0
d1,24=min{d1,43+d4,23d1,23}=min{3+4; 5}=5
d1,34=min{d1,43+d4,33d1,33}=min{3+2; 3}=3
d1,44=min{d1,43+d4,43d1,43}=min{3+0; 3}=3
d1,54=min{d1,43+d4,53d1,53}=min{3+5; 2}=2
d2,14=min{d2,43+d4,13d2,13}=min{8+9; 5}=5
d2,24=min{d2,43+d4,23d2,23}=min{8+4; 0}=0
d2,34=min{d2,43+d4,33d2,33}=min{8+2; 8}=8
d2,44=min{d2,43+d4,43d2,43}=min{8+0; 8}=8
d2,54=min{d2,43+d4,53d2,53}=min{8+5; 7}=7
d3,14=min{d3,43+d4,13d3,13}=min{10+9; 7}=7
d3,24=min{d3,43+d4,23d3,23}=min{10+4; 2}=2
d3,34=min{d3,43+d4,33d3,33}=min{10+2; 0}=0
d3,44=min{d3,43+d4,43d3,43}=min{10+0; 10}=10
d3,54=min{d3,43+d4,53d3,53}=min{10+5; 3}=3
d4,14=min{d4,43+d4,13d4,13}=min{0+9; 9}=9
d4,24=min{d4,43+d4,23d4,23}=min{0+4; 4}=4
d4,34=min{d4,43+d4,33d4,33}=min{0+2; 2}=2
d4,44=min{d4,43+d4,43d4,43}=min{0+0; 0}=0
d4,54=min{d4,43+d4,53d4,53}=min{0+5; 5}=5
d5,14=min{d5,43+d4,13d5,13}=min{1+9; ∞}=10
d5,24=min{d5,43+d4,23d5,23}=min{1+4; ∞}=5
d5,34=min{d5,43+d4,33d5,33}=min{1+2; ∞}=3
d5,44=min{d5,43+d4,43d5,43}=min{1+0; 1}=1
d5,54=min{d5,43+d4,53d5,53}=min{1+5; 0}=0
Представим матрицу D4, включив в нее рассчитанные элементы.
0 533 2
5 088 7
D4= 7 2 0 10 3
9 420 5
10 5 3 1 0
4
На основании матрицы D , вычислим последовательно все элементы
матрицы D5. Для этого мы используем рекуррентное соотношение di,j5=min{
di,54+ d5,j4; di,j4}.
d1,15=min{d1,54+d5,14d1,14}=min{2+10; 0}=0
d1,25=min{d1,54+d5,24d1,24}=min{2+5; 5}=5
d1,35=min{d1,54+d5,34d1,34}=min{2+3; 3}=3
d1,45=min{d1,54+d5,44d1,44}=min{2+1; 3}=3
d1,55=min{d1,54+d5,54d1,54}=min{2+0; 2}=2
d2,15=min{d2,54+d5,14d2,14}=min{7+10; 5}=5
17
d2,25=min{d2,54+d5,24d2,24}=min{7+5; 0}=0
d2,35=min{d2,54+d5,34d2,34}=min{7+3; 8}=8
d2,45=min{d2,54+d5,44d2,44}=min{7+1; 8}=8
d2,55=min{d2,54+d5,54d2,54}=min{7+0; 7}=7
d3,15=min{d3,54+d5,14d3,14}=min{3+10; 7}=7
d3,25=min{d3,54+d5,24d3,24}=min{3+5; 2}=2
d3,35=min{d3,54+d5,34d3,34}=min{3+3; 0}=0
d3,45=min{d3,54+d5,44d3,44}=min{3+1; 10}=4
d3,55=min{d3,54+d5,54d3,54}=min{3+0; 3}=3
d4,15=min{d4,54+d5,14d4,14}=min{5+10; 9}=9
d4,25=min{d4,54+d5,24d4,24}=min{5+5; 4}=4
d4,35=min{d4,54+d5,34d4,34}=min{5+3; 2}=2
d4,45=min{d4,54+d5,44d4,44}=min{5+1; 0}=0
d4,55=min{d4,54+d5,54d4,54}=min{5+0; 5}=5
d5,15=min{d5,54+d5,14d5,14}=min{0+10; 10}=10
d5,25=min{d5,54+d5,24d5,24}=min{0+5; 5}=5
d5,35=min{d5,54+d5,34d5,34}=min{0+3; 3}=3
d5,45=min{d5,54+d5,44d5,44}=min{0+1; 1}=1
d5,55=min{d5,54+d5,54d5,54}=min{0+0; 0}=0
Представим матрицу D5, включив в нее рассчитанные элементы.
0 5332
5 0887
D5= 7 2 0 4 3
9 4205
10 5 3 1 0
В результате, нами получена матрица длин кратчайших путей между каждой
парой вершин графа. Ниже представлена таблица путей. Каждый элемент Cij
таблицы, это путь из вершины i в вершину j:
V1 V2 V3 V4 V5
φ1=13 Ψ1=31 Q1=44
V1 0
5
3
3
2
φ2=28 Ψ2=16 Q2=44
V2 5
0
8
8
7
φ3=16 Ψ3=16 Q3=32
V3 7
2
0
4
3
φ4=20 Ψ4=16 Q4=36
V4 9
4
2
0
5
φ5=19 Ψ5=17 Q5=36
V5 10 5
3
1
0
Q3 – медиана.
18
Download