Лекция 6 ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ 1. Основные понятия и

advertisement
Лекция 6
ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ
1. Основные понятия и определения.
Можно считать, что начало теории графов было положено Л. Эйлером
в 1736 г. в его знаменитом рассуждении о кенигсбергских мостах, но как самостоятельная математическая дисциплина она сформировалась в 30-е годы
XX в. Теория графов нашла широкое применение во многих разделах науки
и техники; ее методы успешно используются в теории информации, сетей,
планирования производства, генетике и химии, на транспорте и т. д.
Геометрически граф можно представить как набор вершин (точек),
определенные пары которых соединены линиями. Например, сеть дорог, соединяющих города Е1 Е2, Е3, Е4, Е5, можно представить в виде графа следующим образом. Города обозначим точками (вершинами), а дороги — неориентированными линиями (рис. 1). Неориентированные линии означают
наличие двустороннего движения между соответствующей парой городов.
Пересечения линий не считаются вершинами.
Рассмотрим другой пример. Пусть производственный участок изготовляет два вида изделий Е9 и Е10 Изделие E9 собирается из узлов Е6, Е7 и детали Е2, а изделие Е10 — из узлов Е7, Е8 и детали Е5. В свою очередь узел E5
собирается из двух деталей Е1 и одной детали Е2, узел Е7 — из деталей Е2, Е3
и Е5, а узел Е8 — из деталей Е4 и Е5. Применяемость узлов и деталей изобразим в виде графа. Вершинам графа поставим в соответствие узлы, детали и
изделия, а связи между ними (вхождение деталей в узлы и изделия и узлов в
изделия) изобразим ориентированными линями (рис. 2).
Рис. 1
Рис. 2
Определения. Математически конечным графом G называется пара
(Е, е), где Е — непустое конечное множество элементов (вершин), а е — конечное (возможно, пустое) множество пар элементов из Е (дуг или ребер).
Символически граф можно записать G = ( E , e ) .
Дугой называется ориентированная пара (Ei, Ej) вершин графа Ei и Ej
где Еi — начальная вершина дуги, a Ej — конечная.
При графическом изображении стрелка на дуге указывает порядок
вершин. Дуга вида (Еi, Еi) называется петлей. Дуги называются кратными,
если их начальные и конечные вершины совпадают. В некоторых случаях
дугу удобно обозначать одной буквой с индексом, например ⃗⃗𝑒𝑖 . Во многих
прикладных задачах пару дуг с одинаковыми номерами вершин и противоположной ориентацией удобно объединить и изображать связь между кон-
цевыми вершинами этих дуг линией без стрелки (см. рис.1). Такое объединение дуг называют ребром. Таким образом, ребром называется неориентированная пара (Еi, Ej) вершин Ei и Ej графа. Ребро обозначим 𝑒̅𝑖 или
̅̅̅̅̅̅
(𝐸
𝑖 , 𝐸𝑗 ), где Ei и Ej — концевые точки (вершины) ребра.
Два ребра (две дуги) называются смежными, если они имеют хотя бы
одну общую вершину. Ребра (одинаково направленные дуги) называются
кратными, если их концевые точки совпадают.
В зависимости от наличия или отсутствия ориентации у пар элементов
из множества Е различают графы ориентированные, неориентированные
(реберные) и смешанные. Граф называется ориентированным или кратко
орграфом, если связи между его вершинами заданы дугами (рис. 3). Орграф
будем обозначать G=(E,𝑒), где 𝑒 — множество
дуг. Дугами орграфа,
изображенного на рис. 3, являются: ⃗⃗⃗
𝑒2 = (Е1, Е2), ⃗⃗⃗
𝑒3 = (Е2, E1),𝑒⃗⃗⃗4 = (E1,E3),
𝑒5 = (Е3, E2), ... ; дуга ⃗⃗⃗
⃗⃗⃗
𝑒1 = (Е1, E1) — петля.
Орграф называется симметрическим, если для любой дуги (Ei,
Еj) ∈ 𝑒 дуга (Ej, Ei)∈ 𝑒, и антисимметрическим, если для любой дуги (Еi,
Ej) ∈ 𝑒 дуга (Еj, Еi)∉ 𝑒.
Граф называется неориентированным (реберным), если связи между
его вершинами заданы ребрами (рис. 4). Неориентированный граф будем
обозначать G = (Е, 𝑒̅) , где 𝑒̅ —множество ребер графа. Концевые точки
(вершины) ребра (дуги) называются смежными вершинами, при этом они
инцидентны, этому ребру (этой дуге), а ребро инцидентно (дуга инцидентна) вершинам.
Рис. 3
Рис. 4
Путем в орграфе называется такая конечная последовательность дуг
(𝑒⃗⃗⃗1 , ⃗⃗⃗
𝑒2 , … , ⃗⃗⃗⃗⃗
𝑒𝑚 ), ⃗⃗𝑒𝑖 ∈ 𝑒, в которой начало каждой последующей дуги совпадает с концом предыдущей.
Так, на рис. 3 s1 = (𝑒⃗⃗⃗2 , ⃗⃗⃗
𝑒6 , ⃗⃗⃗
𝑒7 , 𝑒⃗⃗⃗9 ) и s3 =
(𝑒⃗⃗⃗3 , ⃗⃗⃗
𝑒1 , ⃗⃗⃗
𝑒4 , ⃗⃗⃗
𝑒7 ) представляют собой пути. При отсутствии кратных дуг путь
можно записать также в виде последовательности вершин, через которые он
проходит. Например, путь s2 можно записать так: s2 = (E1 — Е2 — Е3 — E4 —
E5).
Контуром называется путь, начальная вершина которого совпадает с
конечной. Так, s4 =(E2—E1—E3—E2) и s5 =(E3—E2—E3) — контуры. Длина пути или контура — число дуг, входящих в путь или контур. Так, длина пути
s2 равна 4, а длина контура s5 равна 2. Путь называется простым, если ни од-
на дуга в нем не встречается дважды, и элементарным, если ни одна вершина
не встречается дважды.
Цепью в графе G = (E, 𝑒̅) называется такая последовательность
(𝑒̅1 , 𝑒̅2 , 𝑒̅3 , … , ̅̅̅̅),
𝑒𝑚 𝑒̅𝑖 ∈ 𝑒̅ ребер графа, при которой любые два соседних ребра
имеют общую вершину. На рис. 4 последовательность ребер 𝑠̅ = (𝑒̅4 , 𝑒̅6 ) или,
̅̅̅̅̅̅̅
̅̅̅̅̅̅̅
что то же самое, 𝑠̅ = ((𝐸
1 , 𝐸2 ), (𝐸2 , 𝐸3 )) образует цепь, соединяющую вершины E1 и E3.
Цепь называется циклом, если начальная вершина совпадает с конечной. Цепь 𝑠̅ = (𝑒̅4 , 𝑒̅6 , 𝑒̅3 ) на рис. 4 является циклом. Длина цепи или цикла
определяется числом ребер, ее (его) составляющих.
Любой симметрический орграф можно рассматривать как неориентированный граф, в котором каждому ребру соответствует пара симметрических дуг орграфа, и наоборот, любой неориентированный граф можно рассматривать как орграф.
Число ребер, инцидентных вершине графа Ei, называется локальной
степенью графа в вершине Ei и обозначается ρ(E i ).
Вершина степени 1 называется висячей, а степени 0 — изолированной.
В орграфе 𝜌(𝐸𝑖 )> — полустепень исхода определяется количеством
дуг, исходящих из вершины Ei, а 𝜌(𝐸𝑖 )< — полустепень захода — количеством дуг, входящих в Ei.
Наряду с неориентированными (реберными) графами и орграфами в
теории графов рассматриваются смешанные графы. Под смешанным графом
понимается такой, в котором вершины соединены как ребрами, так и дугами.
Два графа G = (E, е) и G' = (E', е') называются изоморфными, если существует взаимно однозначное отображение между множествами их вершин
Е и Е' (𝜑: 𝐸 ↔ 𝐸 ′), что (Ei, Ej) ∈ 𝑒 тогда и только тогда, когда
(𝜑(𝐸𝑖 ), 𝜑(𝐸𝑗 )) ∈ 𝑒 ′ .
Граф называется сильно связным, если между каждой парой его вершин Ei, Ej ∈ E, Ei ≠ Ej существует путь (𝑒⃗⃗⃗1 , ⃗⃗⃗
𝑒2 , … , ⃗⃗⃗⃗⃗
𝑒𝑚 ) такой, что Еi является
начальной вершиной пути, а Еj — конечной.
Граф называется связным, если между каждой парой его вершин Еi, Ej
∈ E, Ei ≠ Ej существует такая последовательность элементов (дуг или ребер
или же и дуг, и ребер), что любая пара соседних элементов в этой последовательности имеет общую вершину (ориентация дуг в этой последовательности
не учитывается). Очевидно, что любой сильно связный граф является связным. Граф на рис. 4 сильно связный, так как после замены каждого ребра на
пару симметричных дуг условие сильной связности выполняется. Этот граф
является также связным. Орграф на рис. 3 связный, но не сильно связный,
так как не существует ни одного пути от вершины E5 к другим вершинам.
Связный неориентированный граф называется деревом, если он не
имеет циклов (рис. 5). В дереве любые две вершины связаны единственной
цепью.
Граф называется двудольным, если существует такое разбиение множества его вершин на две части (доли), что концы каждого ребра принадлежат
разным частям (рис. 5). Если при этом любые две вершины, входящие в разные доли, смежны, то граф называется полным двудольным. Полный двудольный граф обозначается Kp,q, где p, q – число вершин долей.
Рис. 5
Граф G называется простым, если он не содержит петель и параллельных дуг. Простой граф, в котором каждая пара вершин смежна, называется
полным. Граф, содержащий хотя бы две параллельные дуги (ребра), называется мультиграфом; граф, содержащий петли – псевдографом.
Полные графы порядка 1, 2, 3, 4,… обозначаются Кn; число ребер в
полном графе 𝐶𝑛2 , n – число вершин.
Два графа называются изоморфными, если между множеством их вершин существует такое взаимно однозначное соответствие, при котором в одном из графов ребрами соединены вершины в том, и только в том случае, если в другом графе ребрами соединены те же вершины. Для орграфов ориентация дуг также должна быть одинаковой.
Граф называется плоским (планарным), если он может быть изображен
на плоскости так, что все пересечения ребер являются его вершинами.
Пусть S – множество вершин графа, U – множество ребер.
Для произвольного графа G = (S, U) следующим образом определяется
̃). В этом графе 𝐺̃ вершин
дополнительный граф (дополнение) 𝐺̃ = (𝑆, 𝑈
столько же, сколько в графе G, причем две любые несовпадающие вершины
смежны в 𝐺̃ тогда и только тогда, когда они не смежны в G. Граф, изоморфный своему дополнению, называется самодополнительным.
G=(S,U)
̃)
𝐺̃ = (𝑆, 𝑈
Рис. 6
Рис. 7
′
′
′
Пусть G = (S, U). Граф 𝐺 = (𝑆 , 𝑈 ) называется подграфом графа G,
если 𝑆 ′ ⊂ 𝑆 и 𝑈 ′ ⊂ 𝑈.
2. Матршруты, цепи, циклы.
Чередующаяся последовательность Е1, е1, Е2, е2, …, Еk, ek, Ek+1 вершин
и ребер графа называется маршрутом. Маршрут можно задать и последовательностью вершин Е1, Е2,…, Еk+1, и последовательностью ребер е1, е2,…, еk.
Маршрут называется цепью, если все его ребра различны, и простой цепью,
если все его вершины, кроме, возможно, крайних, различны. Гамильтоновой
цепью называется простая цепь, содержащая все вершины графа.
Маршрут называется циклическим, если Е1 = Еk+1. Циклическая цепь
называется циклом, а циклическая простая цепь – простым циклом. Число
ребер в маршруте называется длиной маршрута. Гамильтоновым циклом
называют простой цикл, содержащий все вершины графа. Длина всякого
цикла не менее трех в графе без петель и кратных ребер. Минимальная из
длин циклов графа называется его обхватом.
Граф называют связным (рис. 9), если любые две его несовпадающие
вершины соединены маршрутом. Для орграфа существует понятие сильной
связности. Путем в графе называется ориентированный маршрут. Орграф
называется сильно связным, если для любых двух вершин Еi, Ej ∈ 𝑆 найдется
путь с началом в Еi и концом в Ej (рис 8). Для неориентированного графа понятия пути и маршрута совпадают. Для установки простой связности ориентацию дуг принимать в расчет не следует.
Е2
Е3
Е1
Е4
Е5
Рис. 8
Е1
Е2
Е3
Е4
Рис. 9
В приложении теории графов дугам (ребрам) графов, моделирующих
реальные процессы, сопоставляются какие-либо числовые характеристики.
Например, если дугами изображаются транспортные магистрали, то числовой характеристикой дуги может быть пропускная способность соответствующей магистрали и т.п. В таких случаях говорят, что графам приписаны
определенные веса.
Пусть G = (S, U) – орграф. Если каждой дуге (Ei, Ej) ∈ 𝑈 поставлено в
соответствие некоторое число w(Ei, Ej), то граф G называется графом со
взвешенными дугами или сетью. При этом вершины графа называются узлами сети. Число w(Ei, Ej) называется весом дуги (Ei, Ej). Весом пути 𝜇 сети Gw
называется число 𝑤(𝜇) = ∑(𝐸𝑖 ,𝐸𝑗)∈𝜇 𝑤(𝐸𝑖 , 𝐸𝑗 ). Понятие сети и веса маршрута
для неориентированного графа определяется аналогично.
3. Способы задания графа.
Матрицы смежности и инцидентности
Имеется несколько способов задания графа. Во многих случаях граф
удобно задавать в виде матрицы смежности (вершин), матрицы смежности
(дуг) или матрицы инциденций.
Матрицей смежности вершин орграфа называется квадратная матрица
А, каждый ij-й элемент которой численно равен количеству дуг, идущих из
Ei-й вершины в Ej-ю. Если G = (𝐸, 𝑒̅ ) — неориентированный граф, то ему
соответствует симметрическая матрица смежности, так как дуги (Ei, Ej) и (Ej,
Ei) существуют одновременно. Если G=(𝐸, 𝑒) — орграф, то соответствующая
ему матрица смежности может не являться симметрической. Матрицы смежности вершин графов, изображенных на рис. 3 и 4, представлены в табл. 1 и 2
соответственно.
Любая симметрическая матрица смежности с целыми неотрицательными элементами может быть интерпретирована как граф.
Введем понятие матрицы смежности дуг (ребер) графа. Для простоты
предположим, что граф не имеет петель и кратных ребер.
Матрицей смежности дуг (ребер) орграфа (графа) называется квадратная матрица А, каждый ij-й элемент которой равен единице, если конечная вершина дуги ⃗⃗𝑒𝑖 является начальной вершиной дуги ⃗⃗𝑒𝑗 (если ребра имеют
общую вершину), и нулю во всех остальных случаях.
Таблица 1 – Матрица смежности вершин орграфа.
Ej E1
E2
E3
E4
E5
Ei
E1
1
1
1
0
0
E2
1
0
1
1
0
E3
0
1
0
1
0
E4
0
0
0
0
1
E5
0
0
0
0
0
Таблица 2 – Матрица смежности вершин графа.
Ej E1
E2
E3
Ei
E1
E2
E3
1
1
2
1
1
2
2
2
0
В табл. 3 и 4 приведены матрицы смежности ребер и дуг графов,
изображенных на рис. 1 и 8 соответственно.
Теорема. Графы изоморфны тогда и только тогда, когда их матрицы
смежности вершин получаются друг из друга одновременными перестановками строк и столбцов (т.е. одновременно с перестановкой i-й и j-й строк
переставляются i-й и j-й столбцы). Из этой теоремы следует, что ранги
матриц смежности изоморфныхт графов равны. Обозначается rank(G).
Матрицей инциденций орграфа называется прямоугольная матрица А,
строки которой соответствуют вершинам, столбцы — дугам, а элементы
равны 1, -1 или 0. При этом на пересечении вершины Е и дуги 𝑒 ставится
значение 𝜀(𝐸, 𝑒) = 1, если Е — начальная вершина дуги 𝑒, 𝜀(𝐸, 𝑒)= - 1,
если Е — конечная вершина, и 𝜀(𝐸, 𝑒) = 0, если Е не инцидентна 𝑒 *.
Если G — неориентированный граф, то можно использовать значения
ε = 0, ε = 1.
Матрица инциденций для графа, изображенного на рис. 10, представлена в табл. 5.
Кроме матричного способа задания графов, который не всегда приемлем и удобен, применяются и другие. Остановимся на рассмотрении спискового способа, наиболее часто применяемого для задания орграфов и так
называемых сетевых графиков.
Таблица 3 – Матрица смежности ребер.
𝑒̅𝑗
𝑒̅1
𝑒̅2
𝑒̅3
𝑒̅4
𝑒̅5
𝑒̅6
𝑒̅7
𝑒̅8
𝑒̅9
𝑒̅𝑖
1
1
1
1
1
𝑒̅1
1
1
1
1
1
𝑒̅2
1
1
1
1
1
𝑒̅3
1
1
1
1
1
𝑒̅4
1
1
1
1
1
1
𝑒̅5
1
1
1
1
1
𝑒̅6
1
1
1
1
1
1
𝑒̅7
1
1
1
1
1
𝑒̅8
1
1
1
1
1
1
𝑒̅9
⃗⃗𝑒𝑖
Таблица 4 – Матрица смежности дуг.
⃗⃗𝑒𝑗
𝑒1
⃗⃗⃗
𝑒2
⃗⃗⃗
𝑒3
⃗⃗⃗
𝑒⃗⃗⃗1
𝑒2
⃗⃗⃗
𝑒3
⃗⃗⃗
𝑒4
⃗⃗⃗
𝑒5
⃗⃗⃗
𝑒4
⃗⃗⃗
1
1
1
1
1
1
1
1
Таблица 5 – Матрица инциденций орграфа.
⃗⃗𝑒𝑗
𝑒1
⃗⃗⃗
𝑒2
⃗⃗⃗
𝑒3
⃗⃗⃗
Ei
E1
E2
E3
𝑒5
⃗⃗⃗
1
-1
-1
1
𝑒4
⃗⃗⃗
𝑒5
⃗⃗⃗
1
-1
-1
1
1
-1
* При рассмотрении матрицы инциденций предполагается, что граф не имеет петель.
Задание орграфа в виде списка вершин и информации о том, с какими
вершинами они соединены дугами
Обозначим через ГЕi множество вершин, соединяемых с вершиной Еi дугами, исходящими из Ei. Орграф, изображенный на рис. 3, представим списковым способом: ГE1 = {E1,Е2,Е3}, ГЕ2={Е1,Е3,E4}, ГE3= {Е2,Е4}, ГЕ4={Е5},
ГЕ5=Ø.
Поскольку множество дуг {𝑒} и отображение (Г) взаимно определяют
друг друга, то орграф можно записать в виде G=(E, 𝑒) или G=(E, Г). Реберные графы можно представить аналогичным образом.
Задание орграфа в виде дуг и информации о том, на какие дуги они
опираются
Если конечная вершина дуги ⃗⃗𝑒𝑖 является начальной вершиной дуги ⃗⃗𝑒𝑗 ,
то будем говорить, что дуга ⃗⃗𝑒𝑖 непосредственно предшествует дуге ⃗⃗𝑒𝑗 , или
дуга ⃗⃗𝑒𝑗 опирается на дугу ⃗⃗𝑒𝑖 . В табл. 6 представлен орграф в виде списка
дуг. Во второй графе таблицы записаны дуги, на которые опираются соответствующие дуги, указанные в первой графе. Такую таблицу будем называть структурной. Орграф, представленный в табл. 6, геометрически изображен на рис. 9.
Рис. 10
Таблица 6 – Структурная таблица графа.
Дуга графа
𝑒1
⃗⃗⃗
𝑒2
⃗⃗⃗
𝑒3
⃗⃗⃗
𝑒4
⃗⃗⃗
𝑒5
⃗⃗⃗
𝑒6
⃗⃗⃗
𝑒7
⃗⃗⃗
𝑒8
⃗⃗⃗
𝑒⃗⃗⃗9
Рис. 11
Опирается на дуги
𝑒2
⃗⃗⃗
𝑒2
⃗⃗⃗
𝑒4 , ⃗⃗⃗
⃗⃗⃗
𝑒5
𝑒6 , 𝑒⃗⃗⃗⃗8 , 𝑒⃗⃗⃗9
⃗⃗⃗
𝑒1 , ⃗⃗⃗
⃗⃗⃗
𝑒3
𝑒2
⃗⃗⃗
Лекция 7
РАЗБИЕНИЕ ЭЛЕМЕНТОВ ОРГРАФА ПО РАНГАМ
1. Отношение строгого порядка в орграфе
Некоторые операции, подлежащие исследованию, включают значительное количество разнообразных компонентов. Орграфы, описывающие
такие операции, содержат большое количество элементов (вершин и дуг).
Выработка управленческих решений по осуществлению операций производится, как правило, на ЭВМ и требует упорядоченной нумерации элементов
орграфа,
Рассмотрим связный орграф без контуров. Положим Ei<Ej — отношение строгого порядка, если существует путь ненулевой длины от Ei к Ej. Это
отношение обладает свойствами:
1) антисимметричности: если Ei<Ej, то не существует Ej<Ei, так как в
противном случае орграф содержал бы контур;
2) транзитивности: если Ei<Ej и Ej<Es, то Ei<Es; справедливость этого
свойства очевидна из определения пути.
Теперь остановимся на разбиении элементов орграфа по рангам (слоям).
Вершина Ei называется вершиной 1-го ранга, если ее полустепень захода 𝜌(𝐸𝑖 )< = 0. Вершина называется вершиной 2-го ранга, если в нее входит
одна или несколько дуг из вершин 1-го ранга и не входит ни одна дуга из
вершин выше 1-го ранга. Вершина Ei называется вершиной k-го ранга, если в
нее входят дуги из вершин не выше (k - 1)-го ранга и при этом имеется хотя
бы одна дуга, исходящая из вершин (k - 1)-го ранга. Дуга ⃗⃗𝑒𝑖 называется дугой
k-го ранга, если она опирается на дугу (дуги) не выше (k - 1)-го ранга, среди
которых есть хотя бы одна дуга (k - 1)-го ранга.
После разбиения в случае необходимости элементам орграфа придается новая, более удобная нумерация, такая, чтобы:
1) все номера элементов некоторого ранга были меньше номеров элементов следующего ранга; номера элементов 1-го ранга были наименьшими, а
номера элементов последнего ранга - наибольшими;
2) порядок номеров элементов внутри одного и того же ранга безразличен
(так как вершины, принадлежащие одному рангу, не соединены между собой
дугами, а дуги друг на друга не опираются).
Рассмотрим методы, используемые для нахождения рангов вершин и
дуг в связном орграфе без контуров.
2. Нахождение рангов вершин на чертеже орграфа
Идея метода основана на последовательном нахождении вершин орграфа,
полустепень захода которых 𝜌∗ (𝐸𝑖 )< =0, и отбрасывании этих вершин и выходящих из них дуг.
Рассмотрим нахождение рангов вершин связного орграфа без контуров
на следующем примере (рис. 1). Найдем вершины 1-го ранга, т. е. локальной
степени 𝜌∗ (𝐸𝑖 )< = 0.
Таких вершин две — Е2 и Е4.
Рис. 1
Рис. 2
Рис. 3
Рис. 4
Отбросим вершины Е2 и Е4 и дуги, выходящие из них, и на полученном орграфе (на рис, 2 отброшенные дуги показаны пунктиром) снова найдем вершины локальной степени 𝜌∗ (𝐸𝑖 )< =0. Ими являются вершины 2-го ранга Е1 и
Е5. Продолжая процесс решения, находим, что единственная вершина Е3 — 3-го
ранга.
Орграф с вершинами, разбитыми по рангам, приведен на рис. 3. На рис. 4
показан тот же орграф с новой нумерацией вершин (𝐸1′ = 𝐸2 , 𝐸2′ = 𝐸4 , 𝐸3′ =
= 𝐸1 , 𝐸4′ = 𝐸5 , 𝐸5′ = 𝐸3 ). Каждый ранг содержит вершины, не соединенные между
собой дугами. С вершин меньшего ранга дуги входят только в вершины большего
ранга. Нумерация вершин возрастает от 1-го ранга к последнему.
3. Метод Демукрона нахождения рангов вершин орграфа
Метод Демукрона основан на использовании матрицы смежности
вершин орграфа. Пусть орграф представлен матрицей смежности Ап×n (табл.
1). Обозначим через vEi=(ai1, ai2, ..., ain), i= ̅̅̅̅̅
1, 𝑛 векторы, являющиеся строками матрицы смежности. Вычислим
𝑛
𝑣1 = ∑ 𝑣𝐸𝑖
𝑖=1
и поместим результат в (n+1) -ю строку табл. 1. Среди неотрицательных компо(1) (1)
(1)
нентов вектора v1 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) находим компоненты, равные нулю.
Таблица 1
Номер
Ej Е1
строки Ei
…
Ek
…
Es
…
En
Ранг
Е1
…
Ek
…
Es
…
En
v1
v2
…
vr
…
…
…
…
…
…
…
…
…
…
…
a1k
…
akk
…
ask
…
ank
ak(1)
ak(2)
…
…
…
…
…
…
…
…
…
…
…
…
a1s
…
aks
…
ass
…
ans
as(1)
as(2)
…
…
…
…
…
…
…
…
…
…
…
…
a1n
…
akn
…
asn
…
ann
an(1)
an(2)
…
r
…
1
…
1
…
2
1
…
k
…
s
…
n
n+1
n+2
…
n+r
a11
…
ak1
…
as1
…
an1
a1(1)
a1(2)
…
0
Новая нумерация
вершин
E’n
…
E’1
…
E’2
…
E’3
Пусть компоненты ak(1) и as(1) равны нулю. Это значит, что в вершины Ek и
Es не входит ни одна дуга, и они относятся к 1-му рангу. В столбце, соответствующем рангу, в строках k и s запишем ранг этих вершин.
Из вектора v1 вычтем векторы-строки, соответствующие вершинам 1-го
ранга Ek и Es. В результате получим вектор
𝑣2 = 𝑣1 − 𝑣𝐸𝑘 − 𝑣𝐸𝑠 ,
в котором появятся новые компоненты, равные нулю.
Пусть an(2) = 0. Следовательно, вершина Еп относится ко 2-му рангу. Ранг
этой вершины, равный 2, заносим в таблицу.
Далее вычисляем вектор
𝑣3 = 𝑣2 − 𝑣𝐸𝑛 ,
в котором появятся новые нули. Следовательно, тем самым будут определены
вершины 3-го ранга.
Процесс вычислений продолжается аналогично ранее изложенному до тех
пор, пока не будет получен вектор, все компоненты которого равны нулю. Пусть
vr — нулевой вектор, новый нулевой компонент которого a1(r) . Тогда Е1 — вершина r-го ранга.
Перенумеруем вершины орграфа согласно их рангам и запишем новые
номера в правый столбец матрицы, как показано в табл. 2.
Результаты вычислений используются для изображения орграфа с новой нумерацией вершин.
Совпадение рангов вершин орграфа, найденных методом Демукрона, и
непосредственно на чертеже орграфа подтверждает правильность решения, и
поэтому после перенумерации вершин получится орграф, изоморфный орграфу, изображенному на рис. 4.
Пример 1. Определим ранги вершин орграфа, изображенного на рис.
1. Для этого запишем его в виде матрицы смежности вершин (табл. 2). Вычислим вектор
5
𝑣1 = ∑ 𝑣𝐸𝑖 , 𝑣1 = (2,0,4,0,2).
𝑖=1
Так как 2-й и 4-й компоненты вектора равны нулю, то вершины Е2 и
E4 относятся к 1-му рангу. В предпоследнем столбце таблицы во 2-й и 4-й
строках запишем ранги соответствующих вершин. Затем вычислим вектор
v2 = vl - vE2 - vE4 и поместим результат в 7-ю строку таблицы, причем клетки
данной строки, над которыми находятся нули в предшествующей строке,
оставим пустыми.
В 7-й строке появилось два новых нуля, которым соответствуют вершины 2-го ранга Е1 и E5.
Вычислим вектор v3 вычитанием из вектора v2 векторов vE1 и vE5 , соответствующих вершинам 2-го ранга, т. е. v3 = v2 - vE1 - vE5. В векторе v3 появится новый нуль, которому соответствует вершина 3-го ранга Е3. На этом
закончим вычисления, так как v3 — нуль-вектор.
Таблица 2
Номер
строки
Ei
1
2
3
4
5
6
7
8
E1
E2
E3
E4
E5
v1
v2
v3
Ej E1
E2
E4
1
1
1
1
2
0
E3
0
1
1
4
2
0
E5
1
1
0
Ранг
2
1
3
1
2
Новая нумерация
вершин
E’3
E’1
E’5
E’2
E’4
2
0
4. Нахождение рангов дуг орграфа
Для нахождения рангов дуг орграфа можно воспользоваться ранее рассмотренными методами, несколько модифицировав их. Разберем один из подходов к определению рангов дуг орграфа, заданного списковым способом. После
разбиения дуг орграфа по рангам им придается более удобная нумерация, такая,
что каждая дуга может опираться на дуги с меньшими порядковыми номерами.
Практическую реализацию этого подхода рассмотрим на примере.
Требуется разбить по рангам дуги орграфа, заданного списковым способом (табл. 3), и при необходимости перенумеровать их. Орграф, представленный
в табл. 3, изображен на рис. 5.
К 1-му рангу будут относиться те дуги, которые не опираются ни на какие
другие дуги.
В табл. 3 дуги ⃗⃗⃗
𝑒2 , ⃗⃗⃗
𝑒6 , ⃗⃗⃗
𝑒7 не опираются ни на какие другие дуги, следовательно, они относятся к 1-му рангу. Ранг этих дуг запишем в графе «Ранг» табл.
3. Дуги ⃗⃗⃗
𝑒3 и ⃗⃗⃗
𝑒4 опираются на дугу ⃗⃗⃗
𝑒7 , следовательно, эти дуги 2-го ранга. Дуга
𝑒5 относится к 3-му рангу, так кaк она опирается на дугу ⃗⃗⃗
⃗⃗⃗
𝑒2 1-го ранга и дугу ⃗⃗⃗
𝑒4 2го ранга. Дуга ⃗⃗⃗
𝑒1 опирается на дуги ⃗⃗⃗
𝑒5 и ⃗⃗⃗
𝑒6 , первая из которых 3-го ранга, а
вторая 1-го, следовательно, дуга ⃗⃗⃗
𝑒1 4-го ранга.
Таблица 3
Дуга орграфа
𝑒1
⃗⃗⃗
𝑒2
⃗⃗⃗
𝑒3
⃗⃗⃗
𝑒4
⃗⃗⃗
𝑒5
⃗⃗⃗
𝑒6
⃗⃗⃗
𝑒7
⃗⃗⃗
Опирается на дуги
𝑒5 , ⃗⃗⃗
⃗⃗⃗
𝑒6
𝑒7
⃗⃗⃗
𝑒7
⃗⃗⃗
𝑒2 , ⃗⃗⃗
⃗⃗⃗
𝑒4
-
Рис. 5
Ранг
Новая нумерация дуг
⃗⃗⃗⃗
𝑏7
⃗⃗⃗
𝑏1
⃗⃗⃗⃗
𝑏4
⃗⃗⃗⃗
𝑏5
⃗⃗⃗⃗
𝑏6
⃗⃗⃗⃗
𝑏2
⃗⃗⃗⃗
𝑏3
4
1
2
2
3
1
1
Рис. 6
Перенумеруем дуги орграфа в соответствии с их рангом. Новая нумерация дуг записана в правом столбце табл. 3. Чтобы записать орграф с новой
нумерацией дуг в структурную таблицу, поступим следующим образом. В левом столбце запишем по порядку все дуги орграфа в новой нумерации, а в
правом – дуги, на которые они опираются (табл. 4).
Таблица 4
Дуга орграфа
⃗⃗⃗
𝑏1
⃗⃗⃗⃗
𝑏2
⃗⃗⃗⃗
𝑏3
⃗⃗⃗⃗
𝑏4
⃗⃗⃗⃗
𝑏5
⃗⃗⃗⃗
𝑏6
⃗⃗⃗⃗
𝑏7
Опирается на дуги
⃗⃗⃗⃗
𝑏3
⃗⃗⃗⃗
𝑏3
⃗⃗⃗1 , 𝑏
⃗⃗⃗⃗5
𝑏
⃗⃗⃗⃗
𝑏2 , ⃗⃗⃗⃗
𝑏6
⃗⃗⃗⃗3 1-го ранга, то в правом столбце в первых трех строТак как дуги ⃗⃗⃗
𝑏1 , ⃗⃗⃗⃗
𝑏2 и 𝑏
ках запишем прочерки. Следующая по списку дуга ⃗⃗⃗⃗
𝑏4 в старой нумерации имела
номер ⃗⃗⃗
𝑒3 и опиралась на дугу ⃗⃗⃗
𝑒7 , которая в новой нумерации имеет номер ⃗⃗⃗⃗⃗
𝑏3 .
Следовательно, дуга ⃗⃗⃗⃗
𝑏4 опирается на дугу ⃗⃗⃗⃗⃗
𝑏3 . Продолжая аналогичным образом, определим, что дуга ⃗⃗⃗⃗
𝑏5 опирается на ⃗⃗⃗⃗
𝑏3 , ⃗⃗⃗⃗
𝑏6 опирается на ⃗⃗⃗
𝑏1 и ⃗⃗⃗⃗
𝑏5 , ⃗⃗⃗⃗
𝑏7 - на ⃗⃗⃗⃗
𝑏2 и
⃗⃗⃗⃗⃗
𝑏6 . Орграф с новой нумерацией дуг, заданный списковым способом, представлен в
табл. 4 и геометрически на рис. 6. Нетрудно заметить, что после нумерации каждая дуга опирается на дуги с меньшими порядковыми номерами. После разбиения
элементов орграфа по рангам и их перенумерации возможно осуществление других важных исследований.
Лекция 8
УПОРЯДОЧИВАНИЕ ДУГ И ВЕРШИН ГРАФА
1. Операции над графами.
Объединение графов.
Граф G = (S, U) называют объединением (или наложением) графов G1 = (S1,
U1) и G2 = (S2, U2), если S = S1∪S2 и U = U1∪U2. Объединение G = G1∪G2
называется дизъюнктным, если S1∩S2 = Ø.
Произведение графов.
Пусть даны графы G1 = (S1, U1) и G2 = (S2, U2). Граф G = (S, U) называют
произведением G1×G2 графов G1 и G2, причем S = S1×S2 – декартово произведение множеств вершин исходных графов, а множество ребер получается
следующим образом: вершины (х1, х2) и (у1, у2) смежны в графе G тогда и
только тогда, когда или х1 = у1, а х2 и у2 смежны в G2, или х2 = у2, а х1 и у1
смежны в G1.
х1
х2
G1
G2
(x1y1)
у1
×
у2
у3
G
(x1y2)
(x1y3)
(x2y1)
=>
(x2y2)
(x2y3)
(x3y1)
(x3y2)
(x3y3)
х3
Рис. 1
Слияние вершин.
Пусть х1 и х2 – две произвольные вершины графа G, а G1 = G\{x1}\{x2}.
К графу G1 присоединим новую вершину у1, соединив ее ребром с каждой из
вершин, входящих в объединение окружений вершин х1 и х2 в графе G. Построенный граф G1 получен из G отождествлением вершин х1 и х2.
х1
G
х2
Рис. 2
G1
y1
Операция стягивания ребра означает отождествление двух смежных
вершин. Граф G называется стягиваемым к графу G1, если G1 получается из G
в результате некоторой последовательности стягиваний ребер.
Расщепление вершин.
Пусть х1 – одна из вершин графа G. Разобьем ее окружение на две части N1 и N2; удалим вершину х1 вместе с инцидентными ей ребрами; добавим
новые вершины х2 и х3 и соединяющее их ребро (х2, х3); вершину х2 соединим
с каждой вершиной из множества N2. В результате получим граф 𝐺̃ . Этот
граф построен из исходного графа G расщеплением вершины х1.
G
𝐺̃
х1
x3
x2
N2
N1
Рис. 3
2. Метрические характеристики графа.
Рассмотрим связный граф G = (S, U); пусть х1 и х2 – две его вершины.
Длина кратчайшего (х1, х2) маршрута называется расстоянием между вершинами х1 и х2, обозначается через d(x1, x2). Очевидно, что расстояние между
вершинами является простой цепью и d(xi, xi) = 0. Для любой вершины х величина
𝑒(𝑥) = max𝑦∈𝑆 𝑑(𝑥, 𝑦)
(1)
называется эксцентриситетом вершины х. Максимальный из всех эксцентриситетов вершин называется диаметром графа и обозначается d(G), т.е.
𝑑(𝐺) = max𝑥∈𝑆 𝑙(𝑥) = max𝑥∈𝑆 max𝑦∈𝑆 𝑑(𝑥, 𝑦)
(2)
Минимальный из эксцентриситетов вершин графа называется его радиусом и
обозначается через r(G):
𝑟(𝐺) = min𝑥∈𝑆 𝑙(𝑥) = min𝑥∈𝑆 max𝑦∈𝑆 𝑑(𝑥, 𝑦)
(3)
Вершина х называется периферийной, если ее эксцентриситет равен диаметру графа, т.е. е(х) = d(G). Простая цепь, расстояние между концами которой
равно d(G), называется диаметральной цепью.
Теорема. Для любого связного графа G справедливо неравенство
d(G)≤ rank G
(4)
Вершина х называется центральной, если е(х) = r(x). Множество всех центральных вершин графа называется его центром. Центром может быть единственная вершина графа или несколько вершин.
Пример. е(х1) = е(х2) = е(х4) = е(х6) = 3;
е(х3) = е(х7) = 4; е(х5) = 2.
Таким образом, d(G) = 4; r(G) = 2.
Периферийные вершины х3 и х7; диаметральные цепи х3 – х2 – х5 – х6 – х7 и х3
– х4 – х5 – х6 – х7; центральная вершина х5.
х1
х6
х7
х5
х2
х4
х3
Рис. 4
х1
d(x1, x2) = 1
d(x1, x3) = 2
d(x1, x4) = 2
d(x1, x5) = 1
d(x1, x6) = 2
d(x1, x7) = 3
max d = 3; e(x1) = 3
3. Упорядочивание дуг и вершин орграфа
Под упорядочиванием вершин связного орграфа без контуров, т.е. циклических цепей, понимают такое разбиение его вершин на группы, при котором:
1). Вершины первой группы не имеют предшествующих вершин, а вершины
последней группы последующих.
2). Вершины любой другой группы не имеют предшествующих в следующей
группе.
3). Вершины одной и той же группы дугами не соединяются.
Такое разбиение всегда возможно. В результате подобного упорядочивания получается граф, изоморфный исходному. Упорядочивание элементов
выполняется графическим или матричным способом. Графический способ
носит название алгоритма Фалкерсона.
4. Алгоритм Фалкерсона.
1. Найти вершины графа, в которые не входит ни одна дуга. Они образуют
первую группу. Пронумеровать вершины группы в произвольном порядке.
2. Вычеркнуть все пронумерованные вершины и дуги, из них исходящие. В
получившемся графе найдется, по крайней мере, одна вершина, в которую не
входит ни одна дуга. Этой вершине, входящей во вторую группу, присвоить
очередной номер, и т.д. Второй шаг повторять до тех пор, пока не будут упорядочены все вершины.
Аналогичным образом упорядочиваются дуги орграфа.
Пример 1. Вершина В не содержит входящих дуг, отнесем ее к первой группе. Вычеркиваем все дуги, исходящие из В. Получим граф, где В – вершина
первой группы.
В
В
D
А
D
А
C
С
Е
E
Рис. 5
Рис. 6
В вершину D не заходит ни одна дуга. Вычеркиваем дуги, исходящие из D.
Вершина D – второй группы. В вершину Е не заходит ни одна дуга. Вычеркиваем дуги, исходящие из нее. Е – вершина третьей группы. Вычеркиваем
дуги, исходящие из нее. А – вершина четвертой группы, С – вершина пятой
группы.
В
BI
D
D II
A
C
A
C
E
EIII
Рис. 7
Рис. 8
Е
В
D
C
A
1
2
3
Рис. 9
4
5 группа
Упорядочим теперь вершины этого графа матричным способом. Для
этого составим матрицу смежности вершин Р. Вычислим компоненты вектора 𝜈1 =∑5𝑖=1 𝑃+ (𝑥𝑖 ) , представляющие собой полустепени захода вершин графа.
A B C D E ∑
𝐴 0 0 1 0 0
𝐵 1 0 1 1 1
𝑃=𝐶 0 0 0 0 0
𝐷 0 0 1 0 1
𝐸 ( 1 0 1 0 0)
𝜈1 2 0 4 1 2
Для орграфов различаю полустепень захода 𝑃+ (𝑥𝑖 ) вершины 𝑥𝑖 (количество дуг, заходящих в 𝑥𝑖 ) и полустепень выхода 𝑃− (𝑥𝑖 ) (количество дуг,
исходящих из 𝑥𝑖 ). Полустепень захода вершины В оказалась равной 0. Это
значит, что в эту вершину не заходит ни одна дуга и вершина В образует
первую группу. Исключим из рассмотрения вершину В и дуги, из нее исходящие, вычеркнув соответствующую строку матрицы Р. Вычислим компоненты вектора 𝜈2 = 𝜈1 − 𝜈𝐵 . Нулевая компонента соответствует вершине D,
т.к. вершина D образует вторую группу. 𝜈3 = 𝜈2 − 𝜈𝐷 . Вершина Е образует
третью группу. 𝜈4 = 𝜈3 − 𝜈𝐸 . Вершина А образует четвертую группу.
𝜈5 = 𝜈4 − 𝜈𝐴 . Вершина С – пятую.
При упорядочивании дуг получается та же картина, а сами дуги нумеруются подобным же образом. Используем опять граф примера 1 (рис. 5).
Найдем дуги, не имеющие непосредственно предшествующих дуг (они образуют первую группу). Вычеркнем найденные дуги. После этого найдется, по
крайней мере, одна новая дуга, не имеющая непосредственно предшествующей (в графе без первой группы). Эти дуги составят вторую группу.
С
В
D
C
B
E
D
B
E
B
A
I гр.
C
E
A
E
II гр.
Рис. 10
C
A
III гр.
IV гр.
Лекция 9
ОПРЕДЕЛЕНИЕ ЭКСТРЕМАЛЬНЫХ ПУТЕЙ НА ГРАФАХ
1. Выявление маршрутов с заданным количеством ребер.
С помощью матрицы смежности вершин можно найти все маршруты,
содержащие заданное количество ребер (дуг). Справедлива следующая теорема.
Теорема. Для определения количества маршрутов, состоящих из k ребер
(дуг), необходимо возвести в k-ю степень матрицу смежности вершин. Тогда
(𝑘)
элемент 𝑃𝑖𝑗 даст количество маршрутов длины k (состоящих из k ребер) из
вершины xi в вершину xj.
Пример 1. Составим матрицу смежности вершин. Возведем ее в квадрат.
A
𝐴 0
𝐵 1
𝑃= (
𝐶 1
𝐷 1
B
1
0
1
1
C
1
1
0
1
D
1
1
)
1
0
3
2
𝑃2 = (
2
2
2
3
2
2
2
2
3
2
2
2
)
2
3
(2)
Рассмотрим первую строку. Элемент 𝑃11 = 3.
Это значит, что существуют три маршрута из
u1
u5
А в А длиной в два ребра. Действительно, это
u2
маршруты Аu1Bu1A, Au2Cu2A, Au3Du3A. Из А
A
C
в В существуют два маршрута: Au2Cu5B и
u3
u4 u6
Au3Du4B. Если использовать числовую матрицу
смежности вершин, то для нахождения самих
D
маршрутов необходимо работать с графом.
Рис. 1
Если же воспользоваться модифицированной
матрицей смежности, в ячейки которой записаны названия ребер, то можно получить не только количество маршрутов, но
и сами маршруты.
0 𝑢1 𝑢2 𝑢3
0 𝑢1 𝑢2 𝑢3
𝑢
0 𝑢5 𝑢4
𝑢
0 𝑢5 𝑢4
𝑃𝑀2 = ( 1
)∙( 1
)=
𝑢2 𝑢5 0 𝑢6
𝑢2 𝑢5 0 𝑢6
𝑢3 𝑢4 𝑢6 0
𝑢3 𝑢4 𝑢6 0
B
𝐴 𝑢1 𝑢1 + 𝑢2 𝑢2 + 𝑢3 𝑢3
𝑢2 𝑢5 + 𝑢3 𝑢4
𝐵
= (
𝑢5 𝑢1 + 𝑢6 𝑢3
𝐶
𝑢4 𝑢1 + 𝑢2 𝑢6
𝐷
A
𝑢2 𝑢5 + 𝑢3 𝑢4
𝑢1 𝑢1 + 𝑢5 𝑢5 + 𝑢4 𝑢4
𝑢1 𝑢2 + 𝑢6 𝑢4
𝑢3 𝑢1 + 𝑢5 𝑢6
𝑢1 𝑢5 + 𝑢3 𝑢6
𝑢1 𝑢2 + 𝑢4 𝑢6
𝑢2 𝑢5 + 𝑢5 𝑢5 + 𝑢6 𝑢6
𝑢3 𝑢2 + 𝑢4 𝑢5
𝑢1 𝑢4 + 𝑢2 𝑢6
𝑢1 𝑢3 + 𝑢5 𝑢6
)
𝑢2 𝑢3 + 𝑢5 𝑢4
𝑢3 𝑢3 + 𝑢4 𝑢4 + 𝑢6 𝑢6
B
C
D
Аналогично обстоит дело и с орграфом. У него матрица смежности вершин
несимметрическая.
Пример 2. Пусть дан орграф.
u5
А
u1
u3
D
u2
B
u4
C
Рис. 2
A
𝐴 0
𝐵 1
𝑃= (
𝐶 0
𝐷 0
B
1
0
1
0
C
1
1
0
0
D
0
1
0
0
) 𝑃2 = (
1
1
0
0
(2)
1
2
0
0
1
1
1
0
1
1
)
0
0
1
2
𝑃3 = (
0
0
2
1
2
0
2
2
1
0
1
1
)
1
0
Рассмотрим элемент 𝑃22 = 2, т.е. из вершины В в вершину В есть два
маршрута длиной две дуги. Это маршруты Bu3Cu4B и Bu2Au1B. После возве(3)
дения матрицы в куб сохраняется та же картина. Например, 𝑃12 = 2. Это
значит, что есть два маршрута длиной три дуги из вершины А в вершину В:
Au1Bu2Au1B и Au1Bu3Cu4B. Для получения цепей (маршрутов, в которых
каждое ребро встречается один раз) нужно в модифицированной матрице Р3
вычеркнуть те слагаемые, в которых какой-либо сомножитель встречается
более одного раза.
Из теоремы следуют два важных следствия, позволяющие определять
наличие маршрутов и циклов в графе.
Следствие 1. В графе G мощности n тогда и только тогда существует (xi, xj) –
маршрут (xi ≠ xj), когда (i, j)-й элемент матрицы Р + Р2 + … + Рn-1 не равен
нулю.
Следствие 2. В графе G мощности n тогда и только тогда существует цикл,
содержащий вершину xi, когда когда (i, j)-й элемент матрицы Р + Р2 + Р3… +
Рn не равен нулю.
В рассмотренном примере 2 имеем n = 4.
2 3 3 2
2 4 4 2
1 4 3 2
3 3 4 2
𝑃4 = (
) 𝐴 = 𝑃 + 𝑃2 + 𝑃3 = (
)
2 1 2 1
1 3 2 2
0 0 0 0
0 0 0 0
4 7 7 4
4 7 7 4
𝐵 = 𝑃 + 𝑃2 + 𝑃3 + 𝑃4 = (
)
3 4 4 3
0 0 0 0
Рассмотрим элементы матрицы А. Например, 𝑎24 = 2 ≠ 0. Это значит, что в
исходном графе существуют маршруты из вершины В в вершину D. Это
маршруты BCD, BACD, BCBACD. Аналогично, 𝑏22 = 7 ≠ 0. Таким образом,
существуют циклы, проходящие через вершину В, например, циклы ВАСВ,
ВАВ, ВСВ. Так как 𝑏44 = 0, то через вершину D не проходит ни один цикл.
2. Определение экстремальных путей. Метод Шимбелла.
Введем специальные операции над элементами матрицы смежности вершин
(операции Шимбелла).
1. Операция умножения двух величин a и b при возведении матрицы в степень соответствует их алгебраической сумме, т.е.
𝑎 ∙ 𝑏 = 𝑏 ∙ 𝑎 => 𝑎 + 𝑏 = 𝑏 + 𝑎,
𝑎 ∙ 0 = 0 ∙ 𝑎 = 0 => 𝑎 + 0 = 0.
(1)
2. Операция сложения двух величин a и b заменяется выбором из этих величин минимального (максимального) элемента, т.е.
𝑎 + 𝑏 = 𝑏 + 𝑎 = min(max){a, b}
(2)
Нули при этом игнорируются. Минимальный или максимальный элемент выбирается из ненулевых элементов.
С помощью этих операций длины кратчайших или максимальных путей между всеми вершинами определяются возведением в степень весовой
матрицы Ω, содержащей веса ребер. Например, элементы матрицы Ω2 вычисляют следующим образом:
(2)
(1)
(1)
(1)
(1)
(1)
(1)
𝑤𝑖𝑗 = min(𝑚𝑎𝑥) {𝑤𝑖1 + 𝑤1𝑗 , 𝑤𝑖2 + 𝑤2𝑗 , … , (𝑤𝑖𝑛 + 𝑤𝑛𝑗 )}
Аналогично находят элементы k-й степени матрицы Ω.
Пример.
В
1
Составим матрицу весов. Она определяет
все маршруты, состоящие из одного ребра.
Найдем кратчайшие пути из двух ребер.
Для этого возведем эту матрицу в квадрат
с учетом операций Шимбелла.
2
2
2
А
3
2
С
1
D
Рис. 3
A
𝐴 0
𝐵 2
Ω= (
𝐶 0
𝐷 0
B C
1 3
0 2
0 0
2 1
D
2
0
)
0
0
0 1 3 2
0 1 3 2
3 4 3 0
2 0 2 0
2 0 2 0
0 2 5 4
Ω2 = (
)∙(
)=(
)
0 0 0 0
0 0 0 0
0 0 0 0
0 2 1 0
0 2 1 0
4 0 4 0
Например,
(2)
(1)
(1)
(1)
(1)
(1)
(1)
(1)
(1)
𝑤11 = min {(𝑤11 + 𝑤11 ) , (𝑤12 + 𝑤21 ) , (𝑤13 + 𝑤31 ) , (𝑤14 + 𝑤41 )} =
= min{(0 + 0), (1 + 2), (3 + 0), (2 + 0)} = min{0,3,0,0} = 3.
Аналогично, кратчайшими путями из трех ребер будут
3 4 3 0
0 1 3 2
6 4 6 5
0 2 5 4
2 0 2 0
4 6 4 0
Ω3 = (
)∙(
)=(
)
0 0 0 0
0 0 0 0
0 0 0 0
4 0 4 0
0 2 1 0
0 5 7 6
Например, длина кратчайшего пути из трех ребер из вершины D в вершину С
равна 7. Это путь DBAC.
3. Нахождение кратчайших путей. Алгоритм Дейкстры.
Пусть G = {S, U, Ω} – ориентированный граф со взвешенными дугами.
Обозначим S-вершину – начало пути и t-вершину – конец пути. В процессе
работы этого алгоритма узлам сети 𝑥𝑖 ∈ 𝑆 приписываются числа (метки)
𝑑(𝑥𝑖 ), которые служат оценкой длины (веса) кратчайшего пути от вершины S
к вершине 𝑥𝑖 . Если вершина 𝑥𝑖 получила на некотором шаге метку 𝑑(𝑥𝑖 ), это
означает, что в графе G существует путь из S в 𝑥𝑖 , имеющий вес 𝑑(𝑥𝑖 ).
Метки могут быть в двух состояниях – быть временными или постоянными. Превращение метки в постоянную означает, что кратчайшее расстояние от вершины S до соответствующей вершины найдено.
Алгоритм Дейкстры содержит одно ограничение – веса дуг должны
быть положительными. Алгоритм состоит из двух этапов. На первом находится длина кратчайшего пути, на втором строится сам путь от вершины S к
вершине t.
Этап 1. Нахождение длины кратчайшего пути.
Шаг 1. Присвоение вершинам начальных меток. Полагаем d(S) = 0* и считаем эту метку постоянной (постоянные метки помечаются звездочкой). Для
остальных вершин 𝑥𝑖 ∈ 𝑆, 𝑥𝑖 ≠ 𝑆 полагаем 𝑑(𝑥𝑖 ) = ∞ и считаем эти метки
временными. Пусть 𝑥̃ = 𝑆, 𝑥̃ - обозначение временной вершины.
Шаг 2. Изменение меток. Для каждой вершины 𝑥𝑖 с временной меткой, непосредственно следующей за вершиной 𝑥̃ , меняем ее метку в соответствии со
следующим правилом:
𝑑нов. (𝑥𝑖 ) = min{𝑑стар. (𝑥𝑖 ), 𝑑(𝑥̃) + 𝑤(𝑥̃, 𝑥𝑖 )}
(3)
Шаг 3. Превращение метки из временной в постоянную. Из всех вершин с
временными метками выбираем вершину 𝑥𝑗∗ с наименьшим значением метки.
𝑑(𝑥𝑗∗ ) = min{𝑑(𝑥𝑗 )/𝑥𝑗 ∈ 𝑆, 𝑑(𝑥𝑗 ) − временная}
(4)
∗
Превращаем эту метку в постоянную и полагаем 𝑥̃ = 𝑥𝑗 .
Шаг 4. Проверка на завершение первого этапа. Если 𝑥̃ = 𝑡, то 𝑑(𝑥̃) - длина
кратчайшего пути от S до t. В противном случае происходит возвращение ко
второму шагу.
Этап 2. Построение кратчайшего пути.
Шаг 5. Последовательный поиск дуг кратчайшего пути. Среди вершин,
непосредственно предшествующих вершине 𝑥̃ с постоянными метками,
находим вершину 𝑥𝑖 , удовлетворяющую соотношению:
𝑑(𝑥̃) = 𝑑(𝑥𝑖 ) + 𝑤(𝑥𝑖 , 𝑥̃)
(5)
Включаем дугу (𝑥𝑖 , 𝑥̃) в искомый путь и полагаем 𝑥̃ = 𝑥𝑖 .
Шаг 6. Проверка на завершение второго этапа. Если 𝑥̃ = 𝑆, то кратчайший
путь найден – его образует последовательность дуг, полученных на пятом
шаге и выстроенных в обратном порядке. В противном случае возвращаемся
к пятому шагу.
Пример. Задана весовая матрица Ω сети G. Найти минимальный путь из
вершины х1 в вершину х6 по алгоритму Дейкстры.
х1
𝑥1 −
𝑥2 ∞
𝑥3 ∞
Ω=𝑥
4 ∞
𝑥5 ∞
𝑥6 (∞
х2
−
−
∞
5
6
∞
х3
∞
8
−
7
∞
∞
х4 х5 х6
6 11 ∞
∞ ∞ ∞
∞ 6 9
− 6 ∞
∞ − 4
∞ ∞ −)
Поскольку в данном графе есть цикл
между вершинами х2, х3 и х5, то
вершины графа нельзя упорядочить
по алгоритму Фалкерсона.
*
х3 (∞,13 )
7
9
(∞,6*)
х4 5 8 6
6
9 6 х2 (∞,9*)
х1 (0*) 11
6
Этап 1. Шаг 1. Полагаем 𝑑(𝑥1 ) = 0,
х6 (∞,15 ) 𝑥̃ = 𝑥1 .
𝑑(𝑥1 ) = 𝑑(𝑥2 ) = 𝑑(𝑥3 ) = 𝑑(𝑥4 ) =
4
= 𝑑(𝑥5 ) = 𝑑(𝑥6 ) = ∞.
*
х5 (∞,11 )
1-я итерация.
Шаг 2. Множество вершин,
Рис. 4
непосредственно следующих за
𝑥̃ = 𝑥1 - это 𝑆̃ = {𝑥2 , 𝑥4 , 𝑥5 }.
Пересчитываем временные метки этих вершин:
𝑑(𝑥2 ) = min{∞, 0∗ + 9} = 9
𝑑(𝑥4 ) = min{∞, 0∗ + 6} = 6
𝑑(𝑥5 ) = min{∞, 0∗ + 11} = 11
Шаг 3. Одна из временных меток превращается в постоянную.
min{9, ∞, 6, 11, ∞} = 6 = 𝑑(𝑥4 ), 𝑥̃ = 𝑥4
Шаг 4. 𝑥̃ = 𝑥4 ≠ 𝑡 = 𝑥6 , происходит возвращение на второй шаг.
2-я итерация.
Шаг 2. 𝑆̃ = {𝑥2 , 𝑥3 , 𝑥5 }.
*
𝑑(𝑥2 ) = min{9, 6∗ + 5} = 9
𝑑(𝑥3 ) = min{∞, 6∗ + 7} = 13
𝑑(𝑥5 ) = min{11, 6∗ + 6} = 11
Шаг 3. min{𝑑(𝑥2 ), 𝑑(𝑥3 ), 𝑑(𝑥5 ), 𝑑(𝑥6 )} = min{9,13,11, ∞} = 9.
𝑑(𝑥2 ) = 9, 𝑥̃ = 𝑥2 .
Шаг 4. 𝑥2 ≠ 𝑥6 , возвращение на второй шаг.
3-я итерация.
Шаг 2. 𝑆̃ = {𝑥3 }.
𝑑(𝑥3 ) = min{13, 9∗ + 8} = 13
Шаг 3. min{𝑑(𝑥3 ), 𝑑(𝑥5 ), 𝑑(𝑥6 )} = min{13,11, ∞} = 11
𝑑(𝑥5 ) = 11, 𝑥̃ = 𝑥5 .
Шаг 4. 𝑥5 ≠ 𝑥6 , возвращение на второй шаг.
4-я итерация.
Шаг 2. 𝑆̃ = {𝑥6 }.
𝑑(𝑥6 ) = min{∞, 11∗ + 4} = 15
Шаг 3. min{𝑑(𝑥3 ), 𝑑(𝑥6 )} = min{13,15} = 13∗
𝑑(𝑥3 ) = 13, 𝑥̃ = 𝑥3 .
Шаг 4. 𝑥3 ≠ 𝑥6 , возвращение на второй шаг.
5-я итерация.
Шаг 2. 𝑆̃ = {𝑥6 }.
𝑑(𝑥6 ) = min{15, 13∗ + 9} = 15
Шаг 3. min{𝑑(𝑥6 )} = min{15} = 15∗
𝑥̃ = 𝑥6 .
Шаг 4. 𝑥6 = 𝑡 = 𝑥6 , конец первого этапа.
Этап 2. Шаг 5. Составим множество вершин, непосредственно предшествующих 𝑥̃ = 𝑥6 с постоянными метками 𝑆̃ = {𝑥3 , 𝑥5 }. Проверим для этих двух
вершин выполнение равенства (5).
𝑑(𝑥̃) = 15 = 11∗ + 4 = 𝑑(𝑥5 ) + 𝑤(𝑥5 , 𝑥6 ),
𝑑(𝑥̃) = 15 ≠ 13∗ + 9 = 𝑑(𝑥3 ) + 𝑤(𝑥3 , 𝑥6 ),
Включаем дугу (𝑥5 , 𝑥6 ) в кратчайший путь. 𝑥̃ = 𝑥5 .
Шаг 6. 𝑥̃ ≠ 𝑆 = 𝑥1 , возвращение на 5-й шаг.
2-я итерация.
Шаг 5. 𝑆̃ = {𝑥1 , 𝑥4 }.
𝑑(𝑥̃) = 11 = 0∗ + 11 = 𝑑(𝑥1 ) + 𝑤(𝑥1 , 𝑥5 ),
𝑑(𝑥̃) = 11 ≠ 6∗ + 6 = 𝑑(𝑥4 ) + 𝑤(𝑥4 , 𝑥5 ),
Включаем дугу (𝑥1 , 𝑥5 ) в кратчайший путь. 𝑥̃ = 𝑥1 .
Шаг 6. 𝑥̃ = 𝑆 = 𝑥1 , завершение второго этапа.
Кратчайший путь от вершины 𝑥1 до вершины 𝑥6 построен. Его длина (вес)
равна 15, сам путь образует следующая последовательность дуг: 𝜇 =
(𝑥1 , 𝑥5 ) − (𝑥5 , 𝑥6 ).
Download