Основные понятия теории графов

advertisement
Основные понятия теории графов
Теория графов — один из фундаментальных разделов дискретной математики. Сведения из этого раздела традиционно включались в курсы кибернетики, а затем и информатики, поскольку графы оказались очень продуктивным средством информационного (математического) моделирования структур систем и процессов, представления задач информационного характера.
Графы нашли применение практически во всех отраслях научных знаний: физике,
биологии, химии, математике, истории, лингвистике, социальных науках, технике и т.п.
Наибольшей популярностью теоретико-графовые модели используются при исследовании
коммуникационных сетей, информационных систем, химических и генетических структур, электрических цепей и других систем сетевой структуры.
Обычно теорию графов относят к топологии (потому что во многих случаях рассматриваются лишь топологические свойства графов), однако она пересекается со многими разделами теории множеств, комбинаторной математики, алгебры, геометрии, теории
матриц, теории игр, математической логики и многих других математических дисциплин.
Граф-модели применяются для эффективного использования ресурсов вычислительной
системы (оптимизация использования памяти, регистров, уменьшение обменов между
оперативной и внешней памятью и т.д.), организации больших массивов информации
(графы данных для повышения эффективности информационного поиска), увеличения
степени параллелизма программы, повышения эффективности работы микропроцессорных и многомашинных систем (распределение процессоров, обмен сообщениями между
процессорами, синхронизация). Решение этих и подобных задач привело к появлению
множества граф-моделей, связанных как с программами и структурными данными, так и с
вычислительными системами. Основной объект теории графов — граф и его обобщения.
Началом теории графов считается 1736 год,
когда вышла в свет статья Л. Эйлера с его знаменитыми рассуждениями о Кенигсбергских мостах. На
рисунке 1 представлен схематический план центральной части города Кенигсберг (ныне Калининград), включающий два берега реки Перголя, два
острова в ней и семь соединяющих мостов. Задача
состоит в том, чтобы обойти все четыре части суРисунок 1 – План центральной части гоши, пройдя по каждому мосту один раз, и вернутьрода
ся в исходную точку.
Кенигсберг
Задача о Кенигсбергских мостах была решена (показано, что решение не существует) Эйлером в 1736 году. Затем около 100 лет эта статья оставалась единственной, а методы теории графов невостребованными практикой. Интерес к графам появился только в
середине XIX века благодаря исследованиям электрических сетей, моделей кристаллов и
структур молекул. С тех пор сфера применений теории графов непрерывно расширялась и
сегодня она представляет собой мощную формальную систему, имеющую необозримое
множество областей практического применения.
При проектировании компьютерных сетей, телевизионных линий, трубопроводов и
строительстве дорог необходимо минимизировать затраты на прокладку коммуникаций.
Прежде всего, целесообразно выбрать минимальный по длине маршрут прокладки коммуникаций. Например, необходимо соединить телефонным или оптоволоконным кабелем
несколько зданий, расстояния между которыми различны. Возникает задача определения
маршрута прокладки кабеля минимальной длины, но при этом к каждому зданию. Для
решения таких задач часто используют теорию графов.
1
Граф и его виды
Геометрическое представление графа — это схемы, состоящие из точек и соединяющих эти точки отрезков прямых или кривых (примеры графов изображены на рисунке
2).
Познакомимся с основными понятиями теории графов при решении несложной задачи.
Задача: Александр, Борис, Владимир, Григорий и Дмитрий при встрече обменялись
рукопожатиями (каждый пожал руку каждому по одному разу). Сколько всего рукопожатий было сделано?
Решение: Пусть каждому из пяти молодых людей соответствует определенная точка
на плоскости, названная первой буквой его имени (см. рисунок 3 a), а производимому рукопожатию — отрезок или часть кривой, соединяющая конкретные точки — имена (рисунок 3 b).
Д
А
Д
А
Г
Б
Г
Б
В
a)
Рисунок 2 – Виды графов
В
b)
Рисунок 3 – Представление графов:
a) Нулевой граф с пятью вершинами;
b) Неполный граф с пятью вершинами.
Точки А, Б, В, Г, Д называются вершинами графа, а отрезки линий, соединяющие
эти точки — рѐбрами графа. При изображении графов на рисунках или схемах отрезки
могут быть прямолинейными или криволинейными. Длины отрезков и расположение точек произвольны.
Например, все три фигуры на рисунке 4 изображают один и тот же граф.
Рассмотрим процесс соединения точек А, Б, В, Г, Д рѐбрами.
1. Ситуация, соответствующая моменту, когда рукопожатия ещѐ не совершались, представляет собой точечную схему, изображѐнную на рисунке 3 a). Такая схема, состоящая из «изолированных» вершин, называется нулевым графом.
2. Ситуация, когда совершены еще не все рукопожатия, может схематически
быть изображена, например, с помощью рисунке 3 b): пожали руки А и Б, А и Г, Д
и Г, В и Д. Следующий момент, когда добавятся, например, пожатия рук А и В, Г
и Б. Графы, в которых не построены все возможные рѐбра, называются неполными графами.
3. На рисунке 4 изображен граф, соответствующий всем совершѐнным рукопожатиям. Этот граф является полным графом.
2
Рисунке 4 – Изображение одного графа различными отрезками
Если подсчитать число рѐбер графа, изображѐнного на рисунке 5, то это число и будет равно количеству совершѐнных рукоД
пожатий между пятью молодыми людьми.
А
Их 10.
Заметим, что если полный граф
Г
имеет n вершин, то количество рѐбер
будет равно n(n-1)/2. Действительно, количество рѐбер в полном графе с n вершинами определяется как число неупоряБ
доченных пар, составленных из всех n точек-рѐбер графа, т.е. как число сочетаний
из n элементов по 2.
В
Граф, не являющийся полным, можно дополнить до полного с теми же верРисунок 5 – Полный граф с пятью вершинами
шинами, добавив недостающие рѐбра.
Так, например, на рисунке 3 b) изображѐн неполный граф с пятью вершинами. На рисунке
5 рѐбра, превращающие граф в полный граф, изображены прерывистыми линиями, совокупность вершин графа с этими рѐбрами называется дополнением графа.
Вершинами могут служить объекты любой природы: будь то населѐнные пункты,
компьютерные сети, элементы блок-схем алгоритмов и т.д. Под рѐбрами могут подразумеваться дороги между двумя соседними городами, стороны геометрических фигур, линии связи между компьютерами. Любую систему улиц в городе можно представить в виде
графа. Здесь вершины выступают в роли перекрѐстков.
Ребро и любая из его двух вершин называются инцидентными. Под степенью вершины подразумевается количество инцидентных ей рѐбер. Так, степень всех вершин графа изображенного на рисунке 5 равна 4.
Изолированные вершины — это такие вершины, которые не имеют инцидентных
рѐбер, т.е. их степень нулевая. Из всего этого следует, что изолированные вершины недостижимы их любых других вершин.
Висячие вершины — это такие вершины, которые имеют только одно инцидентное
ребро.
Изолированная вершина графа имеет степень 0, а висячая — степень 1.
Маршрут графа — это чередующаяся последовательность вершин и рѐбер. Эта последовательность начинается и кончается вершиной,
в которой каждое ребро инцидентно двум вершинам. V1
V2
В графах можно выделить различные маршруты (см.
рисунок 6).
Маршрут является замкнутым (циклом), если
V3
его начальная и конечная вершины совпадают (см.
рисунок 6).
V4
V5
Если все ребра различны, то маршрут называетРисунок 6 – Маршруты, цепи, циклы
ся цепью (см. рисунок 6).
3
Маршрут называется простой цепью, если все его вершины и рѐбра различны (см.
рисунок 6).
Одна вершина достижима из другой, если между ними проложен маршрут. Граф
считается связным, если каждая его вершина достижима из любой другой (см. рисунок 6).
В графе, диаграмма которого приведена на рисунке 6:
v1, v3, v1, v4 — маршрут, но не цепь;
v1, v3, v5, v2, v3, v4 — цепь, но не простая цепь;
v1, v4, v3, v2, v5 — простая цепь (незамкнутый маршрут) в котором ни одна дуга/ребро не встречается дважды;
v1, v3, v5, v2, v3, v4, v1 — цикл, но не простой цикл;
v1, v3, v4, v1 — простой цикл (замкнутая цепь).
В теории графов используется понятие мультимножества — неупорядоченной совокупности элементов, в которой могут быть одинаковые элементы (см. рисунок 7).
Граф задаѐтся множеством V мультимножеством E, элементами которого явV1
V2
ляются пары элементов множества V.
Обычно граф записывают в виде G(V, E).
V3
Элементы множества V часто называют
V5
V4
вершинами. Пусть граф имеет n вершин,
например V = {v1, v2, ..., vn }. Общеприняты
следующие соглашения. Если пары (vi и vj)
V6
V8
V9
V7
и (vj и vi) не различают при любых i и j, то
граф называют неориентированным, а элеРисунок 7 – Мультимножество
мент мультимножества Е — ребром. Если
пары (vi и vj) и (vj и vi) различают при любых i и j, то граф называют ориентированным, а
элемент мультимножества E — дугой. В остальных случаях граф называют смешанным.
Граф, в котором Е является мультимножеством (существуют две вершины, которые
соединены более чем одним ребром или дугой), называется мультиграфом (см. рисунок
8).
Графом G(V, E) называется совокупность двух множеств — непустого
множества V (множества вершин) и множества E двухэлементных подмножеств множества V (E — множество рѐбер). Связи между элементами изображаются на графе линиями. Если линия направленная, то она называется дугой.
Если нет, то это ребро.
Последовательность v1e1v2e2v3...ekvk+1, (где k 1, vi V, i=1,...,k+1, ei X,
j=1, ..., k), в которой чередуются вершины и рѐбра (дуги) и для каждого j=1,...,k
ребро (дуга) ej имеет вид {vj, vj+1} (для ориентированного графа (vj, vj+1)), называется маршрутом, соединяющим вершины v1 и vk+1 (путѐм из v1 в vk+1).
Ориентированный граф (или сокращѐнно орграф) — граф, в котором связи изображены дугами. Дуга представима в виде упорядоченной пары вершин (v, w), где вершина v
называется началом, а w — концом дуги. Дугу (v, w) часто записывают как vw и изображают в виде представленном на рисунке 9.
Говорят также, что дуга vw ведѐт от вершины v к вершине w, а вершина w смежная с вершиной v. На рисунке 10 показан орграф с четырьмя вершинами и пятью дугами.
4
V1
V
V3
W
1
2
3
4
V2
Рисунок 8 – Мультиграф
Рисунок 9 – Дуга
орграфа
Рисунок 10 – Ориентированный граф
Вершины vi и vj. орграфа G(V, E) называются смежными, если в Е имеется пара (vi,
vj). Вершина vi инцидентна дуге (vi, vj). Степенью вершины орграфа называется число
дуг, инцидентных ей.
Вершины орграфа можно использовать для представления объектов, а дуги – для отношений между объектами. Например, вершины орграфа могут представлять города, а
дуги – маршруты рейсовых полѐтов самолетов из одного города в другой.
Ориентированные графы являются основным объектом исследований в прикладной
теории графов, поскольку большинство исследуемых граф-моделей сложных систем представляют орграфами. Например, орграфы моделируют поток информации через графмодель, используя импульсную модель, согласно которой через входную вершину графмодели в систему поступает некоторое количество информации в виде импульса, который
генерирует импульсы в соседних с входной вершинах. При этом дуги интерпретируются
как операторы, воздействующие на пересылаемые по ним импульсы. Обработка информации завершена, если процесс перемещения импульсов прекращается и на выходе системы
появляется требуемая информация.
Для орграфов цепь называется путѐм, а цикл — контуром.
Путѐм (маршрутом) в орграфе называется конечная чередующаяся последовательность смежных вершин и дуг, соединяющих эти вершины (последовательность вершин v1,
v2, ...,vn, для которой существуют дуги v1v2, v2v3,…., vn-1vn .) Этот путь начинается в
вершине v1 и, проходя через вершины v2, v3, ...,vn-1 заканчивается в вершине vn. Длина пути (маршрута) — количество дуг, составляющих путь, в данном случае длина пути равна n-1. На рис. 4.14 последовательность вершин
V1
1, 2, 4 образуют путь длины 2 от вершины 1 к вершине 4. Длина пути на рисунке 11 равна 6 — число
дуг в пути.
Путь называется циклом, если его начальная
вершина совпадает с конечной, простым циклом,
V2
если это не выполняется для других вершин. В слу- V3
чае ориентированного графа, если путь проходит в Рисунке 11 – Длина маршрута орграфа равна
направлении дуг, он называется ориентированным.
6
Аналогично определяется ориентированный цикл. На рис. 4.14 вершины 3, 2, 4, 3 образуют цикл длины 3.
Граф без циклов называется ациклическим.
Контур — это замкнутый путь в орграфе v1, e1, v2, e2,..., vt, et, v1, в котором все вершины различны.
Путь (маршрут) называется открытым, если его начальная и конечная вершины
различны, в противном случае он называется замкнутым.
5
Орграф называется сильно связным, если каждая пара вершин в орграфе соединена
путѐм (маршрутом).
Компонентой сильной связности ориентированного графа называется максимальное множество вершин, в котором существуют пути (маршруты) из любой вершины в любую другую (см. рисунок 12 a).
Орграф называется слабо связным, если любые две вершины в орграфе соединены
цепью. Маршрут называется цепью, если все его дуги различны (см. рисунок 12 b).
Если элементом множества E может быть пара одинаковых (не различных) элементов V, то такой элемент множества E называется петлей, а граф называется графом с
петлями или псевдографом (см. рисунок 13). Петля обозначается как (v,v).
Во многих приложениях удобно к вершинам и дугам орграфа присоединить какуюнибудь информацию. Для этих целей используется помеченный орграф, т.е. орграф, у которого каждая дуга и/или каждая вершина имеет соответствующие метки. Меткой может
быть имя, вес или стоимость (дуги), или значение данных какого-либо заданного типа (см.
рисунок 14).
Степенью вершины v называется число рѐбер d(v), инцидентных ей, при этом петля
учитывается дважды. В случае ориентированного графа различают степень d0(v) по выходящим дугам и d1(v) — по входящим.
Сеть — связный ориентированный граф. Сетью называется граф, в котором некоторые вершины выделены; эти вершины называют полюсами. Маршрутизация – выбор
маршрута в сети.
a)
b)
Рисунок 12. Орграф:
a) сильно связный;
Рисунок 13 – Певдограф
b) слабо связный.
Рисунок 14 – Ориентированный граф: G=(V, X), V={v1, v2, v3, v4}, X={x1=(v1,v2), x2=(v1,v2),
x3=(v2,v2), x4=(v2,v3)}
Неориентированный граф G(V, E) состоит из конечного множества вершин V и
множества рѐбер E. В отличие от ориентированного графа, здесь ребро (v, w) соответствует неупорядоченной паре вершин: если (v, w) — неориентированное ребро, то (v, w) =
(w, v). Неориентированный граф без петель называется полным, если каждая его вершина
6
смежна со всеми остальными вершинами. Многое из терминологии ориентированных
графов применимо к неориентированным графам.
В неориентированном графе, изображѐнном на рисунок 15, v1x1v2x2v3x4v4x3v2 — маршрут, v2x2v3x4v4 — подмаршрут. Маршрут можно представить и по такой записи x1x2x4x3 ,
если кратности рѐбер (дуг) равны 1, можно записать и так v1v2v3v4v2 .
V2
V5
x1
x2
x3
V1
V3
x4
V4
Рисунок 15 – Неориентированный граф G=(V, X), v1 — висячая вершина,
v5 — висячая вершина
V={v1, v2, v3, v4, v5}, X={x1={v1,v2}, x2={v2,v3}, x3={v2,v4}, x4={v3,v4}}.
Цикл — это замкнутая цепь в неориентированном графе v1, e1, v2, e2,..., vt, et, v1 , в которой все вершины различны, длинной не менее 1, которая начинается и заканчивается в
одной и той же вершине.
Неориентированный граф G называется связным, если каждая пара вершин vi и vj в
графе связана цепью. Любой максимальный связный подграф (то есть не содержащийся в
других связных подграфах) графа G называется компонентой связности. Несвязный
граф имеет, по крайней мере, две компоненты связности.
Так, например, граф на рисунке 16 распадается на три компоненты связности: (1, 6),
(2, 7, 5, 4), (3).
1
2
3
7
6
4
5
Рисунке 16 – Компоненты связности графа
Если граф имеет простой цикл, содержащий все вершины графа (по одному разу), то
такой цикл называется гамильтоновым циклом. Гамильтонова цепь (путь, цикл, контур)
— простая цепь (путь, цикл, контур), проходящая через все вершины.
Если граф имеет цикл (не обязательно простой), содержащий все рѐбра графа по одному разу, то такой цикл называется Эйлеровым циклом. Эйлерова цепь (путь, цикл, контур) — цепь (путь, цикл, контур), содержащая все рѐбра (дуги) графа по одному разу.
Утверждение 1. Для того чтобы связный псевдограф G обладал Эйлеровым циклом,
необходимо и достаточно, чтобы степени всех его вершин были чѐтными.
7
Утверждение 2. Для того чтобы связный псевдограф G обладал Эйлеровой цепью,
необходимо и достаточно, чтобы он имел ровно 2 вершины нечѐтной степени.
Пусть V’ — подмножество
множества V, может быть и совпа1
2
1
2
дающее с V, и пусть Е'— подмножество множества Е. Граф G’(V’,
E’) называется подграфом графа
G(V, E), если Е' не содержит эле3
4
4
ментов (рѐбер или дуг), инцидентных вершинам, не принадлежаb)
a)
щим множеству V’ (см. рисунок
17).
Рисунок 17 – Граф (a) и один из его подграфов (b)
Подграф называется собственным, если он отличен от самого графа.
Множество рѐбер, исключение которых из графа увеличивает число его компонент,
называется разрезом графа.
Если каждой дуге (ребру) графа приписано неотрицательное число (вес), то он называется взвешенным графом (взвешенная сеть). Вес графа (сети) равен сумме весов его рѐбер. Содержательно вес ребра может означать стоимость передачи информации между узлами, соответствующими его концам, величину потока передаваемой информации по этой
дуге или еѐ пропускную способность и т.д. Взвешенные графы применяются для решения
различных транспортных задач. В этих задачах часто
V1
используют понятие разреза графа.
Двудольные графы — это графы, у которых множество вершин можно разбить на два множества V1, и
V2 , и так что каждое ребро графа соединяет только неV2
которую вершину из V1 с некоторой вершиной из V2 —
V3
все вершины подмножества графа не являются смежными (см. рисунок 18). Отметим, что в двудольном
графе каждое ребро соединяет вершины из разных
подмножеств.
V5
V4
Для двудольности графа необходимо и достаточно, чтобы он не содержал циклов нечѐтной длины.
Рисунок 18 – Двудольные
Каждый граф можно представить на плоскости
графы
множеством точек, соответствующих вершинам, которые соединены линиями, соответствующими рѐбрами и дугами. При решении задач используются различные способы описания графа: матрица смежности, перечень списков
смежных вершин и др.
8
Матрицы смежности и матрица инцидентности
Для представления ориентированных графов можно использовать различные структуры данных. Выбор структуры данных зависит от операторов, которые будут применяться к вершинам и дугам орграфа. Для наглядного представления графа используют диаграммы (см. рисунок 19), а для математических расчѐтов удобнее использовать представление графа G (V, E) в форме матрицы смежности.
Матрицу смежности можно представить в виде таблицы, строки и столбцы которой соответствуют номерам вершин графа. Если вершины смежны, то элементы
матрицы смежности равны 1, если вершины не смежны, то элементы матрицы равны 0. Диагональные элементы матрицы
равны 0, т.к. вершины сами с собой не
смежны (их соединяет ребро).
Пусть в матрице смежности графа G
строки нумеруются индексом n, а столбцы
4
— индексом m, а элементы матрицы смежности обозначают R. Для смежных вершин
Рисунок 19 – Орграф G в форме диаграммы
элементы матрицы смежности (R12, R14, R15,
R21, R23, R25, R32, R34, R35, R41, R43, R45, R51, R52,
R53, R54) равны 1, а для не смежных вершин элементы матрицы смежности (R13, R24, R31,
R42) равны 0. Диагональные элементы матрицы (R11, R22 R33, R44, R55) равны 0.
Преобразуем граф G в сеть, т.е. присвоим рѐбрам, соединяющим смежные вершины,
числовые значения, которые соответствуют их длине (R12=50, R14=25, R15=10, R21=50,
R23=25, R25=30, R32=25, R34=50, R35=35, R41=25, R43=50, R45=35, R51=10, R52=30, R53=35,
R54=15). Отобразим сеть G в форме матрицы смежности (см. рисунок 20).
1
2
3
4
5
1
2
3
4
5
0
1
0
1
1
1
0
1
1
0
1
0
1
1
0
1
1
0
1
0
1
1
1
1
0
1
1
2
0
3
4
5
5
0
0
2
5
0
0
5
0
3
0
0
1
0
0
0
3
1
5
3
5
0
0
5
3
5
5
3
5
1
0
0
5
5
0
5
2
2
2
4
2
1
5
0
Рисунок 20 – Граф и сеть G в форме матрицы смежности
Для неориентированного графа матрица смежности симметрична относительно
главной диагонали, поэтому можно задавать только верхнюю треугольную половину матрицы. Недостатком этого представления является тот факт, что не нулевыми являются
только 2n–2 из n2 элементов матрицы.
Достоинство же этого представления — лѐгкость получения, а также возможность
использования его для языков, допускающих побитовую обработку двоичных последовательностей, рассматриваемых как одно слово.
9
Таким образом матрица смежности ориентированного графа G — квадратная матрица A(G)=[aij] порядка n, где
1,
0,
aij
vi , v j
vi , v j
E
E
Если e = (v, w) — ребро в графе G, то можно говорить, что ребро e инцидентно вершине v или вершине w. Отношение инцидентности представляется в виде матрицы инцидентности. В матрице инцидентности сумма единиц по столбцам указывает на степень вершины vi. Нередко расположение вершин и рѐбер меняются местами (транспонируют). В матрице инцидентности ставится 1, если дуга исходит из вершины, и –1, если дуга заходит в неѐ.
Пусть в матрице инцидентности столбцы обозначают вершины, а строки — дуги, тогда матрица инцидентности для орграфа будет выглядеть, как представлено на рисунке 21.
1
e
1
1
e
0
2
e
3
e
4
e
5
e
6
e
1
1
4
5
0
0
0
1
0
0
1
0
-
0
1
0
0
0
1
0
0
0
0
1
0
-
e
3
0
0
7
8
2
-
1
1
0
0
0
0
-
0
1
1
0
1
1
1
1
Рисунок 21 – Граф G в форме матрицы инцидентности
Матрица инцидентности также содержит всю информацию о графе, но еѐ использование затруднительно из-за большого количества нулей.
Матрица инцидентности ориентированного графа G — прямоугольная матрица
B(G)=[bij] порядка n m, где
bij
1, vi êîíåö äóãè e j
1, vi íà÷àëî äóãè e j
0, vi íåèíöèäåíò íà e j
Матрицей смежности неориентированного графа G=(V, E) называется квадратная
симметричная матрица A(G)=[aij] порядка n, где
aij
1,
0,
vi , v j
vi , v j
E
E
Матрица инцидентности графа G называется матрица B(G)=[bij] порядка n m, где
10
bij
1, vi èíöèäåíòíà
ðåáðó e j
0, vi íåèíöèäåíò íà ðåáðó e j .
Граф — дерево
Дерево — это связанный граф, не имеющий циклов, так как любые две его вершины
соединены простым путѐм (деревом называют любой граф, в котором нет петель и связанных по замкнутой линии вершин). Число рѐбер в нем всегда на единицу меньше числа
его вершин (m = n – 1). С каждой вершиной дерева связывается конечное число отдельных деревьев, называемых поддеревьями.
Следующие утверждения эквивалентны:
 Граф G есть дерево.
 Граф G является связным и не имеет простых циклов.
 Граф G является связным и число его рѐбер ровно на 1 меньше числа
