Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / Фарфоровская Ю. Б., Дмитриева О. М., Рабкин Е. Л., Яновская Н. К. Дискретная математика.pdf
Скачиваний:
184
Добавлен:
17.06.2020
Размер:
1.75 Mб
Скачать

3. ЭЛЕМЕНТЫ ТЕОРИИ ГРАФОВ

Разумеется, приведенный ниже материал далеко не исчерпывает разнообразные разделы общей теории графов. Мы приводим здесь только некоторые факты из общей теории (которые при нехватке времени можно даже опустить), а основное внимание уделяем приложениям к теории сетей связи. На взгляд авторов центральной частью всего раздела является нахождение путей и сечений (разрезов) методами булевой алгебры и теорема Форда – Фалкерсона. Именно по этим разделам мы и предлагаем индивидуальные задания для студентов.

3.1. Общие понятия теории графов

Определение. Графом называется конечный набор объектов любой природы, которые в дальнейшем называются вершинами графа, некоторые пары из которых выделяются и называются ребрами графа.

Замечание. При графическом изображении графа обычно его вершины обозначаются точками, а пары точек, образующих ребро, соединяются прямолинейными отрезками или дугами кривых, вершины, соединенные ребром, называются смежными (или соседними). Аналогично, два ребра, имеющие общую вершину, также называются смежными (или соседними).

Ребро называется ориентированным (или направленным), если опре-

деляющая его пара вершин упорядочена, т. е. указано, какая из вершин ребра является первой, а какая – второй. При графическом изображении ориентированного ребра на линии, соединяющей его вершины, ставят стрелку, направленную от первой вершины ко второй. Граф называется ориентированным (или орграфом), если хотя бы одно его ребро ориентировано (это означает, что в орграфе некоторая вершина может быть соединена с другой вершиной, а обратного соединения нет). Ребро, у которого начало и конец совпадают, называется петлей. Граф, у которого есть хотя бы одна петля, называется графом с петлями.

В теории графов рассматриваются также мультиграфы. Мультиграфом называется такой набор вершин, в котором некоторые вершины соединены несколькими ребрами, а также могут быть петли.

Вершина называется инцидентной с ребром, если она является его началом или концом.

Степенью (или порядком) вершины называется число ребер, инцидентных с этой вершиной (в некоторых источниках степенью вершины называют пару чисел (т, п) первое из которых равно числу ребер, входящих в эту вершину, а второе – числу исходящих, здесь мы будем считать степенью общее число ребер, инцидентных с вершиной, т. е. число т + п). Два графа называются равными или равносильными или эквивалентными, если между их вершинами можно установить такое 1-1-соответствие, при котором ребрам одного графа соответствуют ребра другого графа.

50

Пример графа представлен на рис. 3.1.

 

 

°х1

 

Это орграф (так как одно ребро ориентировано)

 

 

 

х2

 

 

 

х3

с 6 вершинами и 3 ребрами. Степень вершины х1 рав-

 

 

 

 

 

 

 

 

 

 

 

на 0, степени вершин х2, х3, х4 и х6 равны 1, степень х4

 

 

°

х5

х6

вершины х5 равна 2. Вершины степени 0 называются

 

Рис. 3.1

 

изолированными, вершины степени 1 называются ви-

 

 

 

 

 

 

 

сячими.

Граф называется полным, если все его вершины – смежные, т. е. любые две вершины соединены ребром.

Приведем примеры полных графов с числом вершин от 1 до 6 (рис. 3.2).

х °

х1

 

 

 

 

 

 

 

х1

 

х2

х1

х1

 

х

х

 

 

х

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

1

 

 

 

 

 

 

 

 

 

 

х2

 

х3

 

 

 

 

 

 

 

 

 

 

 

 

х2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х

 

 

 

 

 

 

 

х3

 

х3

х4

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х4

 

х5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х4

 

 

х5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х6

 

 

 

 

 

 

 

 

 

Рис. 3.2

 

 

 

 

 

 

 

 

Граф называется плоским, если его вершины и ребра можно расположить на плоскости так, что его ребра имеют общие точки только в вершинах (т. е. не пересекаются вне вершин). Например, полные графы с числом вершин больше трех, не являются плоскими. Граф называется планарным,

если он эквивалентен плоскому графу.

 

 

 

 

 

 

 

Например, полный граф с 4 вершинами не являет-

z1

 

 

 

 

 

z2

 

 

 

 

ся плоским, но является планарным, так как эквива-

 

 

 

 

 

 

 

лентен приведенному на рис. 3.3 плоскому графу.

 

 

 

 

 

 

 

Приведем еще пример планарного графа, который

z3

 

 

 

 

z4

эквивалентен приведенному рядом плоскому графу

 

 

 

 

Рис. 3.3

(рис. 3.4).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.4

51

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

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

с последней.

Контур – это цикл без повторения ребер, или, что то же, путь, у которого первая вершина совпадает с последней вершиной.

Пример – рис. 3.5.

3

2

4

1

5

7

6

Рис. 3.5

Из рис. 3.5 видно, что последовательность вершин 1-2-5-2-3-4-2-5 не путь,

