Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

nbbzibd0Bw

.pdf
Скачиваний:
3
Добавлен:
15.04.2023
Размер:
958.19 Кб
Скачать

Рисунок 14.1.

Задача о минимальном соединении. Имеется n городов, обозначенных числами: 1, 2,..., n. Известна стоимость μ (i, j) строительства железнодорожных линий для каждой пары городов i и j (i j; i, j = 1, 2, ... n). Какова сеть дорог, соединяющих все города и имеющая минимальную стоимость?

Сформулируем эту задачу в терминах теории графов. Каждому городу поставим в соответствие вершину неориентированного графа F = (V, E), дороге между городами i и j − ребро e = {i, j}. Припишем ребру e вес μij.

Граф F = (V, E) представляет собой полный неориентированный граф на n вершинах с нагруженными рёбрами. В этом графе требуется построить остовное дерево Т, полная мера

å μ (e)

(14.1)

μ (T) = e T

которого является минимальной.

Такое дерево называется минимальным остовным деревом.

Будем решать задачу о минимальном соединении с помощью алгоритма, предложенного американским математиком Крускалом (Joseph Bernard Kruskal).

Построение начинается с дерева A1, содержащего только одно кратчайшее (имеющее минимальную меру) ребро e1 графа F. На каждом последующем шаге строится дерево Ai при помощи добавления к уже по-

строенному дереву Ai1 такого ребра ei, что оно является кратчайшим (имеющим минимальную меру) из оставшихся, и при этом граф Ai не содержит циклов. Если имеется несколько таких рёбер с одинаковой мерой, то мож-

но выбрать любое из них. Дерево An1, содержащее все вершины графа F, является требуемым минимальным остовным деревом.

Напомним, что подобная «жадная» стратегия выбора на каждом шаге самого дешёвого ребра не допустима при решении задачи коммивояжёра; поэтому необходимо доказать, что эта стратегия применима для задачи о

81

минимальном соединении, т.е. построенное остовное дерево An1, в самом деле, является минимальным.

Докажем, что дерево An1 имеет минимальную полную меру.

ÿ

Допустим, что существует остовное дерево Т, отличное от An1, с ми-

нимальной мерой, μ (Т) ≤ μ (An1). Тогда в An1 найдётся хотя бы одно не со-

держащееся в Т ребро ei и граф Т ei будет иметь цикл С. Чтобы проиллюстрировать этот факт, рассмотрим рисунок 14.1.

Пусть дерево Т содержит рёбра (2, 1), (2, 3), (2, 4), (2, 5)

(они обозначены сплошными линиями), дерево

An1 рёбра (2, 1), (2, 4), (4, 3), (4, 5) (изображены на рисунке пунктирными линиями). Следует

иметь в виду, что рёбра (2, 1) и (2, 4) не кратные; они обозначены двумя разными линиями из соображений наглядности.

Рисунок 14.1.

В качестве ei выступает, например, ребро (4,5), тогда цикл С это цикл (2, 4), (4, 5), (5, 2).

Так как An1, по построению, не имеет циклов,

в цикле С найдётся ребро e*, не принадлежащее дереву An1 (на рисунке 14.1 ребро e* = (5, 2)).

Добавив к дереву T ребро ei и удалив из него ребро e*, построим дерево T1:

T1 = T ei \ e*

Дерево T1 также будет остовным деревом для F (на рисунке 14.1 T1 содержит рёбра (2, 1), (2, 3), (2, 4), (4, 5)). Так как Т, по предположению, имеет минимальную меру, то μ (Т) ≤ μ (T1). Но Т отличается от T1 только одним ребром, поэтому μ (e*) ≤ μ (ei).

Знак строгого неравенства «<» невозможен, иначе при построении дерева Ai по изложенному выше алгоритму вместо ребра ei было бы выбрано ребро e*. Отсюда μ (e*) = μ (ei), следовательно, μ (Т) = μ (T1), поэтому T1 также является деревом с минимальной мерой.

Дерево T1 уже имеет больше общих с An1 рёбер, чем дерево Т. Повторяя описанную выше процедуру замены рёбер несколько раз, в конце концов, получим, что на некотором k-м шаге

Tk = An1 и μ (Т) = μ (Tk), т.е. μ (Т) = μ (An1).

82

ÿ

Пример. Стоимость строительства железнодорожных линий для каждой пары городов приведена в таблице 14.1.

 

 

 

Таблица 14.1

Какова сеть дорог, соединяющих все

 

I

II

III

IV

V

города и имеющая минимальную стоимость?

I

8

7

9

8

Решение.

 

 

 

 

 

1. Выбираем ребро (II, III) с мерой 4.

II

 

 

4

7