вершин.
 Любые две различные вершины графа G можно соединить единственной
(и при этом простой) цепью.
 Граф G не содержит циклов, но, добавляя к нему любое новое ребро, получаем ровно один и притом простой цикл.
Утверждение 1. Если у дерева G имеется, по крайней мере, 1 ребро, то у него найдется висячая вершина.
Утверждение 2. Пусть G связный граф, а v — висячая вершина в G, граф G’ получается из G в результате удаления вершины v и инцидентного ей ребра. Тогда G’ тоже
является связным.
Утверждение 3. Пусть G — дерево с n(G) вершинами и m(G) рѐбрами. Тогда
m(G)=n(G)-1.
Утверждение 4. Пусть G — дерево. Тогда любая цепь в G будет простой.
Дерево начинается с вершины, которая называется корнем дерева и является единственной вершиной «первого уровня». Далее идут вершины «второго уровня» и т.д., где
вершины очередного уровня (каждая из вершин) будут связаны ровно с одной вершиной
предыдущего уровня и не будут иметь никаких иных связей. Верхняя вершина называется
предком для связных с ней нижних вершин, а нижние вершины — потомками соответствующей верхней вершины. На любом дереве существует единственная вершина, не
имеющая предка — корень, и может быть сколько угодно вершин, не имеющих потомков
— листьев. Все остальные вершины имеют ровно одного предка и сколь угодно потомков.
Примерами деревьев могут служить генеалогические и организационные диаграммы. Деревья используются при анализе электрических цепей, при представлении структур
математических формул. Деревья используются для организации информации в системах
управления базами данных (иерархическая база данных (нелинейная структура данных)
может быть представлена деревом с корнем) и для представления синтаксических структур в компиляторах программ.
Пример. Рассмотрим оглавление книги, схематически представленное на рисунке 22
a). Это оглавление является деревом, которое в другой форме показано на рисунке 22 b).
Отношение «Родитель-ребѐнок» отображается в виде линии. Деревья обычно рисуются
сверху вниз, как на рисунке 22 b), так, что «родители» располагаются выше «детей».
11
Книга
Гл.1
§.1.1
§.1.2
Гл.2
§.2.1
§.2.1.1
§.2.1.2
§.2.2
§.2.3
Гл.3
Книга
Гл.1
Гл.2
§.1.1 §.1.2
§.2.1.1
§.2.1
Гл.3
§.2.2
§.2.3
§.2.1.2
b)
a)
Рисунок 22 – Оглавление книги и еѐ представление в виде дерева
Корнем этого дерева является узел Книга, который имеет три поддерева соответственно с корнями Гл.1, Гл.2 и Гл.3. Эти отношения показаны линиями, идущими из корня
Книга к узлам Гл.1, Гл.2 и Гл.3. Узел Книга является родителем узлов Гл.1, Гл.2 и Гл.3, которые являются детьми узла Книга.
Третье поддерево, с корнем Гл.3, состоит из одного узла, остальные два поддерева
имеют нетривиальную структуру. Например, поддерево с корнем Гл.2 в свою очередь
имеет три поддерева, которые соответствуют разделам книги Р.2.1, Р.2.2 и Р.2.3; последние два поддерева имеют по одному узлу, в то время как первое имеет два поддерева, соответствующие подразделам книги Р.2.1.1 и Р.2.1.2.
Предок или потомок узла, не являющийся таковым самого себя, называется истинным предком или истинным потомком соответственно. В дереве только корень не имеет
истинного предка. Узел, не имеющий истинных потомков, называется листом.
Высотой узла дерева называется длина самого длинного пути из этого узла до какого-либо листа. На рисунке 22 b) высота узла Гл.1 равна 1, узла Гл.2 = 2, а узла Гл.3 = 0.
Высота дерева совпадает с высотой корня.
Каждой вершине дерева приписывается вес, т.е. число, соответствующее общему
количеству вершин поддеревьев. Корневое дерево определяется упорядоченной последовательностью весов его вершин, в которой на первом месте стоит вес корня всего дерева, а
затем следуют соответствующие последовательности для поддеревьев в порядке возрастания весовых характеристик их корней.
Остовным деревом графа G называется свободное дерево, содержащее все вершины
графа G. Стоимость остовного дерева вычисляется как сумма стоимостей всех рѐбер, входящих в это дерево.
Например, во взвешенном связном графе требуется найти остов минимального веса.
Эта задача возникает при проектировании электропередачи, трубопроводов, дорог и т.п.,
когда требуется заданные центры соединить некоторой системой каналов связи так, чтобы
любые два центра были связаны непосредственно соединяющим их каналом, либо через
другие центры и каналы, и чтобы общая длина (или, например, стоимость) каналов связи
была минимальной. Типичное применение остовных деревьев минимальной стоимости
можно найти при разработке коммуникационных сетей. Здесь вершины графа представляют города, рѐбра — возможные коммуникационные линии между городами, а стоимость рѐбер соответствует стоимости коммуникационных линий. В этом случае остовное
дерево минимальной стоимости представляет коммуникационную сеть, объединяющую
все города коммуникационными линиями минимальной стоимости. Очевидно, что этот
остовный подграф должен быть деревом.
В качестве иллюстрации рассмотрим взвешенный граф изображѐнный на рисунке
23 а).
12
Полагаем, что e1 = (1, 4), e2 = (4, 5). Среди оставшихся ребер минимальный вес имеет, например, ребро (1, 5). Однако, оно не пригодно для построения, поскольку составляет
цикл с двумя предыдущими рѐбрами. Можно взять e3 = (2, 3), e4 = (2, 5). Тогда, рѐбра (1,
4), (4, 5), (2, 5), (2, 3) составляют остов минимального веса (см. рисунок 23 b).
1
3
5
1
5
4
4
2
4
1
5
2
a)
3
3
4
2
3
b)
Рисунок 23 – Граф и его остовное дерево
Введѐм понятие цикломатического числа γ, показывающего, сколько рѐбер графа
нужно удалить, чтобы в нѐм не осталось ни одного цикла. Цикломатическое число равно
разности между количеством рѐбер и количеством вершин графа, увеличенной на единицу:
γ = m – n + 1,
где m — количество ребер;
n — количество вершин.
Например, для графа, изображенного на рис. 4.27. а, цикломатическое число равно:
γ=m–n+1=7–5+1=3
Это значит, что для получения остовного связного дерева в графе G необходимо убрать три ребра, и тогда в нѐм не останется ни одного цикла.
Графовые деревья играют весьма важную роль в теории информации. Предположим,
что определѐнное число сообщений требуется закодировать в виде конечных последовательностей различной длины, состоящих из нулей и единиц. Если вероятности кодовых
слов заданы, то наилучшим считается код, в котором средняя длина слов минимальна по
сравнению с прочими распределениями вероятности. Двоичные кодовые деревья допускают интерпретацию в рамках теории поиска. Каждой вершине при этом сопоставляется
вопрос, ответить на который можно либо «да», либо «нет». Утвердительному и отрицательному ответу соответствуют два ребра, выходящие из вершины. «Опрос» завершается,
когда удаѐтся установить то, что требовалось.
Таким образом, используя информационные технологии, совсем несложно, проанализировав соответствующий граф, определить, какие вершины-факторы работают на устойчивость текущего состояния системы, а какие — на изменение ситуации, т.е., например, на еѐ развитие или еѐ деградацию. Важно то, что, произведя соответствующий анализ
и увидев, что возможные изменения негативны, можно попытаться ввести в модель новые
вершины, новые факторы, которые повысят стабильность системы или, напротив, исключить из модели факторы, которые оказались дестабилизирующими.
13
Типовые задачи теории графов
Развитие теории графов в основном обязано большому числу всевозможных приложений. Пожалуй, из всех математических объектов графы занимают одно из первых мест
в качестве формальных моделей реальных систем.
Перечислим основные типовые задачи и их применение:
1. Задача о кратчайшем пути: замена оборудования, составление расписания
движения транспортных средств, размещение пунктов скорой помощи, размещение телефонных станций.
2. Задача о максимальном потоке: анализ пропускной способности коммуникационной сети, организация движения в динамической сети, оптимальный
подбор интенсивностей выполнения работ, задача о распределении работ.
3. Задача об упаковках и покрытиях: оптимизация структуры ПЗУ (постоянного запоминающего устройства), размещение диспетчерских пунктов городской
транспортной сети.
4. Раскраска в графах: распределение памяти в компьютере, проектирование
сетей телевизионного вещания.
5. Связность графов и сетей: проектирование кратчайшей коммуникационной сети, синтез структурно-надѐжной сети циркуляционной связи, анализ надѐжности стохастических сетей связи.
6. Изоморфизм графов и сетей: структурный синтез линейных избирательных цепей, автоматизация контроля при проектировании БИС.
7. Изоморфное вхождение и пересечение графов: локализация неисправности с помощью алгоритмов поиска, покрытие схемы заданным набором типовых
подсхем.
8. Автоморфизм графов: конструктивное перечисление структурных изомеров для производных органических соединений, синтез тестов цифровых устройств.
Рассмотрим некоторые типы задач более подробно.
Кратчайшие пути
Задача поиска минимального пути между двумя заданными вершинами aн и aк в
графе при условии, что каждой дуге (i,j) сопоставлен вес ci, — неотрицательное число и
оценка аддитивна. Если веса обозначают длину дуги, то задача формулируется как задача
нахождения кратчайшего пути между заданными вершинами.
Рассмотрим классический алгоритм решения этой задачи — алгоритм Дейкстры, в
основе которого лежит следующий тезис Дейкстры: если кратчайший путь проходит через вершину ai, то длина части пути от aн до ai должна быть минимально возможной. Алгоритм решения задачи представим следующей последовательностью шагов.
I. Начальные присваивания. Каждой вершине, кроме начальной, сопоставим
вес l (ai), равный бесконечности, назовем этот вес временным. Начальной вершине
сопоставим вес, равный нулю: l (aн) = 0, назовѐм этот вес постоянным, вершину
aн назовем текущей и обозначим как p.
II. Обновление весов. Всем вершинам, связанным с текущей по исходящим
дугам и имеющим временные веса, изменим веса по правилу l (аi) = min (l (аi), l
(p)+сp,j)
III. Смена текущей вершины. Среди вершин с временной оценкой найдѐм
вершину с минимальным весом и назовем еѐ текущей, а еѐ вес — постоянным.
Если это есть вершина aк, то перейдем к пункту IV, иначе — к пункту II.
IV. Выделение пути обратным ходом. Определим конечную вершину как текущую; для каждой вершины, связанной с ней по заходящим дугам, определим
разность между весом текущей вершины и весом дуги. Вершину, вес которой
совпадает с этой разностью, назовѐм текущей, а дугу отнесѐм к пути. То, что та-
14
кая вершина всегда найдѐтся, гарантируется способом построения весов вершин.
Возможно, что таких вершин будет несколько, что говорит о существовании нескольких решений задачи. Выберем в этом случае любую из них. Повторим эту
процедуру до тех пор, пока текущей не станет начальная вершина. В результате
множество отнесѐнных к пути дуг дадут искомое решение.
Пример. Заданный граф приведѐн на рисунке 24 (ход решения представлен таблицей 1).
Выполняя шаг IV алгоритма решения задачи, выделим путь «12-9-6-3-2-1». Но существует ещѐ один путь той же длины — «12-9-8-5-4-1», так как для вершины 9 имеем два
одинаковых по длине пути к началу, проходящих через вершины 8 и 6. Легко видеть, что
решением задачи по алгоритму Дейкстры всегда будет путь минимальной длины.
Примеры применения на практике:
1) В небольшом городе строится пожарная часть. Каким образом выбрать
место для строительства, что бы время, за которое пожарники доедут в самый
дальний от части район города, было минимальным?
2) Где установить сетевой коммутатор (хаб), чтобы длина самого длинного
провода была минимальна?
3) Как создать в городе сеть ресторанов, чтобы из любой точки города можно было приехать в один из таких ресторанов менее чем за десять минут? (Ответом на данную задачу будет минимальное число ресторанов и места их расположения)
4) Как наиболее оптимально разместить 5 служб доставки пиццы на дом,
чтобы максимальное время пути курьера до любого дома было минимально.
Таблица 1
р
1
2
4
3
5
6
7
8
9
11
12
ai
2
4
3
5
5
7
6
8
9
10
11
12
12
—
Вес
2
3
5
7
6
7
6
7
11
10
11
13
3
—
15
2
10
3
11
3
4
2
7
2
4
8
4
9
1
5
4
3
4
5
3
6
5
2
1
12
1
3
2
3
Рисунок 24 – Задача поиска минимального пути между двумя заданными вершинами
Раскраска графа
В не орграфе G (V, U) взвесим вершины целыми положительными числами и потребуем при этом, чтобы смежным вершинам были сопоставлены разные числа. Если число
трактовать как номер краски (цвета), то такое взвешивание вершин называют раскраской
графа.
Раскраска графа, в которой используется минимальное число красок, называется минимальной. Число красок минимальной раскраски является одной из характеристик графа
и называется хроматическим числом.
Если вершинам сопоставить вхождение переменной в программу, а ребром обозначить зависимость одной переменной от другой, то идентификатору переменной будет соответствовать краска. Действительно, зависимые переменные должны иметь разные имена. Тогда нахождение минимального числа внутренних переменных сведѐтся к минимальной раскраске вершин графа. В этой трактовке задача рассматривалась А.П. Ершовым,
одним из крупнейших теоретиков и практиков программирования, предложившим интересный эвристический алгоритм решения этой задачи.
Алгоритм раскраски А.П. Ершова
Введѐм понятие расстояния между вершинами как длину минимального пути между
ними. Назовѐм множество вершин на расстоянии единицы от вершины v 1-окрестностью
вершины v; p-окрестностью вершины v — множество вершин на расстоянии p от v.
1. Выберем вершину и присвоим ей первую краску.
2. Выберем из 2-окрестности этой вершины любую вершину и присвоим ей
ту же краску. Объединим эти две вершины в одну так, что все ребра, связывающие не раскрашенные вершины с этими вершинами, заменяются рѐбрами к этой
объединенной вершине.
3. Для полученного графа находим новую не раскрашенную вершину из 2окрестности, если таковая есть, красим еѐ в ту же краску и объединяем с объединѐнной вершиной.
4. Пункты 2 и 3 выполняются до тех пор, пока существуют не раскрашенные вершины в 2-окрестности объединѐнной вершины.
5. Затем из числа не раскрашенных вершин выбирается новая вершина и для
неѐ процедура раскраски повторяется, и так до тех пор, пока все вершины не будут раскрашены.
16
Алгоритм достаточно просто реализуется, если граф представлен в виде матрицы
смежности, однако приведены примеры, когда решение имеет не минимальное количество
красок. Алгоритм А.П. Ершова относится к эвристическим алгоритмам, построенным на
основе некоторых разумных с точки зрения здравого смысла методах, для которых гарантий оптимальности нет. В алгоритме Ершова исходят из того, что нужно в одну и ту же
краску покрасить как можно больше вершин. Для этого предлагается выбирать следующую вершину для раскраски на минимально возможном расстоянии от уже покрашенных
в ту же краску вершин, чтобы обеспечить больше простора следующим шагам выбора.
Если хроматическое число графа равно двум, граф называется бихроматическим. В
таких графах все вершины делятся на два непересекающихся подмножества V1 и V2, в каждом из которых элементы не связаны между собой. Такие графы называют ещѐ двудольными и обозначаются как
G = < V1, V2, U >, где V1 V2 = , U V1 V2.
К задачам о двудольных графах сводится большое число задач, называемых задачами о назначениях. К ним относятся задачи:
• распределения множества задач по процессорам в многопроцессорной
системе;
• распределения деталей по обрабатывающим центрам в гибких автоматизированных системах;
• назначения сотрудников на должности;
• распределения товаров со складов по торговым точкам.
Во всех этих задачах исходное множество состоит из двух различных по смыслу
подмножеств, а связи могут быть только между элементом одного и элементом второго из
этих подмножеств.
Свойство бихроматического графа определяет следующая теорема.
Теорема. Граф является бихроматическим тогда и только тогда, когда он не содержит циклов нечѐтной длины.
Необходимость доказывается просто: если в графе находится цикл нечѐтной длины,
раскраска двумя красками его вершин невозможна. Достаточность доказывается сложнее
и здесь не приводится.
К задаче определения минимальной раскраски графа сводятся многие задачи. В качестве примера назовем задачу нахождения минимального числа внутренних переменных
в программе. При построении программ необходимо вводить добавочные временные переменные, например, переменную — счѐтчик цикла в операторе
for (int i=1;i<10;i+1).
Теоретико-графовый подход используется также в быстро развивающихся разделах
линейного программирования и исследования операций при изучении потоков в сетях.
Вершинам графов соответствуют пункты размещения (или выгрузки) товара; ориентированное ребро, идущее из одной вершины в другую, указывает на возможность транспортировки товара из пункта, соответствующего первой вершине, в пункт, соответствующий
второй вершине. Каждому ребру приписывается некоторое положительное число — максимальная пропускная способность ребра. Она показывает, какое максимальное количество товаров может быть выгружено в единицу времени в соответствующем пункте.
В настоящее время графовое представление все больше и больше используется в
различных областях точных и естественных наук. В программировании графовые модели
применяются при создании программного обеспечения (управляющие графы, иерархии
классов, диаграммы потоков данных), дизайне баз данных, разработке информационных
систем и систем реального времени (модели компьютерных сетей, графы состояний), а
также в системном программировании — при создании теории компиляции и преобразования программ.
17
Download