амаршрут, последовательности 1-2-3-4-2-5 и 1-2-5 – пути, 1-2-3-4-2-5-2-1 –

это цикл (но не контур), а последовательность 1-2-5-6-1 – это контур.

Вслучае, если имеется некоторый маршрут из вершины t в вершину s, заданный в виде последовательности ребер, которые в этом случае приобрели направление, и если в этот маршрут входит ребро, соединяющее вершины (i, j), то это ребро по отношению к вершине i называют иногда прямой дугой, а по отношению к вершине j обратной дугой (или обратным ребром).

Граф называется связным, если любые две его вершины можно соединить маршрутом (или путем) в этом графе. На рис. 3.5 изображен, очевидно, связный граф. Ребро, при удалении которого граф перестает быть связным (если такое существует), иногда называют мостом или перешейком.

Лемма 1. Если степень всех вершин в графе больше или равна двум, то граф обязательно содержит контур.

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

аэто означает, что мы можем выделить контур из вершин этого графа.

52

Лемма 2 (о рукопожатиях). Число вершин графа, имеющих нечетную степень, обязательно четно.

Доказательство. Сумма S степеней всех вершин графа обязательно четна, так как она равна числу концов всех ребер графа, а у каждого ребра 2 конца (т. е. S = 2r, где r – число всех ребер графа). Обозначим через v1 сумму степеней вершин с четной степенью, а через v2 – сумму степеней вершин с нечетной степенью. Ясно, что v2 = S – v1= = 2r – v1. Но v1 четное число (как сумма четных чисел). Следовательно, и v2 четное число (как разность четных чисел). Но v2 – сумма нечетных слагаемых. Значит, число этих слагаемых четно, что и требовалось доказать.

Замечание. Название леммы «О рукопожатиях» объясняется тем, что любое общество можно рассматривать как граф, а обмен рукопожатиями – как ребро в этом графе. Лемма означает, что число людей, обменявшихся нечетным числом рукопожатий, обязательно четно.

3.2. Эйлеровы и полуэйлеровы графы

Именно с задач, поставленных и решенных в этом разделе, началась теория графов. Философ Иммануил Кант, гуляя по городу Кенигсбергу (сейчас этот город называется Калининград) поставил задачу (в 1736 г.),

известную в математике как задача о семи кенигсбергских мостах, а имен-

но можно ли пройти по всем этим мостам и при этом вернуться в исходную точку так, чтобы по каждому мосту пройти ровно один раз. Наш петербургский знаменитый математик швейцарского происхождения Леонард Эйлер блестяще решил эту задачу. На рис. 3.6 изображена схема семи мостов города Кенигсберга (заметим, что сейчас осталось только два из них), а также мультиграф, соответствующий этой схеме (при построении графа считалось, что каждый берег реки и острова – это вершины графа, а мосты – ребра графа. Очевидно, что в данном случае у нас получился мультиграф без петель).

 

берег

 

 

 

мост

мост

мост

х1

 

 

 

 

мост

 

х2

х3

остров

 

остров

 

 

мост

мост

мост

 

 

 

берег

 

х4

 

 

 

Рис. 3.6

 

 

В соответствии с поставленной Кантом (и решенной Эйлером) задачей можно дать следующие определения.

53

Граф (или мультиграф) называется эйлеровым если существует контур

(такой контур называют эйлеровым контуром или эйлеровым циклом), об-

ходящий все вершины графа. Граф называется полуэйлеровым, если существует путь (эйлеров путь), обходящий все ребра графа ровно один раз. На рис. 3.7 изображены: а) эйлеров граф, б) полуэйлеров граф, в) граф, не являющийся ни эйлеровым, ни полуэйлеровым (люди старшего поколения знают, что в школах раньше было много развлечений типа «нарисовать данную фигуру, не отрывая ручку от бумаги», что очевидно и соответствует эйлерову или полуэйлерову графу).

а)

б)

в)

Рис. 3.7

Теорема (Эйлер). Для того, чтобы данный связный граф или мультиграф без петель был эйлеровым, необходимо и достаточно, чтобы степени всех вершин были четными. Данный связный граф или мультиграф без петель будет полуэйлеровым тогда и только тогда, когда степени двух вершин будут нечетными, а степени остальных вершин – четными.

Доказательство: а) пусть граф является эйлеровым. Тогда в нем имеется эйлеров цикл, который должен прийти в вершину по одному ребру и покинуть его по другому, так как каждое ребро должно использоваться ровно один раз. То есть каждый «заход» в вершину и «выход» из нее дает нам 2 степени вершины. Таким образом, степени всех вершин должны быть четными (и равны удвоенному числу «заходов» в эти вершины при обходе эйлерова контура);

б) пусть в данном связном графе (или мультиграфе без петель) степень любой вершины четна (это значит, что степень больше или равна двум, так как нулевая степень приводит к несвязному графу). Докажем, что в нем имеется эйлеров цикл. Доказательство проведем индукцией по числу вершин. Очевидно, что в случае, когда в связном графе всего 2 вершины и обе они имеют

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