5

 

2. Выбираем ребро (II, V) с мерой 5.

 

 

 

 

 

 

 

 

 

 

 

3. Ребро (III, V) брать нельзя, так как возник-

III

 

 

8

5

 

 

 

 

 

нет цикл; поэтому выбираем ребро (IV, V) с

IV

 

 

 

 

6

 

 

 

мерой 6.

 

 

 

 

 

 

 

 

 

 

 

4. Выбираем ребро (I, III) с мерой 7.

V

 

 

 

 

 

 

 

 

Общая стоимость строительства составит

 

 

 

 

 

 

 

 

 

 

 

μ (T) = 4 + 5 + 6 + 7 = 22.

Задания для самостоятельной работы

1.Сколько рёбер следует удалить из связного графа F, имеющего m рёбер и n вершин, чтобы получить остовное дерево T?

2.Найти минимальное остовное дерево.

Контрольные вопросы

1.Какое дерево называется остовным деревом?

2.Какое дерево называется минимальным остовным деревом?

3.В чём заключается задача о минимальном соединении?

4.Опишите алгоритм Крускала построения минимального остовного дерева.

§ 15. Двудольный граф

Двудольный граф F = (V, E) (или граф паросочетаний) это граф, для которого можно выполнить разбиение его множества вершин V на два

83

не пересекающихся подмножества V1 и V2 таким образом, что каждое ребро графа F соединяет вершины из разных множеств.

Пример. Показать, что граф F, изображённый на рисунке 15.1, а, является двудольным.

Рисунок 15.1 – Двудольный граф F.

Решение. Выполним разбиение множества вершин V = {v1, v2, v3, v4, v5, v6, v7, v8} данного графа F на два не пересекающихся подмножества V1 и V2 таким образом, что каждое ребро соединяло вершины из разных множеств.

Поместим вершину v1 во множество V1. Тогда все смежные с ней вершины необходимо отправить во множество V2. Все эти вершины – v2, v4, v5

– можно поместить в одно множество, т.к. среди них нет смежных.

Первая из ещё не «пристроенных» вершин v3. Она является смежной с v2 и v4, находящимися в V2; значит, её следует отправить в V1. Это можно сделать, т.к. она не является смежной с вершиной v1, принадлежащей множеству V1.

Следующая не «пристроенная» вершина v6. Она является смежной с v2 и v5, находящимися в V2; значит, её следует отправить в V1. Это можно сделать, т.к. она не является смежной с вершинами v1 и v3, принадлежащими этому множеству.

Вершина v7 является смежной с v3 и v6, находящимися в V1; значит, её следует отправить в V2. Это можно сделать, т.к. она не является смежной с вершинами v2, v4, v5, принадлежащими множеству V2.

Наконец, последняя не «пристроенная» вершина v8. Она является смежной с v4, v5, и v7, находящимися в V2; значит, её следует отправить в V1. Это можно сделать, т.к. она не является смежной с вершинами v1, v3, v6, принадлежащими этому множеству.

Окончательно, получим:

V1 = {v1, v3, v6, v8}, V2 = {v2, v4, v5, v7}.

84

Для наглядности этот же граф F (рисунок 15.1, а) показан на рисунке 15.1, б таким образом, что все вершины, принадлежащие множеству V1, расположены на одной (верхней) горизонтали, а все вершины, принадлежащие множеству V2, расположены на другой (нижней) горизонтали. При таком изображении двудольного графа не существует горизонтально расположенных рёбер.

Самостоятельно постройте новый граф F1, добавив к множеству рёбер графа F, например, ребро (v4, v7), и убедитесь, что в графе F1 выполнить подобное построение не удастся, т.е. он не является двудольным.

Если в двудольном графе F каждая вершина из V1 соединена ребром со всеми вершинами из V2, то F называется полным двудольным графом.

Пусть множество V1 содержит n1 вершин, а множество V2 - n2 вершин. Тогда полный двудольный граф обозначают Kn1, n2. В графе Kn1, n2 име-

ется n1+n2 вершин и n1×n2 рёбер.

Пример. Полный двудольный граф K3,3 изображён на рисунке 16.3, б.

Теорема Кёнига. Граф является двудольным тогда и только тогда, когда все его простые циклы имеют чётную длину.

Пусть граф F - двудольный. Тогда каждый простой цикл v1, v2, ... vp, v1 графа F содержит вершины из V1, скажем, с нечётными номерами, и вершины из V2 - с чётными, так что длина этого цикла является чётным числом.

Предположим, не теряя общности, что F - связный граф (поскольку каждую компоненту графа F можно рассматривать отдельно). Выберем произвольную вершину v1ÎV и обозначим через V1 множество, состоящее из v1 и всех вершин, находящихся в графе F на чётном расстоянии от v1; определим V2 как разность множеств V и V1: V2 = V \ V1.

