1. Определения графов
Как это не удивительно, но для понятия "граф" нет общепризнанного единого определения. Разные авторы, особенно применительно к разным приложениям, называют «графом» очень похожие, но все-таки различные объекты. Здесь используется терминология [26], которая была выбрана из соображений максимального упрощения определений и доказательств.
История теории графов
Теория графов многократно переоткрывалась разными авторами при решении различных прикладных задач.
1. Задача о Кёнuгсбергских мостах. Обойти все четыре части суши, пройдя по каждому мосту один раз, и вернуться в исходную точку (рис. 7.1). Эта задача была решена Эйлером в 1736 году.
Рис. 1. Иллюстрация к задаче о Кенигсбергских мостах
2. Задача о трех домах и трех колодцах. Имеется три дома и три колодца. Провести от каждого дома к каждому колодцу тропинку так, чтобы тропинки не пересекались (рис. 7.2). Эта задача была решена Куратовским в 1930 году.
Рис.2. Иллюстрация к задаче о трех домах и трех колодцах
3. Задача о четырех красках. Любую карту на плоскости раскрасить четырьмя красками так, чтобы никакие две соседние области не были закрашены одним цветом (рис. 7.3).
Рис..3. Иллюстрация к задаче о четырех красках
Основное определение
Графом G(U, V) называется совокупность двух множеств — непустого множества U (множества вершин) и множества V бинарного отношения, определённого на множестве U.
Число вершин графа G обозначим n, а число ребер - m:
Смежность
Пусть u1, u2 — вершины, e = (v2, v1) — соединяющее их ребро. Тогда вершина u1 и ребро е инцидентны, вершина u2 и ребро е также инцидентны. Два ребра, инцидентные одной вершине, называются смежными; две вершины, инцидентные одному ребру, также называются смежными.
Множество вершин, смежных с вершиной u, называется множеством смежности вершины u и обозначается Г+(u):
ЗАМЕЧАНИЕ
Если не оговорено противное, то подразумевается Г+ и обозначается просто Г.
Диаграммы
Обычно граф изображают диаграммой: вершины — точками (или кружками), ребра — линиями.
Пример
На рис. 7.4 приведен пример диаграммы графа, имеющего четыре вершины и пять ребер. В этом графе вершины u1 и u2, u2 и u3, u3 и u4, u4 и u1, u2 и u4 смежны, а вершины u1 и u3 не смежны. Смежные ребра: e1 и е2, е2 и е3, е3 и е4, е4 и e1, e1 и е5, е2 и е5, е3 и е5, е4 и е5. Несмежные ребра: e1 и е3, е2 и е4.
Рис.4. Диаграмма графа
Виды графов
1. Если элементами множества Е являются упорядоченные пары, то граф назы вается ориентированным (или орграфом). В этом случае элементы множества V называются узлами, а элементы множества Е — дугами.
2. Если элементом множества Е может быть пара одинаковых (не различных) элементов V, то такой элемент множества Е называется петлей, а граф называется графом с петлями (или псевдографом).
3. Если Е является не множеством, а набором, содержащим несколько одинаковых элементов, то эти элементы называются кратными ребрами, а граф называется мулътшрафом.
4. Если элементами множества Е являются не обязательно двухэлементные, а любые подмножества множества V, то такие элементы множества Е называются гипердугами, а граф называется гиперграфом.
5.Если задана функция F: V→М и/или F: Е→М, то множество М называется множеством пометок, а граф называется помеченным (или нагруженным). В качестве множества пометок обычно используются буквы или целые числа.
Изоморфизм графов
Говорят, что два графа G1(V1,E1) и G2(V2,E2) изоморфны (обозначается G1 ~ G2), если существует биекция h: V1 → V2, сохраняющая смежность:
e1 = (u,v) ∊ Е1<=>e2 = (h(u),h(v)) ∊ E2,
Изоморфизм графов есть отношение эквивалентности. Действительно, изоморфизм обладает всеми необходимыми свойствами:
рефлексивность: G ~ G, где требуемая биекция суть тождественная функция;
симметричность: если G1 ~ G2 с биекцией h, то G2 ~ G1 с биекцией h-1;
транзитивность: если g1 ~ G2 с биекцией h и G2 ~ G3 с биекцией g, то g1 ~ G3 с биекцией g∙h.
Графы рассматриваются с точностью до изоморфизма, то есть рассматриваются классы эквивалентности по отношению изоморфизма (см. раздел 2.2).
Элементы графов
После рассмотрения определений, относящихся к графам как к цельным объектам, естественно дать определения различным составным элементам графов.
Подграфы
Граф G'(V’, E') называется подграфом графа G(V, E) (обозначается G’ G), если V’ V и/или Е' Е.
Если V’ = V, то G' называется остовным подграфом G.
Если V’ V &Е' E&(V’≠ V Е' ≠ Е), то граф G' называется собственным подграфом графа G.
Подграф G'(V',E'} называется правильным подграфом графа G(V,E), если G' содержит все возможные ребра G:
u,v∊V’ (u,v) ∊ E(u,v) ∊E'.
Правильный подграф G'(V’, E') графа G(V, E) определяется подмножеством вершин V’.
Валентность
Количество ребер, инцидентных вершине v, называется степенью (или валентностью) вершины v и обозначается d(v):
∊ V0≤d()≤p - l, d() = Г+().
Обозначим минимальную степень вершины графа G через δ(G), а максимальную — через ∆(G):
Если степени всех вершин равны k, то граф называется регулярным степени k:
δ(G) = (G) = k.
Степень регулярности является инвариантом графа и обозначается r(G). Для нерегулярных графов r(G) не определено.
Пример
Рис. 7.7. Диаграмма регулярного графа степени 3
Если степень вершины равна 0 (то есть d(v) = 0), то вершина называется изолированной. Если степень вершины равна 1 (то есть d(v) = 1), то вершина называется концевой, или висячей.
Для орграфа число дуг, исходящих из вершины v, называется полустепенъю исхода, а входящих — полустепенью захода. Обозначаются эти числа, соответственно, d-(v) и d+(v).
ТЕОРЕМА (Эйлера) Сумма степеней вершин графа равна удвоенному количеству ребер:
= 2q.
доказательство
При подсчете суммы степеней вершин каждое ребро учитывается два раза: для одного конца ребра и для другого.
Маршруты, цепи, циклы
Маршрутом в графе называется чередующаяся последовательность вершин и ребер v0,e1,v1,e2,v2,...,ek,vk, в которой любые два соседних элемента инцидентны.
ЗАМЕЧАНИЕ
Это определение подходит также для псевдо-, мульти- и орграфов. Для «обычного» графа достаточно указать только последовательность вершин или только последовательность ребер.
Если 0 = k, то маршрут замкнут, иначе открыт.
Если все ребра различны, то маршрут называется цепью. Если все вершины (а значит, и ребра) различны, то маршрут называется простой цепью. В цепи 0,el,... ,ek,k вершины v0 и vk называются концами цепи. Говорят, что цепь с концами и и v соединяет вершины и и v. Цепь, соединяющая вершины и и v, обозначается (и, v). Очевиднб, что если есть цепь, соединяющая вершины и и v, то есть и простая цепь, соединяющая эти вершины.
Замкнутая цепь называется циклом; замкнутая простая цепь называется простым циклом. Число циклов в графе G обозначается z(G). Граф без циклов называется ациклическим.
Для орграфов цепь называется путем, а цикл — контуром.
Пример
В графе, диаграмма которого приведена на рис. 7.8:
1.1, 3, 1, 4 — маршрут, но не цепь;
2. 1, 3, 5, 2, 3, 4 — цепь, но не простая цепь;
3. 1, 4, 3, 2, 5 — простая цепь;
4. 1, 3, 5, 2, 3, 4, 1 — цикл, но не простой цикл;
5. 1, 3, 4, 1 — простой цикл.
Рис.8. Маршруты, цепи, циклы
Расстояние между вершинами
Длиной маршрута называется количество ребер в нем (с повторениями). Если маршрут М= v0, e1,1,e2,v2,..., ek, k то длина М равна k (обозначается |М| = k).
Расстоянием между вершинами и и v (обозначается d(u,v)) называется длина кратчайшей цепи (u,v), а сама кратчайшая цепь называется геодезической.
ЗАМЕЧАНИЕ -
Если и, v, то по определению d(u, v).
Диаметром графа G (обозначается D(G)) называется длина длиннейшей геодезической.
Множество вершин, находящихся на одинаковом расстоянии n от вершины v (обозначение D(v,n)), называется ярусом:
D(v,u).
Связность
Говорят, что две вершины в графе связаны, если существует соединяющая их (простая) цепь. Граф, в котором все вершины связаны, называется связным.
Отношение связанности вершин является эквивалентностью. Классы эквивалентности по отношению связанности называются компонентами связности графа. Число компонент связности графа G обозначается k(G). Граф G является связным тогда и только тогда, когда k(G) = 1. Если k(G) > 1, то G — несвязный граф. Граф, состоящий только из изолированных вершин (в котором k(G) = p(G) и r(G) = 0), называется вполне несвязным.
Виды графов и операции над графами
В данном разделе рассматриваются различные частные случаи графов и вводятся операции над графами и их элементами. Заметим, что не все из используемых обозначений операций над графами являются традиционными и общепринятыми.
Тривиальные и полные графы
Граф, состоящий из одной вершины, называется тривиальным. Граф, состоящий из простого цикла с k вершинами, обозначается Сk.
Пример
С3 — треугольник.
Граф, в котором каждая пара вершин смежна, называется полным. Полный граф с р вершинами обозначается Кр, он имеет максимально возможное число ребер:
Полный подграф (некоторого графа) называется кликой (этого графа).
Двудольные графы
Двудольный граф (или биграф, пли четный граф) — это граф G(V,E), такой что множество V разбито на два непересекающихся множества V1 и V2 (V1 V2 = V & V1 V2 = ), причем всякое ребро из Е инцидентно вершине из V1 и вершине из V2 (то есть соединяет вершину из V1 с вершиной из |V2). Множества V1 и V2 называются долями двудольного графа. Если двудольный граф содержит все ребра, соединяющие множества V1 и V2, то он называется полным двудольным графом. Если |V1| = m и |V2| = п, то полный двудольный граф обозначается Km,n.
Пример
На рис. 7.9 приведена диаграмма графа К3,3.
Рис..9. Диаграмма графа Кз,з
ТЕОРЕМА Граф является двудольным тогда и только тогда, когда все его простые циклы, имеют четную длину.
доказательство
[Необходимость.] От противного.
Пусть G(V1,V2;E) — двудольный граф, и 1, 2,..., 2k+1, 1 — простой цикл нечетной длины. Пусть 1 ∊ V1, тогда 2 ∊ V2, 3 ∊ V1, 4 ∊ V2,... , 2k+1 ∊ V1. Имеем: 1, 2k+1 ∊ V1 и (1, 2k+1)∊ E, что противоречит двудольности.
[Достаточность.] Не ограничивая общности, можно считать, что G — связный граф, поскольку каждую компоненту связности можно рассматривать отдельно. Разобьем множество V на V1 и V2 с помощью следующей процедуры:
Вход: граф G(V,E).
Выход: Множества V1 и V2 — доли графа.
select ∊ V { произвольная вершина }
V1: = { в начале первая доля содержит , ... }
V2 : = { ... а вторая пуста }
for и ∊ V \ {} do
if d(, u] — четно then
V1: = V1 + u { помещаем вервину u в первую долю }
else
V2 : = V2 +u {помещаем вершину u во вторую долю }
end if
end for
Далее от противного. Пусть есть две вершины в одной доле, соединенные ребром. Пусть для определенности u, ω ∊ V2 и (u, ω) ∊ Е.
Рассмотрим геодезические , u и , ω (здесь — та произвольная вершина, которая использовалась в алгоритме построения долей графа). Тогда длины | , u| и | , ω | нечетны. Эти геодезические имеют общие вершины (по крайней мере, вершину ). Рассмотрим наиболее удаленную от общую вершину геодезических , u и , ω и обозначим ее ' (может оказаться так, что = '). Имеем: | ’, u| + | ’, ω | = | , u| + | , ω -2| , ’| -четно, и ',...,u,ω,...,' -простой цикл нечетной длины, что противоречит условию. Если же , ω ∊ V1, то длины | , u| и | , ω | четны и аналогично имеем: ',...,u,ω,...,' — простой цикл нечетной длины.
Направленные орграфы и сети
Если в графе ориентировать все ребра, то получится орграф, который называется направленным. Направленный орграф, полученный из полного графа, называется турниром.
ОТСТУПЛЕНИЕ---------------------------------------------------------------------------------------------------------------
Название «турнир» имеет следующее происхождение. Рассмотрим спортивное соревнование для пар участников (или пар команд), где не предусматриваются ничьи. Пометим вершины орграфа участниками и проведем дуги от победителей к побежденным. В таком случае турнир в смысле теории графов — это как раз результат однокругового турнира в спортивном смысле.
--------------------------------------------------------------------------------------------------------------------------------------
Если в орграфе полустепень захода некоторой вершины равна нулю (то есть d+() = 0), то такая вершина называется источником, если же нулю равна полустепень исхода (то есть d-() = 0), то вершина называется стоком. Направленный орграф с одним источником и одним стоком называется сетью.
Операции над графами
Введем следующие операции над графами:
1. Дополнением графа G(V1,E1) (обозначение — (V1,E1)) называется граф G(V2,E2), где V2= V1& E2=
2. Объединением графов G1(V1,E1) и G2(V2,E2) (обозначение - G1(V1,E1)G2(V2,E2), при условии V1 V2 = , E1 E2 = ) называется граф G(V,E), где C.
Пример
= С3 С3.
3. Соединением графов G1(V1,E1) и G2(V2,E2)
(обозначение – G1(V1,E1) + G2(V2, Е2), при условии V1V2= , E1 E2 = называется граф G(V,E), где
V = V1V2&E= E1 E2{e= (1, 2)| 1∊Vl&2∊V2}.
Пример
= + .
4. Если V1V2, то пересечением G1G2 графов G1 и G2 называется граф (V1V2, E1E2).
5. Кольцевой суммой G1 G2 называется граф (V1V2,E1E2), где E1E2= (E1\E2)(E2\E2)
Пример
Для графов G1({a1, a2, a3},{[ a1, a2],( a2, a3)}) и G2({a1, a2, a4},{( a1, a2),( a4, a1)}) (рис. 4.12) найдём G1G2, G1G2, G1G2. По определению имеем G1G2=({a1, a2, a3},{[ a1, a2],( a2, a3), ( a4, a1)}), G1G2=({a1, a2},{( a1, a2)}), G1G2==({a1, a2, a3, a4},{( a2, a1),( a2, a3) ,( a4, a1)}).
Рис. 4.12
6. Произведением G1G2 графов G1 и G2 называется граф, (V1V2,E), в котором ((a1, b1),( a2, b2))∊R тогда и только тогда, когда a1= a2 и (b1, b2)∊R2 , или b1= b2 и (a1, a2)∊R1.
Пример
На рис. 4.14 изображено произведение G1G2 графов G1=({1,2},{(1,1),(2,1)}) и G2=({a,b,c},{[a,b],(b,c)}).
Рис. 4.14
7. Удаление вершины v из графа G1(V1,E1) (обозначение — G1(V1,E1) - v, при условии v ∊ V1) дает граф G2(V2,E2), где V2 = V1\{v}&E2= E1\{e = (v1,v2) | v1 = v v1 = v} .
Пример
C3-v = K2.
8. Удаление ребра е из графа G1(V1,E1) (обозначение — G1(V1,E1) - e, при условии е ∊ E1) дает граф G2(V2, E2), где V2=V1&E2=E1\{e}.
Пример
К2-e = .
9.Добавление вершины v в граф G1(V1,E1) (обозначение — G1(V1,E1) + v, при условии v ∊ V1) дает граф G2(V2,E2), где V2=V1{v}&E2=E1.
Пример
K2 + v = K2 K1.
10. Добавление ребра е в граф G1(V1,E1) (обозначение — G1(V1,E1) + е, при условии е ∊ E1) дает граф G2(V2, E2), где V2=V1&E2=E1{e}.
11. Стягивание подграфа А графа G1(V1,E1) (обозначение — G1(V1,E1) /A, при условии А V1, v∊V1) дает граф G2(V2,E2), где V2=(V1\A){v}&
E2=E1\{e=(u,w)|u∊Aw∊A}{e=(u,v)|u∊Г(A)\A}.
Пример
K4/C3=K2.
12. Размножение вершины v графа G1(V1,E1) (обозначение — G1(V1,E1)↑v при условии v∊V1, v’V1) дает граф G2(V2, E2), гдеV2 : = V1 {v’} & E2 : = E1{(v, v')}{е = (u,v')|u∊ Г+(v) } .
Пример K2↑v=C3.
13. Операция отождествления вершин v и u графа G(V,E) состоит в удалении из графа G вершин v и u и присоединении новой вершины v’, дуг (v’,c), если (v, c)∊E или (u,c)∊E, и дуг (c,v’), если (c,v)∊E или (c, u)∊E: (V\{v,u}){v’},(E\{(c,d)|c=v или d=v, или c=u, или d=u}){(v’,c)|(v,c)∊E, или (u,c)∊E}{(c,v’)|(c,a)∊E, или (c,u)∊E}.
Говорят, что построенный граф получается из графа G отождествлением вершин v и u. В случае, когда v и u соединены дугой, операцию отождествления вершин v и u называют стягиванием дуги (v,u).
Пример
Из графа G, показанного на рис. 4.10, добавлением вершины 5 образуется граф G1, добавлением дуги (3,1) – граф G2, удалением дуги (3,2) – граф G3, удалением вершины 2 – граф G4, отождествлением вершин 1 и 4 – граф G5, стягиванием дуги (2,3) – граф G6.
Рис. 4.10.
Представление графов в ЭВМ
Следует еще раз подчеркнуть, что конструирование структур данных для представления в программе объектов математической модели — это основа искусства практического программирования. Мы приводим четыре различных базовых представления графов. Выбор наилучшего представления определяется требованиями конкретной задачи. Более того, при решении конкретных задач используются, как правило, некоторые комбинации или модификации указанных представлений, общее число которых необозримо. Но все они так или иначе основаны на тех базовых идеях, которые описаны в этом разделе.
Требования к представлению графов
Известны различные способы представления графов в памяти компьютера, которые различаются объемом занимаемой памяти и скоростью выполнения операций над графами. Представление выбирается, исходя из потребностей конкретной задачи. Далее приведены четыре наиболее часто используемых представления с указанием характеристики n(р, q) — объема памяти для каждого представления. Здесь р — число вершин, a q — число ребер.
ЗАМЕЧАНИЕ
Указанные представления пригодны для графов и орграфов, а после некоторой модификации также и для псевдографов, мультиграфов и гиперграфов.
Рис.10 Диаграммы графа (слева) и орграфа (справа), используемых в качестве примеров
Представления иллюстрируются на конкретных примерах графа G и орграфа D, диаграммы которых представлены на рис. 7.10.
Матрица смежности
Представление графа с помощью квадратной булевской матрицы
М : array [l..p,l..p] of 0..1,
отражающей смежность вершин, называется матрицей смежности, где
Для матрицы смежности n(p,q) = О(р2).
Пример
Матрица инциденций
Представление графа с помощью матрицы H : array [l..p, l..q] of 0..1 (для орграфов H : array [l..p, l..g] of —1..1), отражающей инцидентность вершин и ребер, называется матрицей инциденций, где для неориентированного графа
а для ориентированного графа
Для матрицы инциденций n(p,q) = O(pq).
Пример
. Списки смежности
Представление графа с помощью списочной структуры, отражающей смежность вершин и состоящей из массива указателей Г : array [l..p] of ↑ N на списки смежных вершин (элемент списка представлен структурой N : record v : l..p; n :↑ N end record), называется списком смежности. В случае представления неориентированных графов списками смежности n(p,q) = O(p+2q), а в случае ориентированных графов n(р, q) = О(р + q).
Пример
Списки смежности для графа G и орграфа D представлены на рис.7.11.
Рис. 7.11. Списки смежности для графа G (слева) и орграфа D (справа)
- Иркутский государственный технический университет
- 1. Определения графов
- 7.4.5. Массив дуг
- 8.4.2. Трансверсаль
- 8.5.4. Алгоритм нахождения максимального потока
- 8.6.3. Выделение компонент сильной связности
- 8.7.1. Длина дуг
- 8.7.2. Алгоритм Флойда
- 8.7.3. Алгоритм Дейкстры
- Глава 9 Деревья
- 9.1. Свободные деревья
- 9.1.1. Определения
- 9.1 .2. Основные свойства деревьев
- 9.2. Ориентированные, упорядоченные и бинарные деревья
- 9.2.1. Ориентированные деревья
- 9.2.2. Эквивалентное определение ордерева
- 9.2.3. Упорядоченные деревья
- 9.2.4. Бинарные деревья
- 9.3. Представление деревьев в эвм
- 9.3.1. Представление свободных, ориентированных и упорядоченных деревьев
- 9.3.2. Представление бинарных деревьев
- 9.3.3. Обходы бинарных деревьев
- 9.3.4. Алгоритм симметричного обхода бинарного дерева
- 9.4. Деревья сортировки
- 9.4.1. Ассоциативная память
- 9.4.2. Способы реализации ассоциативной памяти
- 9.4.3. Алгоритм бинарного (двоичного) поиска
- 9.4.4. Алгоритм поиска в дереве сортировки
- 9.4.5. Алгоритм вставки в дерево сортировки
- 9.4.6. Алгоритм удаления из дерева сортировки
- 9.4.7. Вспомогательные алгоритмы для дерева сортировки
- 9.4.8. Сравнение представлений ассоциативной памяти
- 9.4.9. Выровненные деревья
- 9.4.10. Сбалансированные деревья
- 9.5. Кратчайший остов
- 9.5.1. Определения
- 9.5.2. Схема алгоритма построения кратчайшего остова
- 9.5.3. Алгоритм Краскала
- Глава 10 Циклы
- 10.1. Фундаментальные циклы и разрезы
- 10.1.1. Циклы и коциклы
- 10.1.2. Независимые множества циклов и коциклов
- 10.1.3. Циклический и коциклический ранг
- 10.2. Эйлеровы циклы
- 10.2.1. Эйлеровы графы
- 10.2.2. Алгоритм построения эйлерова цикла в эйлеровом графе
- 10.2.3. Оценка числа эйлеровых графов
- 10.3. Гамильтоновы циклы
- 10.3.1. Гамильтоновы графы
- 10.3.2. Задача коммивояжера
- Глава 11 Независимость и покрытия
- 11.1. Независимые и покрывающие множества
- 11.1.1. Покрывающие множества вершин и ребер
- 11.1.2. Независимые множества вершин и ребер
- 11.1.3. Связь чисел независимости и покрытий
- 11.2. Построение независимых множеств вершин
- 11.2.1. Постановка задачи отыскания наибольшего независимого множества вершин
- 11.2.2. Поиск с возвратами
- 11.2.3. Улучшенный перебор
- 11.2.4. Алгоритм построения максимальных независимых множеств вершин
- 11.3. Доминирующие множества
- 11.3.1. Определения
- 11.3.2. Доминирование и независимость
- 11.3.3. Задача о наименьшем покрытии
- 11.3.4. Эквивалентные формулировки знп
- 11.3.5. Связь знп с другими задачами
- Глава 12 Раскраска графов
- 12.1. Хроматическое число
- Ух, . . . ,Vn одноцветные классы,доказательство
- 12.2. Планарность
- 12.2.2. Эйлерова характеристика
- 12.2.3. Теорема о пяти красках
- 12.3. Алгоритмы раскрашивания
- 12.3.1. Точный алгоритм раскрашивания
- 12.3.2. Приближенный алгоритм последовательного раскрашивания
- 12.3.3. Улучшенный алгоритм последовательного раскрашивания