двух вершин.

54

Предположим, что наше утверждение верно для всех связных графов и мультиграфов, число вершин в которых строго меньше п, и докажем его для графа (мультиграфа), имеющего п вершин. Заметим, что по лемме 1 в этом графе есть контур (так как степени всех вершин больше или равна двум). Если этот контур содержит все ребра, то этот контур сам является эйлеровым циклом (а значит, граф – эйлеровым). Если же этот контур содержит не все ребра, то удалим все его ребра из графа и те вершины, которые после удаления ребер стали иметь нулевую степень. Тогда мы получим новый граф (который может быть несвязным), но в этом новом графе все вершины обязательно имеют четную степень (так как при удалении ребер контура степень каждой вершины, входящей в этот контур, уменьшается на два). Новый граф, очевидно, распадается на «компоненты связности», каждая из которых должна иметь общую вершину с удаленным контуром (иначе первоначальный граф не был бы связным), причем степени всех вершин каждой компоненты связности четны и число вершин в ней строго меньше п, т. е. по индукционному предпололожению каждая компонента имеет эйлеров цикл. Теперь мы можем построить эйлеров цикл в данном графе следующим образом. Обходим последовательно ребра удаленного контура. Далее, если мы пришли в вершину, общую для контура и какой-то компоненты связности, то обходим по эйлерову циклу эту компоненту, возвращаемся при этом в вершину контура и идем по этому контуру дальше. Тем самым все ребра будут пройдены, и каждое ровно один раз (все это схематично изображено на рис. 3.9: сначала начинаем обходить контур АВСDEА. Пройдя ребро АВ, проходим «верхний» граф, затем возвращаемся в точку В и, далее, идем по ребру АС, обходим «правый граф» и т. д.). Утверждение б) доказано;

 

В

А

С

ЕD

Рис. 3.9

в) пусть теперь граф полуэйлеров. Это значит, что он имеет эйлеров путь, начинающийся в одной вершине и заканчивающийся в другой. Очевидно, что обе эти вершины должны иметь нечетную степень, а степени остальных четны;

г) обратно. Пусть в связном графе вершины к и р имеют нечетную степень, а остальные вершины – четную. Тогда возможны 2 случая: эти вершины связаны ребром или не связаны. В первом случае удалим это ребро, а во втором добавим. В обоих случаях степень всех вершин останется

55

четной. Заметим, что в случае удаления ребра новый граф может стать несвязным и иметь 2 компоненты связности (в этом случае удаляемое ребро было мостом), каждая из которых или весь новый граф имеет эйлеров цикл. Теперь если новый граф имеет эйлеров цикл, то начнем (и закончим его) в вершине с нечетной степенью и далее добавим удаленное ребро или удалим добавленное. В обоих случаях получим эйлеров путь. Если новый граф имеет 2 компоненты связности, то пройдем одну из них по эйлерову циклу, начиная и заканчивая в вершине (которая в первоначальном графе имела нечетную степень). Затем добавим удаленное ребро (мост), пройдем его, попадем в другую вершину, которая ранее имела нечетную степень, и пройдем вторую компоненту связности по эйлерову циклу. Во всех разобранных случаях получим эйлеров путь, который начался в одной из вершин с нечетной степенью и закончился в другой. Теорема доказана.

Заметим, что все 4 вершины мультиграфа на рис. 3.6, оответствующего мостам Кенигсберга, имеют степень 3. Поэтому эйлеров цикл или путь в нем невозможен.

Замечание. Если граф (или мультиграф) содержит 2к вершин нечетной степени, то его можно разбить на к полуэйлеровых графа (т. е. нарисовать к росчерками пера). Доказательство аналогично доказательству теоремы Эйлера.

Имеется простой алгоритм (так называемый алгоритм Флери) для нахождения эйлерова цикла (конечно, если этот цикл существует). Этот алго-

ритм состоит в следующем: начинаем с любой вершины и «стираем» пройденные ребра. При этом по мосту (перешейку) проходим только, если нет других возможностей.

Очевидно, что для того, чтобы построить эйлеров путь, достаточно использовать алгоритм Флери, который надо начать с вершины, имеющей нечетную степень.

Рассмотрим некоторые приложения теоремы Эйлера, которые в основном связаны с так называемой задачей китайского почтальона. А именно, пусть имеется некоторый связный граф, ребрам которого приписаны некоторые числа, которые будем называть весами ребер (часто (но не всегда!) в приложениях вес ребра – это его длина). Требуется найти такой цикл, при котором каждое ребро проходится по крайней мере один раз и суммарный вес всех ребер, вошедших в цикл, минимален. Заметим, что если граф является эйлеровым, то любой эйлеров цикл решает поставленную задачу (т. е. для эйлерова графа веса не играют роли).

Эта задача имеет много приложений, например, поливка улиц одной машиной (здесь ребра графа – дороги, а перекрестки – вершины; веса – это, очевидно, длины дорог), а также сбор мусора, доставка почты или уборка помещений и коридоров в больших учреждениях или даже наилучший маршрут для осмотра музея.

56