Так как все простые циклы графа F имеют чётную длину, то каждое его ребро соединяет вершину из множества V1 с вершиной из множества V2. В самом деле, предположим, что существует ребро (u, w), соединяющее две вершины из множества V2. Тогда две кратчайшие простые цепи - из

вершины v1 к вершине w и из вершины v1 к вершине u - в объединении с ребром (u, v) образуют цикл нечётной длины, что противоречит условию.

Из теоремы Кёнига следует, что в каждом из двудольных графов нет циклов, содержащих три вершины и три ребра (треугольников).

Задания для самостоятельной работы

1. Показать, что дерево является двудольным графом.

85

2.Выполнив разбиение множества V вершин данного графа F на два не

пересекающихся подмножества V1 и V2 таким образом, чтобы каждое ребро соединяло вершины из разных множеств, показать, что F является двудольным и составить его матрицу смежности.

3.Охарактеризовать матрицу смежности произвольного двудольного графа.

4.Какие из графов, представленных на рисунке 11.3, являются двудольными? Ответ обосновать.

5.Доказать, что наибольшее число рёбер у графов, имеющих n вершин и не содержащих треугольников, равно [n2/4].

6.Доказать, что граф F с n вершинами не является двудольным, если он имеет более n2/4 ребер.

7.Доказать, что если в графе F с n вершинами отсутствуют циклы нечётной длины и число ребер превышает (n−1)2/4, то граф связный.

8.Доказать или опровергнуть. Если F1 и F2 двудольные графы, то таковы же графы:

а) F1 + F2;

б) F1 × F2; в) F1 [F2].

9.Доказать, что граф F двудольный тогда и только тогда, когда для любого нечётного числа n все диагональные элементы матрицы Сn равны нулю (С − матрица смежности графа F).

Контрольные вопросы

1.Какой граф называется двудольным?

2.Что представляет собой полный двудольный граф?

3.Запишите формулу для нахождения количества рёбер полного двудольного графа Kn1, n2.

4.Сформулируйте теорему Кёнига.

5.Может ли двудольный граф содержать треугольники?

§16. Планарность

86

Граф укладывается на поверхности S, если его диаграмму можно так нарисовать на S, что никакие два его ребра не пересекаются.

Граф называется планарным, если его можно уложить на плоскости; плоский граф − это граф, уже уложенный на плоскости.

Пример. Граф, представленный на рисунке 16.1, а является планарным, так как он изоморфен плоскому графу 16, б. Граф 16.1, в планарным не является.

Рисунок 16.1.

Области, на которые плоский граф разбивает плоскость, называются гранями. Количество граней будем обозначать r.

Пример. Граф 16.1, б разбивает плоскость на четыре грани; при этом

грани I, II, III − внутренние, а неограниченная грань IV − внешняя. Изучение плоских графов начнем с минимального связного графа

Fmin, состоящего из единственной вершины v0 и не имеющего рёбер. Любые точки плоскости, не совпадающие с вершиной v0, можно соединить ломаной линией, не проходящей через v0. Значит у минимального графа на плоскости одна связная область: r(Fmin) = 1.

Любой другой связный плоский граф F* = (V*, E*), имеющий n* вершин и m* рёбер может быть порожден из связного плоского графа F = = (V, E), имеющего n вершин (n n*) и m рёбер (m m *), с помощью одной из следующих операций.

1. Добавление вершины степени 1. Внутри некоторой грани α ставится новая вершина v* и соединяется новым ребром e* с некоторой верши-

ной v, расположенной на границе грани α (рисунок 16.2, а).

2. Добавление вершины степени 2 (такая вершина называется проходной). Внутри некоторого ребра e ставится новая вершина v*. Таким об-

разом, это ребро разбивается на два − e* и e** (рисунок 16.2, б). Очевидно, что для операций 1 и 2 количество вершин и рёбер графа

F* на единицу больше количества вершин и рёбер графа F, а количество граней у них совпадает:

n* = n + 1; m* = m + 1; r* = r.

3. Разбиение области. Новое ребро e* соединяет v’ вершины и v’’, расположенные на границе грани α, и лежит в этой грани (рисунок 16.2, в).

87

Рисунок 16.2.

В этом случае грань α разбивается на две - α* и α**. Для операции 3 у графов F и F* одинаковое количество вершин, а количество рёбер и граней у графа F* на единицу больше, чем у F:

n* = n; m* = m + 1; r* = r + 1.

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

Будем использовать обратные операции: удаление вершин степени 1 и 2, а также разрыв цикла. Рассмотрим не минимальный связный плоский граф F* = (V*, E*). Если в нём есть вершина степени 1 или 2, то можно произвести операцию удаления этой вершины, причём в результате получится связный плоский граф F = (V, E). Наоборот, граф F* = (V*, E*) может быть получен из графа F = (V, E) операцией добавления вершины степени 1 или 2.

Пусть теперь степени всех вершин графа F* = (V*, E*) не меньше, чем 3. Значит, сумма S степеней всех вершин не меньше утроенного числа вершин: S ³ 3n*. С другой стороны, по лемме о рукопожатиях, сумма S

равна удвоенному числу ребер: S = 2m*. Отсюда

 

m* ³ 3n* / 2.

(16.1)

По формуле (12.2) подсчитаем цикломатическое число g(F*)

графа

F*:

 

g(F*) = 1 + m* - n* ³

 

с учётом неравенства (16.1)

 

³ 1 + 3n*/2 - n*,

 

откуда

 

g(F*) ³ n*/2 + 1 > 0

(16.2)

Поскольку цикломатическое число g(F*) графа F* строго положительно, то этот граф не является деревом, т.е. в нём присутствует некоторый цикл Z. Если удалить из графа F* какое-нибудь ребро цикла Z, то F*

88

останется связным. Наоборот, граф F* = (V*, E*) может быть получен из связного плоского графа F = (V, E) операцией соединения вершин v’ и v’’ ребром e*. Так как при этом возникает новый цикл Z, то область α, по которой проходит ребро e*, разбивается на две.

Теорема Эйлера. Пусть F = (V, E) - связный плоский граф. Тогда количества его вершин n, рёбер m и граней r связаны соотношением:

n - m + r = 2.

(16.3)

Доказательство теоремы Эйлера проведём методом математической индукции по количеству рёбер.

1. В минимальном связном плоском графе Fmin одна вершина v0, одна грань и нет рёбер; поэтому

n - m + r = 1 – 0 + 1 = 2, – верно.

2. Предположим, что соотношение (16.3) выполняется для всех связных плоских графов F = (V, E), имеющих k рёбер, т.е.

n - k + r = 2.

3. Докажем, что оно выполняется для всех связных плоских графов F* = (V*, E*), имеющих k* = k+1 ребро.

Как было показано выше, граф F* можно получить из графа F при помощи операций 1, 2, 3. Если была использована операция 1 (или 2), то

n* - k* + r* = (n + 1) - (k + 1) + r = n - k + r = 2.

Если была использована операция 3, то

n* - k* + r* = n - (k + 1) + (r + 1) = n - k + r = 2.

Следствие 1. Если F = (V, E) - связный планарный граф, имеющий не меньше четырёх вершин (n > 3), то выполняется соотношение:

m £ 3n - 6.

(16.4)

Каждая грань ограничена, по крайней мере, тремя рёбрами, каждое ребро является границей не более чем двух граней, т.е.

2m ³ 3r или r £ 2m/3.

Тогда, из соотношения Эйлера,

2 = (n - m + r) £ (n - m +2m/3),

откуда

89

2 £ n - m/3,

m/3 £ n - 2,

m £ 3n - 6.

Следствие 2. Графы K5 и K3,3 (рисунок 16.3) не являются планарны-

ми.

Рисунок 16.3. – а) полный граф K5, б) полный двудольный граф K3,3.

Если бы граф K5 был планарным, то для него выполнялось бы соотношение (16.4):

(10 = m) £ (3n - 6 = 9), т.е. 10 £ 9 – ложное неравенство.

Граф K3,3 является двудольным, значит, по следствию из теоремы Кёнига, в нём нет треугольников, следовательно, в его плоской укладке (если такая существует) каждая грань ограничена не менее чем четырьмя рёбрами, т.е.

2m ³ 4r или r £ m/2.

 

Тогда, из соотношения Эйлера,

 

 

2 = (n - m + r) £ (n - m +m/2),

откуда

m £ 2n - 4.

Проверим, выполняется ли для K3,3 последнее соотношение: (m = 9) £ (2n - 4) = 8, т.е. 9 £ 8 – ложное неравенство.

Задача о трёх колодцах. Есть три дома и три колодца. Можно ли так проложить дорожки между домами и колодцами, чтобы от каждого дома к каждому колодцу вела дорожка, и никакие две дорожки не пересекались бы.

Решение. Сопоставим каждому дому и каждому колодцу вершину графа. Проведя от каждой вершины-«колодца» рёбра-«дорожки» ко всем вершинам-«домам», построим граф задачи. Очевидно, это граф K3,3. Он не планарный. Следовательно, проложить дорожки нельзя.

90

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]