close

Вход

Забыли?

вход по аккаунту

?

278.Алейников С.М. Основы теории графов

код для вставкиСкачать
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
Воронежский государственный архитектурно–строительный университет
С.М. Алейников, В.В. Горяйнов
ОСНОВЫ ТЕОРИИ ГРАФОВ
Учебное пособие
Рекомендовано в качестве учебного пособия
редакционно-издательским советом Воронежского государственного
архитектурно–строительного университета для студентов,
обучающихся по специальности 270115
«Экспертиза и управление недвижимостью»
Воронеж 2009
УДК 519.17(075)
ББК 22.176я7
А458
Рецензенты:
кафедра информатики и прикладной математики
Московского государственного строительного университета;
В.Д. Репников, д-р физ.-мат. наук, проф., зав. кафедрой прикладной
математики Воронежского государственного технического университета
Алейников, С.М.
Основы теории графов. [Текст] : учеб. пособие / С. М. Алейников,
А458
В. В. Горяйнов; под ред. проф. С. М. Алейникова; Воронеж. гос. арх.строит. ун-т. – Воронеж, 2009. – 172 с.
ISBN 978-5-89040-243-1
Предлагаемое учебное пособие содержит теоретический материал по курсу «Теория
графов», изучаемому студентами специальности 270115 «Экспертиза и управление недвижимостью» Воронежского государственного архитектурно-строительного университета. В
пособии также приведены варианты расчетно-графической работы с примерами решения типовых задач.
Пособие будет полезно студентам и аспирантам строительных специальностей, а также инженерам-строителям.
Ил. 104. Табл. 7. Библиогр.: 18 назв.
УДК 519.17(075)
ББК 22.176я7
© Алейников С.М.,
Горяйнов В.В., 2009
© Воронежский государственный архитектурностроительный университет, 2009
ISBN 978-5-89040-243-1
2
ОГЛАВЛЕНИЕ
Введение……………………….……………………………………….....
1. Основные определения теории графов…………………………….
2. Геометрические графы………………………………………………
3. Степени вершин графа……………………………………………….
4. Изоморфизм графов…………………………………………………..
5. Матричное представление графов………………………………….
5.1. Матрица инцидентности…………………………………………
5.2. Матрица смежности………………………………………………
6. Части графов. Операции над графами…………………………….
7. Типы конечных графов……………………………………………...
7.1. Полный граф………………………………………………………
7.2. Взвешенный граф…………………………………………………
7.3. Однородные графы……………………………………………….
7.4. Двудольный граф…………………………………………………
7.5. Плоские и планарные графы……………………………………..
8. Маршруты в графе…………………………………………………...
8.1. Цепи и циклы. Пути и контуры………………………………….
8.2. Выявление маршрутов в графе заданной длины……………….
8.3. Кратчайший путь в орграфе……………………………………...
9. Связность графов……………………………………………………..
9.1. Связность неориентированных графов………………………….
9.1. Связность ориентированных графов…………………………….
9.3. Матрицы достижимости и контрдостижимости………………..
9.4. Вершинная и рёберная связность………………………………..
10. Расстояния в графе………………………………………………….
11. Рёберные и вершинные обходы графов…………………………..
11.1. Эйлеровы графы…………………………………………………
11.2. Гамильтоновы графы……………………………………………
12. Деревья………………………………………………………………..
12.1. Основные определения………………………………………….
12.2. Свойства деревьев……………………………………………….
12.3. Типы вершин дерева и его центры……………………………..
12.4. Корневые деревья………………………………………………..
12.5. Покрывающие деревья………………………………………….
13. Экстремальные задачи на графах………………………………...
13.1. Задача об остове наименьшего веса……………………………
13.2. Задача о коммивояжере………………………………………...
14. Элементы сетевого планирования………………………………...
3
5
7
12
14
17
18
18
20
23
31
31
32
34
36
37
39
39
41
45
55
55
55
57
61
63
68
68
70
73
73
74
75
75
77
85
85
90
93
15. Варианты расчетно-графической работы………………………..
Характеристика заданий………………………………………………
Задание 1. Неориентированный граф………………………………..
Задание 2. Ориентированный граф………………………………….
Задание 3. Операции над графами……………………………….......
Задание 4. Кратчайший путь в орграфе……………………………..
Задание 5. Взвешенный граф………………………………………...
Задание 6. Сетевой график…………………………………………...
Заключение……………………………………………………………….
Библиографический список рекомендуемой литературы…………
Приложение 1. Пакет символьной математики Maple
для работы с графами………………………………..
Приложение 2. Биографические сведения об ученых,
работавших в области теории графов……………...
Предметный указатель ………………………………………………...
4
106
106
109
114
122
128
133
138
148
149
150
154
168
Введение
Предлагаемое учебное пособие содержит теоретический материал и варианты расчетно-графической работы по курсу «Теория графов», изучаемому
студентами специальности 270115 «Экспертиза и управление недвижимостью»
Воронежского государственного архитектурно-строительного университета.
Пособие возникло на основе курса лекций, читаемых профессором
С.М. Алейниковым студентам строительного факультета Воронежского государственного архитектурно-строительного университета. Задания расчетнографической работы составлены совместно профессором С.М. Алейниковым и
доцентом В.В. Горяйновым.
Данное пособие состоит из пятнадцати глав и двух приложений. Первая
глава включает основные определения, понятия и термины теории графов.
Во второй главе вводится понятие геометрических графов, а в третьей
рассказывается, как определить степени вершин у неорграфа и полустепени исхода и захода вершин у орграфа.
Изоморфизму графов посвящена четвертая глава.
В пятой рассматривается построение матриц смежности и инцидентности
для неорграфов и орграфов.
В шестой главе описаны такие операции над графами, как их пересечение, объединение, симметрическая разность, удаление ребер и вершин. Также в
шестой главе рассмотрены части графов.
Полные, взвешенные, двудольные, однородные, плоские и планарные
графы описаны в седьмой главе.
Понятие маршрута в графе дано в восьмой главе. Там же рассматриваются такие разновидности маршрутов, как цепь и путь, составная цепь и составной путь, простая цепь и простой путь, цикл и контур, простой цикл и простой
контур. Здесь же показано, как выявить в графе маршрут заданной длины и
найти кратчайший путь в орграфе.
Девятая глава посвящена связности ориентированных и неориентированных графов. Описано построение матриц достижимости и контрдостижимости, а также рассмотрен вопрос о вершинной и реберной связности графов.
В десятой главе показано, как вычислить эксцентриситет вершин графа,
радиус, диаметр и центр графа.
Эйлеровы и гамильтоновы графы рассмотрены в одиннадцатой главе, а
двенадцатая посвящена деревьям. В ней содержатся сведения о свойствах деревьев, о типах вершин и центрах дерева. Также описаны корневые и покрывающие деревья.
В тринадцатой главе приведены такие экстремальные задачи на графах,
как задача об остове наименьшего веса и задача о коммивояжере. Рассмотрены
различные алгоритмы их решения.
Четырнадцатая глава посвящена задачам сетевого планирования. В ней
5
рассмотрен принцип построения сетевого графика, приведен алгоритм получения правильной нумерации вершин сети и формулы, позволяющие рассчитать
ранние и поздние сроки свершения событий, резервы времени событий, ранние
и поздние сроки начала и окончания всех работ, а также полные и свободные
резервы времени работ.
Варианты и характеристика заданий расчетно-графической работы приведены в пятнадцатой главе. Расчетно-графическая работа состоит из шести
заданий, включающих понятия неориентированного, ориентированного и взвешенного графов, понятие операций над графами и построения кратчайшего пути в орграфе и сетевого графика.
Подробное решение всех задач, входящих в расчетно-графическую работу, приведено в тексте учебного пособия.
В приложениях приведены основные операторы пакета networks программы Maple для работы с графами и биографические сведения об ученых,
работавших в области теории графов.
Авторы выражают благодарность кандидату физ.-мат. наук, доценту
А.М. Дементьевой, внимательно прочитавшей рукопись. Ее ценные замечания
и рекомендации помогли улучшить содержание пособия
6
1. Основные определения теории графов
Теория графов как наука
Начало теории графов относят к 1736 году, когда Леонард Эйлер* решил
популярную в то время задачу о кенигсбергских мостах (рис. 1): можно ли
пройти по всем семи мостам города Кенигсберга через реку Преголь по одному
разу и вернуться к исходной точке.
C
A
D
B
Рис. 1. Задача о кенигсбергских мостах
Эйлером было доказано, что это невозможно. Однако этот результат в течение ста лет оставался единственным результатом теории графов. Толчок к
развитию теория графов получила в середине XIX века, когда Густав Роберт
Кирхгоф* применил графы для анализа электрических цепей, а Артур Кэли* использовал графы при изучении молекул углеводорода.
В настоящее время теория графов используется при решении практических задач, в которых необходимо изучить не только совокупность объектов,
но и условия связей между ними. К таким задачам относятся:
● транспортные схемы, линии метро;
● электрические цепи;
● структура атомов в органических молекулах;
● экономические связи между странами;
● инженерные сети (водопровод, вентиляция);
● склады и торговые предприятия;
● календарно-сетевое планирование и управление;
● многозвенные механизмы;
● генеалогические деревья.
В этих и подобных случаях удобно изображать рассматриваемые объекты
точками, называемыми вершинами, а связи между ними линиями, называемы*
Биографические сведения см. в прил. 2.
7
ми рёбрами.
Совокупность вершин V , связи между которыми определены множеством рёбер U , называется графом и обозначается G =< V , U > .
Примерами объектов, которые удобно представлять вершинами графа для
решения практических задач, служат аэропорты, рубильники, трансформаторы
и т.д., а связи между такими вершинами удобно характеризовать посредством
рёбер, которым соответствуют авиалинии, линии электропроводки и т.д.
Например, предположим, что пять государств A, B, C, D и E для договорённости о сотрудничестве послали своих представителей на конференцию. Результатом переговоров стало подписание шести договоров: A и C, B и C, A и D,
D и B, E и A, B и E. Данной ситуации соответствует граф, имеющий пять вершин и шесть рёбер. Геометрическое изображение этого графа может иметь
один из видов, представленных на рис. 2.
E
D
C
A
B
A
A
B
C
D
C
D
E
B
E
Рис. 2. Виды геометрического изображения графа
Основные определения, понятия и термины теории графов
Граф G считается заданным, если заданы два множества: непустое множество V = {υ1,υ2 ,…,υn } вершин графа и множество U = {u1, u2 ,…, um } рёбер
графа, и обозначается G =< V , U > .
Множество V называется носителем графа, а множество U – его сигнатурой.
Число n = V вершин графа G называется его порядком. Если число рё-
бер графа G равно m = U , то G называют ( n, m ) графом.
Если m и n меньше бесконечности, то граф G называется конечным, в
противном случае – бесконечным.
Каждое ребро графа представляет собой упорядоченную или неупорядоченную пару элементов множества V.
Упорядоченная пара вершин υi и υ j графа обозначается υi × υ j . Не8
упорядоченная пара обозначается υi & υ j . Очевидно, что когда υi ≠ υ j , то
υi × υ j ≠ υ j × υi , в то же время υi & υ j = υ j & υi .
Если ребра графа представляют упорядоченные пары вершин, то он называется орграфом (ориентированным графом), а если неупорядоченные, то
неорграфом (неориентированным графом).
Различные рёбра графа могут соответствовать одним и тем же парам его
вершин. Такие рёбра называются кратными, или параллельными (рис. 3).
Рёбра графа, отвечающие парам одинаковых вершин, называются петлями (рис. 4). Для них υi & υi = υi × υi .
Рёбра графа, соединяющие упорядоченную пару различных вершин, называются дугами, или ориентированными рёбрами (рис.5). Как видно из
рис. 5, ориентация ребра указывается стрелкой и при этом говорят, что ребро u1
исходит из вершины υ1 и заходит в вершину υ2 . В этом случае вершина υ1 называется начальной вершиной ребра u1 , а υ2 – конечной вершиной. Пары
дуг υi × υ j и υ j × υi называются противоположно направленными (рис. 6).
υ1
u1
υ1
u2
υ1
u3
υ2
Рис. 5. Дуга
u1
υ2
u4
u5
u1
Рис. 4. Петля
υ1
u1
υ2
u2
Рис. 6. Противоположно
направленные дуги
Рис. 3. Кратные ребра
Рёбра, соединяющие неупорядоченные пары вершин, называются звеньями, или неориентированными рёбрами. Например, у графа на рис. 2 все
ребра являются звеньями.
В связи с введением понятий о дуге и звене в графе можно дать еще одно
определение ориентированного и неориентированного графов:
орграф – это граф, рёбрами которого являются либо дуги, либо петли
(рис. 7);
неорграфом называется граф, рёбрами которого могут быть только звенья или петли (рис. 8).
На рис.7 и 8 изображены графы четвертого порядка или ( 4,5 ) - графы,
так как n = V = 4 ( V = {υ1, υ2 , υ3 , υ4 } ), а m = U = 5 ( U = {u1, u2 , u3 , u4 , u5 } ).
9
u3
u3
υ2
υ3
u2
υ3
u2
u1
υ1
υ2
u1
u4
υ4
u5
Рис. 7. Ориентированный граф
u5
υ4
υ1
u4
Рис. 8. Неориентированный граф
Если в орграфе убрать ориентацию ребер, то полученный неорграф будет
называться основанием орграфа. Так, неорграф, представленный на рис. 8, является основанием для орграфа, изображенного на рис. 7.
В теории графов используются такие понятия, как смежность и инцидентность объектов.
Инцидентность – отношение между разнородными объектами (вершинами и рёбрами), а смежность – это отношение между однородными объектами
(только вершинами или только рёбрами).
Если ребро ui соединяет вершины υi и υ j , то вершины υi и υ j называются концевыми вершинами, или концами ребра ui .
Например, в неорграфе на рис. 8 ребро u1 соединяет вершины υ1 и υ3 .
Следовательно, данные вершины являются концевыми вершинами ребра u1 .
Две вершины называются смежными, если они являются концевыми
вершинами одного ребра.
Например, у неорграфа, изображенного на рис. 8, вершины υ2 и υ4
смежные, так как они являются концами ребра u4 .
Два ребра называются смежными, если они имеют общую вершину.
Например, на рис. 8 ребра u1 и u2 смежные, так как они имеют общую
вершину υ3 .
Если ребро ui соединяет вершины υi и υ j , то говорят, что ребро ui инцидентно вершинам υi и υ j , которые, в свою очередь, инцидентны ребру ui .
Различают положительную инцидентность – ребро исходит из вершины, и отрицательную инцидентность – ребро заходит в вершину.
Отношение инцидентности (принадлежности) можно задать списком ребер графа. Каждая строка этого списка соответствует определённому ребру. В
ней выписаны инцидентные этому ребру вершины. В неорграфе порядок записи
10
ребра строкой может быть произвольным, а в орграфе первыми записываются начальные вершины ребра и только потом – конечные. Так, для орграфа,
изображенного на рис. 7, список ребер выглядит следующим образом:
u1 = υ3 × υ1 , u2 = υ2 × υ3 , u3 = υ2 × υ3 , u4 = υ2 × υ4 и u5 = υ4 × υ4 .
Неорграф, представленный на рис. 8, имеет тот же список рёбер, что и
орграф, изображенный на рис. 7.
Граф называется простым (обыкновенным), если он не имеет кратных
рёбер и петель (см. рис. 2).
Простой граф, содержащий кратные ребра, называется мультиграфом
(рис. 9).
Граф, содержащий петли, называется псевдографом (см. рис. 8).
Граф называется смешанным, если содержит и дуги, и звенья (рис. 10).
Если граф не имеет рёбер, то он называется пустым, или нуль-графом
(рис. 11).
Одновершинный нуль-граф называется тривиальным, или (1,0 ) -графом.
u3
υ2
u3
υ3
u2
υ2
υ3
u2
υ2
υ3
υ4
u1
u1
u4
υ4
υ1
υ5
u4
υ4
υ1
Рис. 10. Смешанный граф
Рис. 9. Мультиграф
υ6
υ1
υ7
Рис. 11. Нуль-граф
При решении задач используются графы различного вида, что определяется спецификой задачи. Примером может служить организация движения автотранспорта в городе. Будем считать вершинами графа перекрёстки дорог,
рёбрами же будем считать полосы движения, соединяющие перекрёстки. В
этом случае имеем мультиграф. Если на перекрёстках имеется возможность
разворота (петли), то имеет место псевдограф. Если имеются улицы как с односторонним движением (дуги), так и с двухсторонним (звенья), то имеет место
смешанный граф.
11
2. Геометрические графы
Ранее при определении понятия графа рисунки и схемы не являлись обязательными. Речь шла о так называемых абстрактных графах. Рисунки и схемы относятся к понятию геометрического графа. Эти понятия близки, но, тем
не менее, имеют различия.
Геометрическим графом G =< V , U > называется совокупность непустого множества V точек пространства и множества U простых кривых (рис. 12),
не имеющих точек самопересечения, возможно направленных, и удовлетворяющих следующим условиям:
1) каждая замкнутая кривая из множества U содержит только одну точку
из множества V;
2) каждая незамкнутая кривая из множества U содержит ровно две точки
из множества V;
3) кривые из множества U не имеют общих точек, за исключением точек
из множества V.
а)
б)
Рис. 12. Примеры простых кривых:
а) – незамкнутых; б) – замкнутых
Элементы множества V называются вершинами графа, а само это множество – носителем графа. Элементы множества U называются рёбрами графа, а
само это множество – сигнатурой графа.
12
Другими словами, геометрический граф есть просто геометрическая конфигурация в пространстве, состоящая из множества точек, взаимосвязанных
множеством простых кривых. На рисунках вершинам графа соответствуют
жирные точки. Пересечения рёбер графа отсутствуют, т.е. рисунки являются пространственными.
Соответствующий абстрактному графу геометрический граф называется
изображением абстрактного графа.
Отметим, что у абстрактного графа могут быть различные по виду изображения, даже не похожие друг на друга (рис. 13).
υ1
υ1
υ2
υ2
υ1
υ3
υ4
υ4
υ4
υ3
υ3
υ2
Рис. 13. Изображения абстрактного графа
Введение абстрактных графов позволяет избавиться от случайных, не
принципиальных геометрических характеристик, сохраняя основные комбинаторные свойства графов. В результате многие вопросы теории графов могут
быть приложены к объектам различной природы. Так, например, геометрическое представление задачи о кенигсбергских мостах (см. рис. 1) показано на
рис. 14.
C
A
D
B
Рис. 14. Геометрическое представление задачи о кенигсбергских мостах
13
3. Степени вершин графа
Рассмотрим отдельно случаи, когда граф G является неориентированным
и ориентированным графом.
I. Пусть граф G неорграф.
Степенью вершины υi графа G называется число ( 0, 1, 2,…) звеньев
графа, инцидентных этой вершине.
Степень вершины υi графа G будем обозначать δ (υi ) . Вершины графа,
имеющие степень ноль и один, соответственно называются изолированной и
висячей вершинами.
Замечание 3.1. При подсчёте степеней вершин петлю можно считать как
единственным, так и двойным звеном в зависимости от рассматриваемой задачи с обязательным указанием кратности петли.
Пример 3.1. Найти степени вершин неорграфа, изображенного на рис. 15.
υ2
υ3
u1
υ1
u2
u3
υ4
Рис. 15. Неорграф
Решение. Вершина υ1 инцидентна двум звеньям – u1 и u2 . Следовательно, δ (υ1 ) = 2 . Аналогично определяем, что δ (υ2 ) = 1 , δ (υ3 ) = 0 и δ (υ4 ) = 3
(петля здесь считается двукратным звеном). В данном неорграфе вершина υ2
является висячей, а υ3 – изолированной.
(
)
Число δ υi , υ j , равное числу звеньев, соединяющих вершины υi и υ j ,
называется кратностью этих вершин. Если вершины υi и υ j не смежны, то
δ (υi , υ j ) = 0 . Отметим, что для неорграфов δ (υi , υ j ) = δ (υ j ,υi ) .
Из вышесказанного очевидны следующие выводы:
1. Степень любой вершины υi графа равна сумме кратностей всех пар
вершин υi & υ j , т.е.
14
δ (υi ) =
∑ δ (υi , υ j ) .
(3.1)
υ j ∈V
2. Сумма степеней всех вершин графа есть удвоенное число рёбер графа,
т.е.
∑ δ (υi ) = ∑
υi ∈V
υi ,υ j ∈V
δ (υi , υ j ) = 2m ,
(3.2)
где m = U .
Формула (3.2) следует из того, что каждое звено графа принимается во
внимание при вычислении степеней обоих его концов. Также формула (3.2)
справедлива и при наличии петель (при условии, что при подсчёте степеней
вершин петля учитывается дважды).
Из (3.2) следует, что сумма степеней всех вершин графа всегда чётная.
Исторически первой теоремой теории графов является следующая теорема.
Теорема 3.1 (Эйлера). В любом конечном графе число вершин с нечётной степенью всегда чётно.
Иногда эту теорему называют теоремой о рукопожатии: число человек,
сделавших нечётное количество рукопожатий, всегда чётное.
Пример 3.2. В офисе 15 телефонов. Можно ли их соединить проводами
так, чтобы каждый из них был соединён с тремя другими?
Решение. Вершин в графе будет столько, сколько и телефонов, т.е. 15. По
условию каждая вершина в графе соединена с тремя другими, т.е. степень каждой вершины графа равна трем. Найдем сумму степеней всех вершин графа:
3 × 15 = 45 .
Получили противоречие формуле (3.2), так как сумма степеней всех вершин графа должна быть всегда чётной. Следовательно, ответ на поставленный
вопрос отрицательный.
Пример 3.3. В государстве 100 городов, из каждого исходят 4 дороги.
Сколько дорог в государстве?
Решение. Ход решения этой задачи аналогичен рассмотренной ранее в
примере 3.2. Воспользуемся формулой (3.2):
4 × 100 = 400 = 2m ⇒ m = 200 .
Значит, в государстве 200 дорог.
II. Пусть граф G орграф.
Полустепенью исхода вершины υi графа G называется число δ + (υi ) ,
равное количеству дуг, исходящих из вершины υi .
15
Полустепенью захода вершины υi графа G называется число δ −(υi ) ,
равное количеству дуг, заходящих в вершину υi .
Замечание 3.2. Вклад каждой петли, инцидентной вершине υi , равен как
δ + (υi ) , так и δ −(υi ) .
Пример 3.4. Найти полустепени исхода и захода вершин орграфа, изображенного на рис. 16.
υ2
u1
υ1
u4
u3
u2
u5
υ4
υ3
Рис. 16. Орграф
Решение. Из вершины υ1 исходит одна дуга – u1 . Следовательно, полу-
степень исхода δ + (υ1 ) = 1 . Полустепень захода δ
(υ1 ) = 1, так как в вершину υ1
заходит одна дуга – u2 . Аналогично определяем, что δ + (υ2 ) = 0 , δ −(υ2 ) = 3 ,
δ + (υ3 ) = 1 , δ −(υ3 ) = 1 , δ + (υ4 ) = 3 и δ −(υ4 ) = 0 .
−
Очевидно, что для каждого орграфа суммы полустепеней исхода и захода
равны количеству дуг:
∑ δ + (υi ) = ∑ δ −(υi ) = m .
υi ∈V
(3.3)
υi ∈V
Для орграфа степень вершин δ (υi ) определяется равенством
δ (υi ) = δ + (υi ) + δ −(υi ) ,
т.е. степени вершин орграфа есть степени вершин соответствующего неорграфа.
Вершина υi , для которой δ + (υi ) = 0 , называется стоком, а вершина, для
(υi ) = 0 , называется истоком. В орграфе, изображенном на рис. 16,
вершина υ2 является стоком, так как для нее δ + (υ2 ) = 0 . Вершина υ4 – исток,
так как δ −(υ4 ) = 0 .
которой δ
−
16
4. Изоморфизм графов
Изоморфизм в математике – это соответствие или отношение между объектами, отражающее в некотором смысле тождество их строения.
Графы G =< V , U > и G′ =< V ′, U ′ > называются изоморфными, если
существует такое взаимно однозначное соответствие между множествами их
вершин V и V ′ , что в одном из графов вершины соединены рёбрами тогда и
только тогда, когда соответствующие им вершины другого графа соединены
рёбрами. Если рёбра ориентированы, то их направления также должны соответствовать друг другу.
Геометрический граф, изоморфный абстрактному графу, называется его
геометрической реализацией.
Если графы G и H изоморфны, то пишут G H или H G . Пример
изоморфных графов представлен на рис. 17.
υ1
υ2
υ3
e1
e5
e2
υ4
υ5
υ6
e4
e6
e3
Рис. 17. Изоморфные графы
Изоморфные графы, как правило, отождествляются. Им можно поставить
в соответствие один и тот же геометрический граф. Изоморфные графы могут
различаться конкретной природой элементов, что игнорируется при введении
понятия графа.
Из определения изоморфности графов следует, что изоморфные графы
могут различаться лишь обозначением вершин и рёбер, так как у них должно
быть одинаковое количество вершин и одинаковое количество рёбер. Соответствующие друг другу вершины должны иметь одинаковые степени и полустепени исхода и захода.
Совершенно безразлично, какую геометрическую реализацию выбирать
для изображения абстрактного графа.
17
5. Матричное представление графов
5.1. Матрица инцидентности
Рассмотрим граф G =< V , U > . Пусть он содержит n = V
вершин
( V = {υ1, υ2 , …, υn } ) и m = U рёбер ( U = {u1, u2 , …, um } ).
Инцидентность рёбер и вершин можно задать с помощью прямоугольной
матрицы Am×n = aij , имеющей m строк и n столбцов, причем
( )
● если неориентированное ребро (звено) ui инцидентно вершине υ j , то
aij = 1 ;
● если ориентированное ребро (дуга) ui инцидентно вершине υ j , то
aij = 1 при условии, что υ j является началом дуги ui , и aij = −1 , если
υ j является концом дуги ui ;
● если ребро ui является петлёй и инцидентно вершине υ j , то aij = α , где
α может быть любым числом, выбранным заранее; как правило, берут
α = 2;
● если ребро ui не инцидентно вершине υ j , то aij = 0 .
Полученная таким образом матрица А называется матрицей инцидентности графа.
Каждый граф может иметь одну матрицу инцидентности, а всякая матрица инцидентности полностью определяет соответствующий граф.
Пример 5.1. Составить матрицу инцидентности для неорграфа G, изображенного на рис. 18.
υ2
υ5
u4
υ3
u1
u2
υ1
Рис. 18. Неорграф G
18
u3
υ4
Решение. Так как данный граф имеет пять
вершин ( n = V = 5 ,
V = {υ1, υ2 , υ3 , υ4 , υ5 } ) и четыре ребра ( m = U = 4 , U = {u1, u2 , u3 , u4 } ), то матрица инцидентности будет состоять из четырех строчек и пяти столбцов. Заполнение матрицы можно вести как по строкам, так и по столбцам. Вычислим элементы первой строки. Так как звено u1 инцидентно только вершинам υ1 и υ2 ,
то a11 = 1 , a12 = 1 , a13 = 0 , a14 = 0 , a15 = 0 . Аналогично находим все остальные
элементы матрицы, и в итоге имеем
υ1 υ2 υ3 υ4 υ5
u1 ⎛ 1
u2 ⎜⎜ 1
A4×5 =
u3 ⎜ 0
⎜
u4 ⎝ 1
1
0
0
0
0
0
0
0
0
1
2
0
0⎞
0 ⎟⎟ .
0⎟
⎟
1⎠
Пример 5.2. Составить матрицу инцидентности для орграфа G, изображенного на рис. 19.
υ2
u1
u3
u2
υ1
u4
υ3
υ4
u5
Рис. 19. Орграф G
Данный орграф имеет четыре
вершины ( n = V = 4 ,
V = {υ1, υ2 , υ3 , υ4 } ) и пять ребер ( m = U = 5 , U = {u1, u2 , u3 , u4 , u5 } ). Следовательно, матрица инцидентности будет состоять из пяти строк и четырех столбцов. Вычислим элементы первой строки. Так как дуга u1 исходит из вершины
υ1 , то a11 = 1 . Дуга u1 заходит в вершину υ2 . Следовательно, a12 = −1 . Вершинам υ3 и υ4 дуга u1 не инцидентна. Значит, a13 = 0 , a14 = 0 . Аналогично находим все остальные элементы матрицы и в итоге имеем
Решение.
19
υ1
u1 ⎛ 1
u2 ⎜ −1
⎜
A5×4 = u3 ⎜ 0
⎜
u4 ⎜ 0
u5 ⎜⎝ 0
υ2
υ3
υ4
−1
0
−1
0
0
0
1
1
1
0
0 ⎞
0 ⎟⎟
.
0 ⎟
⎟
−1 ⎟
2 ⎟⎠
Заметим, что сумма всех элементов в каждой строке матрицы инцидентности орграфа будет равна нулю. Исключение составляет тот случай, когда дугой является петля.
Матрица инцидентности однозначно определяет структуру графа, что отражено в следующей теореме.
Теорема 5.1. Графы изоморфны тогда и только тогда, когда их матрицы
инцидентности получаются друг из друга некоторыми согласованными перестановками столбцов.
5.2. Матрица смежности
Матрицей смежности графа G =< V , U > называется квадратная матрица Bn×n , строкам и столбцам которой соответствуют вершины графа и элементы которой находятся по следующему правилу:
● для неорграфа элемент bij равен количеству звеньев, соединяющих
вершину υi с вершиной υ j , т.е. кратности звена υi & υ j ;
● для орграфа элемент bij равен количеству дуг, исходящих из вершины
υi и входящих в вершину υ j .
Замечание 5.1. Если граф не содержит параллельных дуг, т.е. не является
мультиграфом, то матрица смежности будет бинарной, т.е. состоять только из
нулей и единиц.
Замечание 5.2. Матрица смежности неорграфа всегда будет симметричной ( BT = B ), так как порядок вершин υi и υ j в неорграфе неважен, т.е. если в
неорграфе существует ребро υi & υ j , то существует и ребро υ j & υi .
Пример 5.3. Составить матрицу смежности для неорграфа G, изображенного на рис. 18.
20
Решение. Так как в неорграфе G пять вершин, то матрица смежности будет квадратной матрицей пятого порядка. Найдем элементы первой строки.
Вершина υ1 сама с собой не соединена, т.е. в вершине υ1 петли нет. Таким образом, элемент b11 = 0 . Далее, вершина υ1 соединена с υ2 ребром u1 , с υ4 ребром u2 и с υ5 ребром u4 . Значит, b12 = 1 , b14 = 1 и b15 = 1. Элемент b13 = 0 , так
как вершины υ1 и υ3 не являются смежными. Аналогично находим все остальные элементы матрицы и в результате получим
υ1 υ2 υ3 υ4 υ5
υ1 ⎛ 0
υ2 ⎜⎜ 1
B5×5 = υ3 ⎜ 0
⎜
υ4 ⎜ 1
υ5 ⎜⎝ 1
1
0
0
0
0
0
0
0
0
0
1⎞
0 ⎟⎟
.
0⎟
⎟
0⎟
0 ⎟⎠
1
0
0
1
0
Пример 5.4. Составить матрицу смежности для мультиграфа G, изображенного на рис. 20.
u4
u3
υ2
u5
υ3
u2
u6
u1
u7
υ1
υ4
Рис. 20. Мультиграф G
Решение. Матрица смежности для мультиграфа составляется так же, как
и для простого графа (см. пример 5.3). Так, для мультиграфа G, представленного на рис. 20, матрица смежности имеет вид
21
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B4×4 =
υ3 ⎜ 2
⎜
υ4 ⎝ 0
1
0
3
0
2
3
0
1
0
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
Здесь элементы b13 = 2 и b31 = 2 , так как вершины υ1 и υ3 соединены
двумя ребрами – u1 и u7 , а элементы b23 = 3 и b32 = 3 потому, что вершины υ2
и υ3 соединены тремя ребрами – u2 , u3 и u4 .
Пример 5.5. Составить матрицу смежности для орграфа G, изображенного на рис. 19.
Решение. Так как в орграфе G четыре вершины, то матрица смежности
будет квадратной матрицей четвертого порядка. Найдем элементы первой строки. В вершине υ1 петли нет. Значит, элемент b11 = 0 . Из вершины υ1 исходит
только одна дуга ( u1 ), и заходит она в вершину υ2 . Следовательно, b12 = 1 .
Элементы b13 = 0 и b14 = 0 , так как из υ1 в вершины υ3 и υ4 ни одна дуга не
выходит. Аналогично находим все остальные элементы матрицы и в результате
получаем
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B4×4 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
1
0
1
0
0
0
0
0
0
0
1
1
⎞
⎟
⎟.
⎟
⎟
⎠
Матрица смежности, как и матрица инцидентности, однозначно определяет структуру графа.
Теорема 5.2. Графы изоморфны тогда и только тогда, когда их матрицы
смежности получаются друг из друга одновременной перестановкой строк и
столбцов.
Другими словами, на основе этой теоремы граф восстанавливается по
матрице смежности с точностью до изоморфизма. Относительно перестановок
следует отметить, что при перестановке i-й и j-й строк одновременно переставляются i-й и j-й столбцы.
22
6. Части графов. Операции над графами
Из графа при необходимости могут быть удалены некоторые ребра и
(или) вершины. Операция удаления рёбер порождает новый граф с теми же
вершинами, что и у исходного графа, но с меньшим количеством рёбер. Если
отпадает необходимость принимать во внимание некоторую вершину, то её тоже следует удалить. Процесс удаления вершин более сложный, чем удаления
рёбер, так как необходимо удалить все те рёбра, которые представляли связь
удалённой вершины с другими вершинами графа, т.е. удалить все инцидентные
ей рёбра.
Процесс удаления вершин и рёбер графа называется разборкой графа.
Граф H =< V ′, U ′ > , полученный в результате удаления вершин и (или)
рёбер графа G =< V , U > , называется частью (подграфом) графа G (рис. 21),
при этом говорят, что граф H содержится в графе G. Граф G в этом случае называется надграфом по отношению к графу H (рис. 21).
υ2
u1
υ1
υ3
υ2
u4
υ3
u4
u3
u2
υ4
υ1
υ2
u1
u4
u3
u2
υ4
б)
а)
υ3
υ1
в)
Рис. 21. Разборка графа: а) – надграф; б) – подграф (удалено ребро u1 );
в) – подграф (удалена вершина υ4 )
Нуль-граф является подграфом любого графа.
Граф H может быть ориентированным и неориентированным в зависимости от того, каким является граф G .
Подграф H =< V , U ′ > , где U ′ ∈U , называется остовным подграфом,
или суграфом (рис. 22). Суграф получается из графа G после удаления некоторых (возможно даже всех) рёбер графа.
Для каждой части H графа G существует единственная дополнительная
часть графа G (дополнение (рис. 22)), состоящая из всех рёбер графа G, которые не являются рёбрами графа H, и вершин, инцидентных этим рёбрам. Дополнение обозначается следующим образом:
H =G\H .
23
υ1
υ1
υ1
υ6
υ2
υ6
υ2
υ6
υ2
υ5
υ3
υ5
υ3
υ5
υ3
υ4
а)
υ4
б)
υ4
в)
Рис. 22. Части графов: а) G – надграф; б) H – суграф; в) H – дополнение
На рис. 22, в изображен граф Давида. Он означает, что среди любых
шести человек всегда найдётся три попарно знакомых или три попарно незнакомых.
Пример 6.1. Пусть граф G =< V , U > – граф автомобильных дорог некоторого государства, где V – множество городов, U – множество дорог. Если
удалить все второстепенные дороги, то получится граф главных дорог (суграф
графа G). Рассмотрим некоторую область этого государства. Удалим из графа G
все города, не находящиеся на территории этой области, вместе со всеми примыкающими к ним дорогам. В результате получаем граф автодорог этой области, который является подграфом графа G.
Кроме операций удаления вершин и ребер графа с графами можно выполнять теоретико-множественные операции. Рассмотрим некоторые из них.
Пусть имеются графы G1 =< V1, U1 > и G2 =< V2 , U 2 > .
Объединением графов G1 =< V1, U1 > и G2 =< V2 , U 2 > называется граф
G3 =< V3 , U 3 > = G1 ∪ G2 , если V3 = V1 ∪ V2 u U 3 = U1 ∪ U 2 . Иначе говоря, граф
G3 объединения графов G1 и G2 содержит вершины и ребра, которые принадлежат хотя бы одному из этих графов.
Пересечением графов G1 =< V1, U1 > и G2 =< V2 , U 2 > называется граф
G3 =< V3 , U 3 >= G1 ∩ G2 , если V3 = V1 ∩ V2 u U 3 = U1 ∩ U 2 . Иначе говоря, граф
G3 пересечения графов G1 и G2 содержит вершины и ребра, которые являются
24
общими для этих графов.
Симметрической разностью G1ΔG2 графов G1 и G2 называется граф
G3 =< V3 , U 3 > , где U 3 = U1ΔU 2 = (U1 ∪ U 2 ) \ (U1 ∩ U 2 ) , т.е. U 3 – это объединение U1 и U 2 , из которого удалены ребра, общие для U1 и U 2 , a V3 – это объединение V1 и V2 , из которого удалены только те совпадающие вершины, которые не инцидентны ребрам из U 3 .
Пример 6.2. Графы G1 и G2 заданы матрицами смежности B1 и B2 соответственно:
υ1 υ2 υ3 υ4 υ5
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 = υ3 ⎜ 0
⎜
υ4 ⎜ 0
υ5 ⎜⎝1
1
0
0
0
0
1
0
0
0
1
0
1
1
0
1
1⎞
0 ⎟⎟
,
0⎟
⎟
1⎟
0 ⎟⎠
υ3 υ4 υ5 υ6
υ3 ⎛ 0
υ4 ⎜⎜ 1
B2 =
υ5 ⎜ 0
⎜
υ6 ⎝ 0
1
0
1
1
0
1
0
0
0
1
0
0
⎞
⎟
⎟.
⎟
⎟
⎠
Построить исходные графы G1 и G2 , их пересечение, объединение и
симметрическую разность. Составить матрицы смежности полученных графов.
Решение. Граф G1 содержит пять вершин: υ1, υ2 , υ3 , υ4 , υ5 . Как видно из
матрицы смежности B1 , вершина υ1 соединена с вершинами υ2 и υ5 . Вершина
υ2 – с вершинами υ1 и υ4 . Вершина υ3 соединена только с υ4 , а вершина υ4
соединена с υ2 , υ3 и υ5 , и, наконец, вершина υ5 соединена с вершинами υ1 и
υ4 . Используя полученную информацию, построим граф G1 (рис. 23). Граф G2
содержит четыре вершины: υ3 , υ4 , υ5 ,υ6 . Проводя аналогичные рассуждения,
построим граф G2 (рис. 24).
υ2
υ1
υ5
u4
u3
υ5
u5
u2
υ4
u2
u1
υ4
u6
u1
υ6
υ3
Рис. 24. Граф G2
Рис. 23. Граф G1
25
υ3
Найдем пересечение графов G1 и G2 . Общими для этих графов будут
только три вершины – υ3 , υ4 , υ5 . Добавив к этим вершинам соединяющие их
ребра, получим граф G1 ∩ G2 (рис. 25).
u2
υ5
u1
υ4
υ3
Рис. 25. Граф G1 ∩ G2
Если к графу G1 добавить те ребра и вершины графа G2 , которые не содержит граф G1 , то будем иметь граф G1 ∪ G2 (рис. 26). Чтобы получить граф
G1ΔG2 , необходимо из графа G1 ∪ G2 удалить те ребра, которые являются общими для графов G1 и G2 . Такими ребрами в данном случае являются u1 и u2 .
После этой операции (рис. 27) вершина υ3 стала изолированной. Она не инцидентна ни одному ребру полученного графа. Таким образом, ее также следует
удалить. В итоге получим граф G1ΔG2 (рис. 28).
υ2
υ1
u4
u3
υ5
u4
u3
u5
u2
υ2
υ1
u1
υ4
υ3
υ5
u6
u5
υ4
υ3
u6
υ6
υ6
Рис. 26. Граф G1 ∪ G2
Рис. 27. Граф G1 ∪ G2 после удаления
ребер u1 и u2
26
υ1
υ2
u4
u3
u5
υ4
υ5
u6
υ6
Рис. 28. Граф G1ΔG2
Матрицы смежности графов G1 ∩ G2 , G1 ∪ G2 и G1ΔG2 соответственно
равны
υ1 υ2 υ3 υ4 υ5 υ6
υ3 υ 4 υ5
BG1 ∩G2
υ3 ⎛ 0
= υ4 ⎜⎜ 1
υ5 ⎜⎝ 0
1
0
1
0⎞
1 ⎟⎟ , BG1 ∪G2
0 ⎟⎠
υ1 ⎛ 0
υ2 ⎜⎜ 1
υ3 ⎜ 0
= ⎜
υ4 ⎜ 0
υ5 ⎜ 1
⎜
υ6 ⎝ 0
1
0
0
1
0
0
0
0
0
1
0
0
0
1
1
0
1
1
1
0
0
1
0
0
0⎞
0 ⎟⎟
0⎟
⎟,
1⎟
0⎟
⎟
0⎠
υ1 υ2 υ4 υ5 υ6
BG1ΔG2
υ1 ⎛ 0
υ2 ⎜⎜ 1
= υ4 ⎜ 0
⎜
υ5 ⎜1
υ6 ⎜⎝ 0
1
0
1
0
0
0
1
0
0
1
1
0
0
0
0
0⎞
0 ⎟⎟
1 ⎟.
⎟
0⎟
0 ⎟⎠
Данные матрицы смежности можно получить сразу (без геометрического построения графов G1 ∩ G2 , G1 ∪ G2 , G1ΔG2 ) из исходных матриц
смежности B1 и B2 , применив к ним операции пересечения, объединения и
симметрической разности. Покажем, как это можно сделать.
27
Матрицу смежности BG1 ∪G2 графа G1 ∪ G2 можно получить как булеву
сумму матриц смежности B1 и B2 исходных графов G1 и G2 , где вычисление
элементов bij∪ = bij1 + bij2 подчиняется следующим правилам:
0 + 0 = 0 , 0 + 1 = 1 , 1 + 0 = 1 , 1 + 1 = 1,
(7.1)
т.е. элемент bij∪ = 0 тогда, когда оба элемента bij1 и bij2 будут равны нулю. В остальных случаях bij∪ = 1.
Как известно, складывать (вычитать) можно матрицы только одинаковых
размеров. В нашем случае это условие не выполняется. Поэтому, чтобы произвести операцию сложения, добавим к исходным матрицам смежности B1 и B2
нулевые строки и столбцы таким образом, чтобы их размеры стали одинаковыми. К матрице B1 добавим справа один столбец и снизу одну строку, а к матрице B2 – слева два столбца и сверху две строки, тем самым получим матрицы
υ1 υ2 υ3 υ4 υ5 υ6
υ1 ⎛ 0
⎜
υ2 ⎜ 1
υ3 ⎜ 0
B1 = ⎜
υ4 ⎜ 0
υ5 ⎜ 1
⎜
υ6 ⎜⎝ 0
1
0
0
1
0
0
1
0
0
0
1
0
1
0
1
0
0
1
1
0
0
0
0
υ1 υ2 υ3 υ4 υ5 υ6
0⎞
⎟
0⎟
0⎟,
⎟ B2
0⎟
0⎟
⎟
0 ⎟⎠
0
υ1 ⎛ 0
⎜
υ2 ⎜ 0
υ3 ⎜ 0
= ⎜
υ4 ⎜ 0
υ5 ⎜ 0
⎜
υ6 ⎜⎝ 0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
1
1
0
0
0
1
0
0⎞
0 ⎟⎟
0 ⎟ . (7.2)
⎟
1⎟
0⎟
⎟
0 ⎟⎠
Теперь, с учетом правил (7.1), сложим матрицы B1 и B2 , описываемые
формулами (7.2):
BG1 ∪G2
⎛0
⎜1
⎜
⎜0
= B1 + B2 = ⎜
⎜0
⎜1
⎜
⎝0
1
0
0
1
0
0
1
0
0
0
1
0
1
1
0
1
0
0
1
0
0
0
0
0
28
0⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
0⎟ ⎜0
⎟+⎜
0⎟ ⎜0
0⎟ ⎜0
⎟ ⎜
0⎠ ⎝0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
0
1
0
0⎞
0 ⎟⎟
0⎟
⎟=
1⎟
0⎟
⎟
0⎠
⎛0
⎜1
⎜
⎜0
=⎜
⎜0
⎜1
⎜
⎝0
1
0
0
1
0
0
1
0
0
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
0⎞
0 ⎟⎟
0⎟
⎟.
1⎟
0⎟
⎟
0⎠
(7.3)
Матрица смежности BG1 ∩G2 графа G1 ∩ G2 может быть получена поэлементным умножением матриц смежности B1 и B2 исходных графов G1 и G2 ,
где вычисление элементов bij∩ = bij1 ⋅ bij2 подчиняется следующим правилам:
0 ⋅ 0 = 0 , 0 ⋅1 = 0 , 1 ⋅ 0 = 0 , 1 ⋅1 = 1 ,
(7.4)
т.е. элемент bij∩ = 1 тогда, когда оба элемента bij1 и bij2 будут равны единице. В
остальных случаях bij∩ = 0 .
С учетом правила (7.4) найдем поэлементное произведение матриц B1 и
B2 , описываемых формулами (7.2):
BG1 ∩G2
⎛0
⎜1
⎜
⎜0
= B1 ∗ B2 = ⎜
⎜0
⎜1
⎜
⎝0
0⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
0⎟ ⎜0
⎟∗⎜
0⎟ ⎜0
0⎟ ⎜0
⎟ ⎜
0⎠ ⎝0
1
0
0
1
0
0
1
0
0
0
1
0
1
1
0
1
0
0
1
0
0
0
0
0
⎛0
⎜
⎜0
⎜0
=⎜
⎜0
⎜0
⎜
⎜0
⎝
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
0
1
0
0⎞
0 ⎟⎟
0⎟
⎟=
1⎟
0⎟
⎟
0⎠
0⎞
⎟
0⎟
0⎟
⎟,
0⎟
0⎟
⎟
0 ⎟⎠
где операция «∗ » означает поэлементное произведение матриц.
После удаления всех нулевых строчек и столбцов из (7.5) получим
29
(7.5)
υ3 υ4 υ5
BG1 ∩G2
υ3 ⎛ 0
= υ4 ⎜⎜ 1
υ5 ⎜⎝ 0
0⎞
1 ⎟⎟ .
0 ⎟⎠
1
0
1
Для нахождения матрицы смежности BG1ΔG2 графа симметрической раз-
ности G1ΔG2 необходимо вычесть из матрицы BG1 ∪G2 (формула (7.3)) матрицу
BG1 ∩G2 (формула (7.5)):
BG1ΔG2 = BG1 ∪G2 − BG1 ∩G2
⎛0
⎜1
⎜
⎜0
=⎜
⎜0
⎜1
⎜
⎝0
⎛0
⎜
⎜1
⎜0
=⎜
⎜0
⎜1
⎜
⎜0
⎝
1
0
0
0
0
0
0
1
1
1
0
0
1
0
0
1
0
0
0
1
1
1
0
0
1
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0⎞ ⎛ 0
0 ⎟⎟ ⎜⎜ 0
0⎟ ⎜0
⎟−⎜
1⎟ ⎜0
0⎟ ⎜ 0
⎟ ⎜
0⎠ ⎝0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0⎞
0 ⎟⎟
0⎟
⎟=
0⎟
0⎟
⎟
0⎠
0⎞
⎟
0⎟
0⎟
⎟,
1⎟
0⎟
⎟
0 ⎟⎠
1
0
0
0
0
0
0
0
1
0
0
0
и удалить нулевые строки и столбцы (если их несколько). В результате получим
υ1 υ2 υ4 υ5 υ6
BG1ΔG2
υ1 ⎛ 0
υ2 ⎜⎜ 1
= υ4 ⎜ 0
⎜
υ5 ⎜1
υ6 ⎜⎝ 0
1
0
1
0
0
0
1
0
0
1
1
0
0
0
0
0⎞
0 ⎟⎟
1 ⎟.
⎟
0⎟
0 ⎟⎠
Как видно из вышеприведенных вычислений, все матрицы BG1 ∪G2 ,
BG1 ∩G2 и BG1ΔG2 совпали с матрицами, полученными по построенным графам
G1 ∪ G2 , G1 ∩ G2 , G1ΔG2 .
30
7. Типы конечных графов
7.1. Полный граф
Простой граф, в котором любые две вершины соединены ребром (являются смежными), называется полным.
Полный граф с n вершинами обозначается K n (рис. 29).
υ1
υ1
υ2
υ4
υ3
а)
υ1
υ2
б)
г)
υ1
υ5
υ2
υ3
в)
υ1
υ2
υ4
υ3
д)
Рис. 29. Полные графы: а) K1 , б) K 2 , в) K3 , г) K 4 , д) K5
Полный граф K 6 изображен на рис. 22, а.
Общее количество рёбер в полном графе K n может быть найдено по
формуле
n ( n − 1)
Cn =
.
(7.1)
2
Полный орграф называется турниром (рис. 30).
31
Такое название графа связано с тем, что турниром называют состязание,
правила которого предписывают его участникам встречаться друг с другом
только один раз и запрещают ничейный исход.
В графе-турнире вершинами считаются все участники состязания, и для
каждой пары дуга идёт от победителя к побеждённому участнику.
υ1
υ1
υ2
υ1
а)
υ3
υ 2 υ3
υ2
б)
υ3
υ1
υ1
υ1
υ4
υ4
υ4
υ 2 υ3
υ 2 υ3
υ2
в)
Рис. 30. Турнир: а) с двумя вершинами; б) с тремя вершинами;
в) с четырьмя вершинами
7.2. Взвешенный граф
Для более детального описания связей между объектами рёбрам графа
приписываются количественные значения или характерные свойства объекта,
которые называются весами. Это могут быть порядковые номера, приоритетные при рассмотрении рёбер. Вес может означать длину пути, пропускную способность, напряжение или силу тока в электрической цепи, валентные связи в
химической формуле, количество рядов в движении на автодороге, характер
отношений между людьми.
Вес можно приписывать также и вершинам. Вершины, соответствующие
32
населённым пунктам, могут характеризоваться числом мест в гостинице и т.п.
Другими словами, вес вершины может означать любую характеристику соответствующего объекта (атомный вес элемента, вес человека и т.д.).
Графы, рёбрам и (или) вершинам которых приписаны некоторые веса, называются взвешенными графами (рис. 31).
υ1
2
1
3
υ4
4
υ5
8
υ2
6
1
υ3
Рис. 31. Взвешенный орграф
Графы, вершины которых пронумерованы, называются помеченными,
или перенумерованными графами (рис. 32).
Взвешенный помеченный орграф без петель, у которого выделены две
вершины (исток и сток), называется сетью (рис. 33).
1
2
1
41
9
3
4
3
Рис. 32. Помеченный неорграф
2
17
31
23
4
Рис. 33. Сеть
Информацию о весах ребер во взвешенном графе можно представить в
виде матрицы весов W = wij , где элементам wij приписываются следующие
( )
значения:
33
● если звено (дуга), соединяющее(ая) вершину υi с υ j , существует, то wij
равен весу этого ребра;
● если звено (дуга), соединяющее(ая) вершину υi с υ j , не существует, то
wij помечают знаком ∞ ;
● если петель нет, то элементы wii = 0 .
Из вышесказанного следует, что матрица весов является квадратной матрицей размера n × n .
Пример 7.1. Составить матрицу весов для взвешенного орграфа, представленного на рис. 31.
Решение. Матрица весов для данного орграфа будет являться матрицей
пятого порядка. Так как петель нет, то все элементы wii = 0 . Элемент w12 = 2 ,
так как существует дуга, соединяющая вершину υ1 с вершиной υ2 и ее вес равен двум. Элементы w13 = w14 = w15 = ∞ , потому что вершина υ1 не соединена с
вершинами υ3 , υ4 и υ5 (не существует дуг, выходящих из υ1 и заходящих в υ3 ,
υ4 и υ5 ). Аналогично находим все остальные элементы матрицы весов и в итоге получаем
υ1 υ2
υ1 ⎛ 0
υ2 ⎜⎜ ∞
W = υ3 ⎜ ∞
⎜
υ4 ⎜ 1
υ5 ⎜⎝ ∞
2
0
1
∞
8
υ3
υ4
υ5
∞
∞
0
4
6
∞
∞
∞
0
∞
∞⎞
∞ ⎟⎟
.
∞⎟
⎟
3⎟
0 ⎟⎠
7.3. Однородные графы
Граф называется однородным (регулярным) степени K, если степени всех
его вершин равны и равны K.
Математически это условие записывается следующим образом:
δ (υi ) = K , ∀υi ∈V .
(7.2)
Однородный граф первой степени называется паросочетанием (рис. 34).
На рис. 29, в представлен однородный граф второй степени (полный
граф K 3 ). Примерами однородных графов могут служить графы, образованные
ребрами правильных многогранников. К ним относят тетраэдр, гексаэдр (куб),
додекаэдр ( K = 3 ); октаэдр ( K = 4 ); икосаэдр ( K = 5 ). Тетраэдр имеет 4
34
υ2
υ1
υ4
υ3
υ5
υ6
Рис. 34. Паросочетание ( K = 1 )
треугольные грани, 6 рёбер и 4 вершины. Куб имеет 6 квадратных граней, 12
рёбер и 8 вершин. Додекаэдр имеет 12 пятиугольных граней, 30 рёбер и 20
вершин. Октаэдр имеет 8 треугольных граней, 12 рёбер и 6 вершин. Икосаэдр
имеет 20 треугольных граней, 30 рёбер и 12 вершин.
Однородные графы третьей степени называются кубическими, у них
всегда чётное количество вершин. Известным примером кубического графа является граф Петерсена (рис. 35).
υ6
υ5
υ10
υ1
υ7
υ2
υ4
υ9
υ3
υ8
Рис. 35. Граф Петерсена*
Для однородных графов формула (3.2) принимает вид
∑ δ (υi ) = ∑ K = 2m = n ⋅ K .
υi ∈V
*
υi ∈V
Биографические сведения см. в прил. 2.
35
(7.3)
Из формулы (7.3) видно, что если K нечётное, то n должно быть чётное. У
любого однородного графа нечётной степени всегда будет чётное количество
вершин.
7.4. Двудольный граф
Если множество вершин графа можно разбить на два непересекающихся
подмножества (две доли V1 и V2 ), т.е.
V = V1 ∪ V2 , V1 ∩ V2 = ∅ ,
и не существует рёбер, соединяющих вершины одного и того же подмножества,
то граф называется двудольным.
Двудольный граф называется полным, если каждая вершина одной доли соединена с каждой вершиной другой доли. Полный двудольный граф обозначается следующим образом:
K n1 , n2 ,
где n1 = V1 и n2 = V2 .
На рис. 36 приведены классические примеры двудольных графов.
υ1
υ4
υ2
υ5
υ1
υ3
υ5
υ6
υ4
υ3
υ2
а)
б)
Рис. 36. Двудольные графы: а) K3,3 , б) K1,4
Штриховой линией на рис. 36 обведены вершины, образующие непересекающиеся подмножества V1 и V2 .
36
7.5. Плоские и планарные графы
Ранее уже отмечалось, что возможно несколько изображений одного графа, поскольку все изоморфные графы несут одну и ту же информацию. На
практике при изготовлении микросхем необходимо выяснить, можно ли схему
радиоэлектронного устройства, которая представляет собой граф, изобразить на
плоскости без пересечений проводников. Аналогичная задача возникает и при
проектировании железнодорожных и других путей, где нежелательны переезды. Таким образом, возникает задача построения и исследования плоского графа.
Геометрический граф называется плоским, если он нарисован на плоскости так, что все его рёбра пересекаются только в вершинах. Любая точка пересечения его ребер будет вершиной графа, инцидентной рёбрам, пересекающимся в этой вершине (рис. 37).
Любой граф, изоморфный плоскому графу, называется планарным.
О планарных графах говорят, что они «укладываются» на плоскости.
Планарный граф можно «положить» на плоскость, а плоский граф уже уложен
на плоскости и является одним из изображений планарного графа. Не каждое
изображение планарного графа является плоским графом.
На рис. 38 изображен планарный граф, а на рис. 39 – его «плоская укладка», т.е. изоморфный ему плоский граф.
υ1
υ2
υ1
υ2
υ1
υ2
υ3
υ4
υ3
υ4
υ3
υ5
υ4
Рис. 37. Плоский граф
Рис. 38. Планарный граф
Рис. 39. Плоский граф
Существуют графы, не являющиеся планарными. Классическим примером не планарных графов являются графы Понтрягина*-Куратовского* K 5 и
K3,3 (рис. 40). Отметим, что граф K3,3 возник в известной задаче «о трех домах
и трех колодцах», в которой жители домов хотели бы ходить за водой к любому
колодцу так, чтобы их тропы не пересекались, т.е. чтобы никогда не встречать
своих соседей. Для этого граф, соединяющий дома и колодцы, должен быть
планарным. Однако он непланарен, так что эта задача не имеет решения.
*
Биографические сведения см. в прил. 2.
37
Прежде чем привести критерии планарности графов, выясним, какие графы являются гомеоморфными.
Два графа называются гомеоморфными, если они получены из одного и
того же графа подразбиением его рёбер (рис. 41).
υ5
υ1
υ1
υ2
υ3
υ4
υ5
υ6
υ2
υ4
υ3
б)
а)
Рис. 40. Графы Понтрягина–Куратовского: а) K5 , б) K3,3
υ2
υ2
υ4
υ1
υ1
υ3
υ3
Рис. 41. Гомеоморфные графы
Теорема 7.1 (Критерий Понтрягина-Куратовского планарности графов). Граф является планарным тогда и только тогда, когда он не содержит
частей, гомеоморфных графам Понтрягина-Куратовского.
Теорема 7.2. Подграф планарного графа является планарным графом.
Теорема 7.3. Плоский граф не должен иметь своей частью графы Понтрягина-Куратовского.
38
8. Маршруты в графе
8.1. Цепи и циклы. Пути и контуры
Последовательность из k рёбер графа, необязательно различных, называется маршрутом длины k, если любые два рядом стоящие в этой последовательности ребра являются смежными, причем если любые два рядом стоящие
ребра ориентированы, то в инцидентную им вершину предыдущее ребро
должно входить, а последующее ребро из неё должно выходить.
Из определения видно, что длина маршрута ассоциируется с количеством
рёбер. Пусть маршрут задан рёбрами u1, u2 ,…, uk и ребру ui соответствуют две
вершины υi −1 и υi ( i = 1, k ).
Маршрут называется замкнутым, если υ0 = υk , и незамкнутым, если
υ0 ≠ υ k .
Для незамкнутого маршрута υ0 называется начальной точкой, а υk –
конечной. При этом говорят, что маршрут соединяет вершины υ0 и υk или что
вершина υ0 связана с вершиной υk .
Всякая вершина, инцидентная двум рядом стоящим рёбрам маршрута, называется внутренней или промежуточной вершиной. Так как вершины и рёбра
маршрута могут повторяться, то внутренняя вершина может оказаться как начальной, так и конечной точкой.
В неорграфе маршрут называется составной цепью (рис. 42), в орграфе –
составным путём (рис. 43).
υ2
1
υ1
υ3
2
5
3
4
υ4
Рис. 42. Составная цепь
υ2
1
6
υ5
υ1
υ3
2
5
3
4
υ4
6
υ5
Рис. 43. Составной путь
Если все рёбра незамкнутого маршрута попарно различны, то в неорграфе
он называется цепью (рис. 44), а в орграфе – путём (рис. 45).
Если попарно различны все вершины незамкнутого маршрута, то такой
маршрут в неорграфе называется простой цепью (рис. 46), а в орграфе – простым путём (рис. 47).
39
υ2
1
υ3
2
υ1
1
3
4
5
υ2
υ5
Рис. 45. Путь
υ3
2
υ4
υ5
Рис. 44. Цепь
υ2
1
υ2
υ3
2
1
3
3
4
υ1
3
4
5
υ1
υ4
υ3
2
4
υ5
υ1
υ4
υ4
υ5
Рис. 47. Простой путь
Рис. 46. Простая цепь
На рис. 42 – 47 ребра пронумерованы в порядке движения от вершины υ1
к вершине υ5 .
Маршрут, содержащий все вершины графа, называется остовным.
Маршрут называется нетривиальным, если есть хотя бы одно ребро.
Нуль-маршрут не имеет рёбер. В этом случае граф состоит из одной
вершины.
Если попарно различны все рёбра замкнутого маршрута, то такой маршрут
в неорграфе называется циклом (рис. 48), а в орграфе – контуром (рис. 49).
υ2
1
υ3
2
4
5
υ2
1
3
6
υ1
υ3
2
4
5
3
6
υ5
υ1
υ4
Рис. 48. Цикл
υ5
Рис. 49. Контур
40
υ4
Замкнутый маршрут, в котором попарно различны все вершины, кроме
первой и последней, называется простым циклом (рис. 50) в неорграфе и простым контуром (рис. 51) в орграфе.
υ2
υ3
2
υ2
1
3
5
4
υ1
υ5
υ3
1
3
5
2
4
υ1
υ4
Рис. 50. Простой цикл
υ5
υ4
Рис. 51. Простой контур
8.2. Выявление маршрутов в графе заданной длины
С помощью матрицы смежности можно найти в графе маршруты заданной длины. Это отражено в следующей теореме.
Теорема 8.1. Если В – матрица смежности графа G без петель, то элемент
βij матрицы B K ( K ∈ N ) равен количеству маршрутов длины К от вершины υi
к вершине υ j .
Пример 8.1. Вычислить количество циклических маршрутов длины 3 в
графе, изображённом на рис. 52, и показать их.
υ1
υ2
υ5
υ4
υ3
Рис. 52. Неорграф
41
Решение. Составим матрицу смежности данного неорграфа.
υ1 υ2 υ3 υ4 υ5
υ1 ⎛ 0
υ2 ⎜⎜ 1
B5×5 = υ3 ⎜ 0
⎜
υ4 ⎜ 0
υ5 ⎜⎝ 0
1
0
0
0
0
1
1
0
0
1
1
1
1
0
1
0⎞
1 ⎟⎟
1 ⎟.
⎟
1⎟
0 ⎟⎠
Для того чтобы найти все маршруты в графе длины 3, необходимо его
матрицу смежности возвести в третью степень, т.е. найти B3 = B ⋅ B ⋅ B .
Сначала вычислим B 2 :
⎛0
⎜1
⎜
B2 = B ⋅ B = ⎜ 0
⎜
⎜0
⎜0
⎝
1
0
0
1
1
0
0
0
1
1
0
1
1
0
1
0⎞ ⎛0
1 ⎟⎟ ⎜⎜ 1
1⎟⋅⎜0
⎟ ⎜
1 ⎟ ⎜0
0 ⎟⎠ ⎜⎝ 0
1
0
0
1
1
0
0
0
1
1
0
1
1
0
1
0⎞ ⎛1
1 ⎟⎟ ⎜⎜ 0
1⎟ = ⎜0
⎟ ⎜
1 ⎟ ⎜1
0 ⎟⎠ ⎜⎝ 1
0
3
2
1
1
0
2
2
1
1
1
1
1
3
2
1⎞
1 ⎟⎟
1⎟,
⎟
2⎟
3 ⎟⎠
0
3
2
1
1
0
2
2
1
1
1
1
1
3
2
1⎞ ⎛0
1 ⎟⎟ ⎜⎜ 1
1⎟ ⋅⎜0
⎟ ⎜
2⎟ ⎜ 0
3 ⎟⎠ ⎜⎝ 0
1
0
0
1
1
0
0
0
1
1
0
1
1
0
1
0⎞ ⎛0
1 ⎟⎟ ⎜⎜ 3
1⎟ = ⎜2
⎟ ⎜
1 ⎟ ⎜1
0 ⎟⎠ ⎜⎝ 1
3
2
2
6
6
2
2
2
5
5
1
6
5
4
5
1⎞
6 ⎟⎟
5⎟ .
⎟
5⎟
4 ⎟⎠
а затем B3 :
⎛1
⎜0
⎜
B3 = B 2 ⋅ B = ⎜ 0
⎜
⎜1
⎜1
⎝
Чтобы найти в графе (см. рис. 52) все циклические маршруты длины 3,
требуется сложить элементы, стоящие на главной диагонали матрицы B3 :
β11 + β 22 + β33 + β 44 + β55 = 0 + 2 + 2 + 4 + 4 = 12 .
Таким образом, циклических маршрутов длины 3 с начальной вершиной
υ1 не существует (см. рис. 52), с начальной вершиной υ2 и υ3 по два
(υ2 − υ5 − υ4 − υ2 , υ2 − υ4 − υ5 − υ2 и υ3 − υ5 − υ4 − υ3 , υ3 − υ4 − υ5 − υ3 ), а с начальной вершиной υ4 и υ5 по четыре (υ4 − υ2 − υ5 − υ4 , υ4 − υ5 − υ2 − υ4 ,
42
υ4 − υ3 − υ5 − υ4 ,
υ4 − υ5 − υ3 − υ4
υ5 − υ3 − υ4 − υ5 , υ5 − υ4 − υ3 − υ5 ).
υ5 − υ2 − υ4 − υ5 ,
и
υ5 − υ4 − υ2 − υ5 ,
Пример 8.2. Вычислить количество маршрутов длины 2, 3 и 4 в графе,
изображённом на рис. 53, из вершины υ3 в υ2 и показать их.
υ1
υ2
υ4
υ3
Рис. 53. Орграф
Решение. Как и в примере 8.1, сначала составим матрицу смежности:
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B4×4 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
0
1
1
0
0
0
1
0
0
0
0
⎞
⎟
⎟,
⎟
⎟
⎠
а затем найдем B 2 , B3 и B 4 , так как нам необходимо вычислить количество
маршрутов длины 2, 3 и 4.
Итак, вычислим B 2 :
⎛0
⎜0
2
B = B⋅B =⎜
⎜1
⎜
⎝1
1
0
0
0
1
1
0
1
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
⋅
0 ⎟ ⎜1
⎟ ⎜
0 ⎠ ⎝1
1
0
0
0
1
1
0
1
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
=
0 ⎟ ⎜0
⎟ ⎜
0 ⎠ ⎝1
0
0
0
0
1
2
0
0
0⎞
0 ⎟⎟
.
0⎟
⎟
0⎠
Так как в матрице B 2 элемент β32 = 1 , то из этого следует, что существует
только один маршрут длины 2 из вершины υ3 в υ2 (υ3 − υ1 − υ2 ).
Теперь найдем B3 :
43
⎛0
⎜0
3
2
B = B ⋅B =⎜
⎜0
⎜
⎝1
0
0
0
0
1
2
0
0
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
⋅
0 ⎟ ⎜1
⎟ ⎜
0 ⎠ ⎝1
1
0
0
0
1
1
0
1
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
=
0 ⎟ ⎜0
⎟ ⎜
0 ⎠ ⎝0
0
0
0
0
0
1
0
0
0⎞
0 ⎟⎟
.
0⎟
⎟
0⎠
Элемент β32 матрицы B3 равен нулю. Следовательно, маршрутов длины
3 из вершины υ3 в υ2 не существует (вообще в данном орграфе существует
только один маршрут длины 3: υ4 − υ3 − υ1 − υ2 ).
Наконец, вычислим матрицу B 4 :
⎛0
⎜0
4
3
B = B ⋅B =⎜
⎜0
⎜
⎝0
0
0
0
0
0
0
1
0
⎞ ⎛0
⎟ ⎜0
⎟⋅⎜
⎟ ⎜1
⎟ ⎜
0 ⎠ ⎝1
0
0
0
1
0
1
0
0
0
1
1
⎞ ⎛0
⎟ ⎜0
⎟=⎜
⎟ ⎜0
⎟ ⎜
0 ⎠ ⎝0
0
0
0
0
0
0
0
0
0
0
0
⎞
⎟
⎟.
⎟
⎟
0⎠
0
0
0
Так как B 4 – нулевая матрица, то маршрутов длины 4 в орграфе нет.
Из теоремы 8.1 вытекают два следствия.
Следствие 8.1. В графе G с n вершинами существует маршрут из вершины υi в вершину υ j (υi ≠ υ j ) тогда и только тогда, когда элемент tij матрицы
T = B + B 2 + … + B n −1 не равен нулю.
Следствие 8.2. В графе G с n вершинами тогда и только тогда существует
цикл, содержащий вершину υi , когда элемент tii матрицы T = B + B 2 + … + B n
не равен нулю.
Пример 8.3. Выяснить, существуют ли циклические маршруты в орграфе,
изображенном на рис. 53.
Решение.
Воспользуемся
следствием
8.2.
Найдем
матрицу
2
3
4
2
3
4
T = B + B + B + B . Так как матрицы B , B , B и B уже получены в примере
8.2, то будем иметь
⎛0
⎜
2
3
4 ⎜0
T =B+B +B +B =
⎜1
⎜
⎝1
1
0
0
0
1
1
0
1
44
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
+
0 ⎟ ⎜0
⎟ ⎜
0 ⎠ ⎝1
0
0
0
0
1
2
0
0
0⎞
0 ⎟⎟
+
0⎟
⎟
0⎠
⎛0
⎜0
+⎜
⎜0
⎜
⎝0
0
0
0
0
0
1
0
0
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
+
0 ⎟ ⎜0
⎟ ⎜
0 ⎠ ⎝0
0
0
0
0
0
0
0
0
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 0
=
0 ⎟ ⎜1
⎟ ⎜
0 ⎠ ⎝2
1
0
0
0
2
4
0
1
0⎞
0 ⎟⎟
.
0⎟
⎟
0⎠
Так как элементы t11 , t22 , t33 и t44 все равны нулю, то это означает, что
циклические маршруты в орграфе (см. рис. 53) не существуют.
8.3. Кратчайший путь в орграфе
Задача о кратчайшем пути, т.е. о нахождении пути минимальной длины в
ориентированном графе, имеет несколько вариантов:
● найти кратчайший путь из заданной вершины s в заданную вершину t;
● найти кратчайшие пути из вершины s во все остальные вершины графа;
● найти кратчайшие пути между всеми упорядоченными парами вершин.
Мы ограничимся первыми двумя вариантами, которые решаются практически одинаково.
I. Если граф не является взвешенным, то длина пути равна числу ребер в
нем. Алгоритм нахождения кратчайшего пути для этого случая состоит из
двух этапов.
1. Начальной вершине s присваиваем номер 0.
2. Всем вершинам, которые не имеют номера и в которые входят ребра из
вершин номера i, присваиваем номер i + 1 .
Если требуется найти путь в заданную вершину t, то алгоритм останавливается, когда t получает номер. Если же нужно найти пути из s во все вершины,
то алгоритм останавливается, когда номер получат все вершины. Номер вершины и есть длина пути в эту вершину. Доказательство очевидно, поскольку путь
в любую вершину ( i + 1 )-го номера на единицу длиннее пути в вершину i-го
номера. Простота этого алгоритма обеспечивается тем, что номера, присваиваемые вершинам, остаются постоянными (не пересчитываются). Поэтому каждая вершина рассматривается только один раз.
Пример 8.4. Найти кратчайший путь от вершины s = υ1 до вершины t = υ6
в орграфе, изображенном на рис. 54.
Решение. Используем алгоритм, описанный выше. Начальной вершине
s = υ1 присваиваем номер 0. Из s = υ1(0) (верхний индекс показывает, какой номер присвоен вершине) выходят ребра в вершины υ2 и υ3 . Следовательно, этим
вершинам присваиваем номер 1. Из вершин υ2(1) и υ3(1) выходят ребра в
45
υ2
υ4
s = υ1
t = υ6
υ3
υ5
Рис. 54. Орграф
вершины υ4 и υ5 . Таким образом, вершинам υ4 и υ5 присваиваем номер
2.Наконец, из вершин υ4(2) и υ5(2) выходят ребра в вершину t = υ6 . Значит, вершине t = υ6 присваиваем номер 3. Искомая вершина t = υ6(3) получила номер,
следовательно, алгоритм остановлен. В данном графе имеется четыре пути от
вершины s = υ1 до вершины t = υ6 длины 3: υ1 − υ2 − υ4 − υ6 , υ1 − υ3 − υ5 − υ6 ,
υ1 − υ3 − υ4 − υ6 и υ1 − υ2 − υ5 − υ6 .
II. Во взвешенном графе каждому ребру присвоен положительный вес
w υi ,υ j , называемый его длиной. Длиной пути называется сумма длин, вхо-
(
)
дящих в него ребер. В этом случае задача нахождения кратчайшего пути из
вершины s решается алгоритмом, который предложил голландский математик
Эдсгер Дейкстра*. Его часто называют алгоритмом расстановки меток. В процессе работы этого алгоритма вершинам графа υi ∈V приписываются числа
(метки) d (υi ) , которые служат оценкой длины (веса) кратчайшего пути от вершины s к вершине υi . Если вершина υi получила на некотором шаге метку
d (υi ) , это означает, что в графе G существует путь из s в υi , имеющий длину
(вес) d (υi ) . Метки могут находиться в двух состояниях – быть временными
или постоянными. Превращение временной метки в постоянную означает, что
кратчайшее расстояние от вершины s до соответствующей вершины найдено.
Алгоритм Дейкстры содержит одно ограничение – веса дуг должны быть
положительными. Сам алгоритм состоит из двух этапов. На первом находится
длина кратчайшего пути, на втором строится сам путь от вершины s к
вершине t. Опишем работу алгоритма Дейкстры.
*
Биографические сведения см. в прил. 2.
46
Этап 1. Нахождение длины кратчайшего пути
Шаг 1. Присвоение вершинам начальных меток
Полагаем d ( s ) = 0* и считаем эту метку постоянной (постоянные метки
будем помечать сверху звездочкой). Для остальных вершин υi ∈V , υi ≠ s полагаем d (υi ) = ∞ и считаем эти метки временными.
Пусть υ = s , где υ – обозначение текущей вершины.
Шаг 2. Изменение меток
Для каждой вершины υi с временной меткой, непосредственно следующей за вершиной υ , меняем ее метку в соответствии со следующим правилом:
{
}
d нов. (υi ) = min dстар. (υi ) , d (υ ) + w (υ ,υi ) ,
(8.1)
где w (υ ,υi ) – вес дуги, соединяющей вершины υ и υi .
Шаг 3. Превращение метки из временной в постоянную
Из всех вершин с временными метками выбираем вершину υi*0 с наименьшим значением метки:
( )
d υi*0 = min {d (υi )} ,
(8.2)
где d (υi ) – временная метка (υi ∈V ).
Превращаем эту метку в постоянную и полагаем υ = υi*0 .
Шаг 4. Проверка на завершение первого этапа
Если требуется найти кратчайший путь в вершину t, условием окончания
алгоритма является пункт 4а. Если ищутся кратчайшие пути во все вершины, то
условие окончания – 4б.
4а. Если υ = t , то d (υ ) – длина кратчайшего пути от s до t. В противном
случае происходит возвращение ко второму шагу.
4б. Если все вершины имеют постоянные метки (значения этих меток будут показывать длины кратчайших путей), то необходимо закончить алгоритм.
В противном случае вернуться ко второму шагу.
Этап 2. Построение кратчайшего пути
Шаг 5. Последовательный поиск дуг кратчайшего пути
Среди вершин, непосредственно предшествующих вершине υ с постоянными метками, находим вершину υi (удовлетворяющую соотношению):
47
d (υ ) = d (υi ) + w (υi ,υ ) .
(8.3)
Включаем дугу, соединяющую вершины υi и υ , в искомый путь и полагаем υ = υi .
Шаг 6. Проверка на завершение второго этапа
Если υ = s , то кратчайший путь найден – его образует последовательность дуг, полученных на пятом шаге и выстроенных в обратном порядке. В
противном случае возвращаемся к пятому шагу.
Пример 8.5. По алгоритму Дейкстры найти кратчайший путь от вершины
s = υ1 до вершины t = υ6 во взвешенном орграфе, заданном матрицей весов:
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
υ2
υ3
υ4
υ5
υ6
5
0
∞
∞
∞
∞
11
8
0
∞
1
∞
3
2
1
0
∞
∞
15
∞
∞
6
0
∞
∞⎞
∞ ⎟⎟
9⎟
⎟.
20 ⎟
17 ⎟
⎟
0⎠
Решение. Данный взвешенный орграф содержит шесть вершин:
υ1, υ2 , υ3 , υ4 , υ5 , υ6 . Как видно из матрицы весов (по первой строке), вершина υ1
соединена с вершинами υ2 , υ3 , υ4 и υ5 и длины дуг, соединяющих вершину υ1
с υ2 , υ3 , υ4 , υ5 , соответственно равны 5, 11, 3 и 15. Петли в вершине υ1 нет, так
как элемент w11 = 0 . Вершина υ1 с υ6 не соединена ( w16 = ∞ ). Аналогично рассуждая о значениях элементов в остальных строках, изобразим взвешенный
орграф, соответствующий данной матрице весов (рис. 55).
υ2
5
8
υ3
t = υ6
1
2
17
1
11
s = υ1
9
20
3
υ4
6
15
Рис. 55. Взвешенный орграф
48
υ5
Применим алгоритм Дейкстры.
Этап 1. Нахождение длины кратчайшего пути
Шаг 1. Присвоение вершинам начальных меток
Полагаем d ( s ) = 0* – постоянная метка, υ = s = υ1 – текущая вершина,
d (υ2 ) = d (υ3 ) = d (υ4 ) = d (υ5 ) = d (υ6 ) = ∞ – временные метки.
Все результаты вычислений удобно приводить в виде таблицы. После
первого шага получаем табл. 1.
Таблица 1
Вершины графа
Метки вершин после первого шага
υ1
υ2
υ3
υ4
υ5
υ6
0*
∞
∞
∞
∞
∞
1-я итерация
Шаг 2. Изменение меток
Множество вершин, непосредственно следующих за υ = s = υ1 с времен-
ными метками V = {υ2 , υ3 , υ4 , υ5 } . Пересчитываем временные метки этих вершин:
{
{
}
}
d нов. (υ2 ) = min d стар. (υ2 ) , d (υ ) + w (υ ,υ2 ) = min ∞, 0* + 5 = min {∞, 5} = 5 ,
{
{
}
}
d нов. (υ3 ) = min d стар. (υ3 ) , d (υ ) + w (υ ,υ3 ) = min ∞, 0* + 11 = min {∞, 11} = 11 ,
{
{
}
}
d нов. (υ4 ) = min d стар. (υ4 ) , d (υ ) + w (υ ,υ4 ) = min ∞, 0* + 3 = min {∞, 3} = 3 ,
{
}
{
}
d нов. (υ5 ) = min dстар. (υ5 ) , d (υ ) + w (υ ,υ5 ) = min ∞, 0* + 15 = min {∞, 15} = 15 .
Шаг 3. Превращение метки из временной в постоянную
Одна из временных меток превращается в постоянную
min {d (υ2 ) , d (υ3 ) , d (υ4 ) , d (υ5 ) , d (υ6 )} = min {5,11, 3,15, ∞} = 3 = d (υ4 ) ,
принимаем за υ = υ4 .
Шаг 4. Проверка на завершение первого этапа
υ = υ 4 ≠ t = υ6 ,
происходит возвращение на второй шаг.
49
Результаты вычислений оформим в виде табл. 2.
Таблица 2
Вершины графа
Метки вершин после первого шага
Метки вершин после первой итерации
υ1
υ2
υ3
υ4
υ5
υ6
0*
–
∞
5
∞
11
∞
3*
∞
15
∞
∞
2-я итерация
Шаг 2
Множество вершин, непосредственно следующих за υ = υ4 с временными
метками V = {υ5 , υ6 } . Пересчитываем временные метки этих вершин:
{
{
}
}
d нов. (υ5 ) = min dстар. (υ5 ) , d (υ ) + w (υ ,υ5 ) = min 15, 3* + 6 = min {15, 9} = 9 ,
{
}
{
}
d нов. (υ6 ) = min dстар. (υ6 ) , d (υ ) + w (υ ,υ6 ) = min ∞, 3* + 20 = min {∞, 23} = 23 .
Шаг 3
Одна из временных меток превращается в постоянную:
min {d (υ2 ) , d (υ3 ) , d (υ5 ) , d (υ6 )} = min {5,11, 9, 23} = 5 = d (υ2 ) ,
принимаем за υ = υ2 .
Шаг 4
υ = υ 2 ≠ t = υ6 ,
происходит возвращение на второй шаг.
Результаты вычислений приведем в табл. 3.
Таблица 3
Вершины графа
Метки вершин после первого шага
Метки вершин после первой итерации
Метки вершин после второй итерации
υ1
υ2
υ3
υ4
υ5
υ6
0*
–
–
∞
5
∞
11
11
∞
3*
–
∞
15
9
∞
∞
23
5*
3-я итерация
Шаг 2
Множество вершин, непосредственно следующих за υ = υ2 с временными
метками V = {υ3} (у вершины υ4 есть постоянная метка). Пересчитываем временную метку этой вершины:
50
{
{
}
}
d нов. (υ3 ) = min d стар. (υ3 ) , d (υ ) + w (υ ,υ3 ) = min 11, 5* + 8 = min {11, 13} = 11 .
Шаг 3
Одна из временных меток превращается в постоянную:
min {d (υ3 ) , d (υ5 ) , d (υ6 )} = min {11, 9, 23} = 9 = d (υ5 ) ,
принимаем за υ = υ5 .
Шаг 4
υ = υ5 ≠ t = υ6 ,
происходит возвращение на второй шаг.
Результаты вычислений приведем в табл. 4.
Таблица 4
Вершины графа
Метки вершин после первого шага
Метки вершин после первой итерации
Метки вершин после второй итерации
Метки вершин после третьей итерации
υ1
υ2
υ3
υ4
υ5
υ6
0*
–
–
–
∞
5
∞
11
11
11
∞
3*
–
–
∞
15
9
∞
∞
23
23
5*
–
9*
4-я итерация
Шаг 2
Множество вершин, непосредственно следующих за υ = υ5 с временными
метками V = {υ3 , υ6 } . Пересчитываем временные метки этих вершин:
{
{
}
}
d нов. (υ3 ) = min d стар. (υ3 ) , d (υ ) + w (υ ,υ3 ) = min 11, 9* + 1 = min {11, 10} = 10 .
{
}
{
}
d нов. (υ6 ) = min dстар. (υ6 ) , d (υ ) + w (υ ,υ6 ) = min 23, 9* + 17 = min {23, 26} = 23 .
Шаг 3
Одна из временных меток превращается в постоянную:
min {d (υ3 ) , d (υ6 )} = min {10, 23} = 10 = d (υ3 ) ,
принимаем за υ = υ3 .
Шаг 4
υ = υ3 ≠ t = υ6 ,
происходит возвращение на второй шаг.
51
Результаты вычислений приведем в табл. 5.
Таблица 5
Вершины графа
Метки вершин после первого шага
Метки вершин после первой итерации
Метки вершин после второй итерации
Метки вершин после третьей итерации
Метки вершин после четвертой итерации
υ1
υ2
υ3
υ4
υ5
υ6
0*
–
–
–
–
∞
5
∞
11
11
11
∞
3*
–
–
–
∞
15
9
∞
∞
23
23
23
5*
–
–
10*
9*
–
5-я итерация
Шаг 2
Множество вершин, непосредственно следующих за υ = υ3 с временными
метками V = {υ6 } (у вершины υ4 есть постоянная метка). Пересчитываем временную метку этой вершины:
{
}
{
}
d нов. (υ6 ) = min dстар. (υ6 ) , d (υ ) + w (υ ,υ6 ) = min 23, 10* + 9 = min {23, 19} = 19 .
Шаг 3
Одна из временных меток превращается в постоянную:
min {d (υ6 )} = min {19} = 19 = d (υ6 ) ,
принимаем за υ = υ6 .
Шаг 4
υ = υ6 = t ,
конец первого этапа.
Результаты вычислений приведем в табл. 6.
Таблица 6
Вершины графа
Метки вершин после первого шага
Метки вершин после первой итерации
Метки вершин после второй итерации
Метки вершин после третьей итерации
Метки вершин после четвертой итерации
Метки вершин после пятой итерации
52
υ1
υ2
υ3
υ4
υ5
υ6
0*
–
–
–
–
–
∞
5
∞
11
11
11
∞
3*
–
–
–
–
∞
15
9
∞
∞
23
23
23
5*
–
–
–
10*
–
9*
–
–
19*
Этап 2. Построение кратчайшего пути
1-я итерация
Шаг 5. Последовательный поиск дуг кратчайшего пути
Составим множество вершин, непосредственно предшествующих
υ = υ6 = t с постоянными метками V = {υ3 , υ4 , υ5 } . Проверим для этих вершин
выполнение равенства (8.3):
d (υ ) = d (υ5 ) + w (υ5 ,υ ) = 9* + 17 = 26 ≠ 19 ,
d (υ ) = d (υ4 ) + w (υ4 ,υ ) = 3* + 20 = 23 ≠ 19 ,
d (υ ) = d (υ3 ) + w (υ3 ,υ ) = 10* + 9 = 19 .
Включаем дугу, соединяющую вершины υ3 и υ6 , в искомый путь и полагаем υ = υ3 .
Шаг 6. Проверка на завершение второго этапа
υ = υ3 ≠ s = υ1 ,
возвращение на пятый шаг.
2-я итерация
Шаг 5
Составим множество вершин, непосредственно предшествующих υ = υ3 с
постоянными метками V = {υ1, υ2 , υ5 } . Проверим для этих вершин выполнение
равенства (8.3):
d (υ ) = d (υ5 ) + w (υ5 ,υ ) = 9* + 1 = 10 ,
d (υ ) = d (υ2 ) + w (υ2 ,υ ) = 5* + 8 = 13 ≠ 10 ,
d (υ ) = d (υ1 ) + w (υ1,υ ) = 0* + 11 = 11 ≠ 10 .
Включаем дугу, соединяющую вершины υ5 и υ3 , в искомый путь и полагаем υ = υ5 .
Шаг 6
υ = υ5 ≠ s = υ1 ,
возвращение на пятый шаг.
53
3-я итерация
Шаг 5
Составим множество вершин, непосредственно предшествующих υ = υ5 с
постоянными метками V = {υ1, υ4 } . Проверим для этих вершин выполнение равенства (8.3):
d (υ ) = d (υ4 ) + w (υ4 ,υ ) = 3* + 6 = 9 ,
d (υ ) = d (υ1 ) + w (υ1,υ ) = 0* + 15 = 15 ≠ 9 .
Включаем дугу, соединяющую вершины υ4 и υ5 , в искомый путь и полагаем υ = υ4 .
Шаг 6
υ = υ4 ≠ s = υ1 ,
возвращение на пятый шаг.
4-я итерация
Шаг 5
Составим множество вершин, непосредственно предшествующих υ = υ4 с
постоянными метками V = {υ1, υ2 , υ3} . Проверим для этих вершин выполнение
равенства (8.3):
d (υ ) = d (υ3 ) + w (υ3 ,υ ) = 10* + 1 = 11 ≠ 3 ,
d (υ ) = d (υ2 ) + w (υ2 ,υ ) = 5* + 2 = 7 ≠ 3 ,
d (υ ) = d (υ1 ) + w (υ1,υ ) = 0* + 3 = 3 .
Включаем дугу, соединяющую вершины υ1 и υ4 , в искомый путь и полагаем υ = υ1 .
Шаг 6
υ = υ1 = s ,
завершение второго этапа.
Итак, кратчайший путь от вершины s = υ1 до вершины t = υ6 построен.
Его длина (вес) равна 19, сам путь образует следующая последовательность
вершин: υ1 − υ4 − υ5 − υ3 − υ6 .
54
9. Связность графов
9.1. Связность неориентированных графов
Неориентированный граф называется связным, если любые две вершины
соединены маршрутом, т.е. являются взаимно достижимыми.
Связный неорграф образует компоненту связности (рис. 56). В общем
случае неорграф может иметь несколько компонент связности (рис. 57).
υ2
υ4
υ1
υ6
υ3
υ5
Рис. 56. Связный неорграф
υ2
υ2
υ4
υ1
υ1
υ6
υ4
υ7
υ6
υ7
υ5
υ3
υ5
υ3
а)
б)
Рис. 57. Несвязный неорграф:
а) с 2 компонентами связности, б) с 3 компонентами связности
Компоненту связности неорграфа можно определить как ту часть графа,
которую можно нарисовать, не отрывая карандаша от бумаги и, возможно,
проходя по одному и тому же ребру несколько раз.
9.2. Связность ориентированных графов
Связность орграфа определяется так же, как и для неорграфа, т.е. без учёта направления дуг, но, тем не мене, для орграфов существует ряд особенностей. Прежде чем их описать, введем понятия полупути и достижимости вершин.
55
Полупуть – это путь, который проходится без учета ориентации ребер.
Вершина υ j достижима из вершины υi , если существует путь с началом
в υi и концом в υ j . Вершина орграфа называется источником, если из неё достижима любая вершина орграфа.
Достижимость между вершинами в орграфах несимметрична: если υ j
достижима из υi , то υi необязательно достижима из υ j . Однако полупуть из υ j
в υi в этом случае существует всегда. Возможен случай, когда между вершинами нет пути ни в одну, ни в другую сторону, но есть полупуть.
Таким образом, в орграфах существуют различные виды связности, которые описываются следующими определениями.
Орграф называется сильно связным (сильным), если любые две его
вершины достижимы друг из друга (т.е. если между ними существуют пути в
обе стороны) (рис. 58).
Орграф называется односторонне связным (односторонним), если для
любой пары его вершин, по меньшей мере, одна из них достижима из другой
(т.е. если между ними существует путь хотя бы
в одну сторону)
(рис. 59).
На рис 59. орграф является односторонним потому, что, например, вершина υ2 не достижима из вершины υ4 , а сама вершины υ4 достижима из любой вершины орграфа.
Орграф называется слабо связным (слабым), если связным графом является его основание (т.е. если между любой парой вершин существует полупуть) (рис. 60).
Орграф называется несвязным, если его основание не является связным
графом (т.е. если между некоторой парой вершин нет полупути) (рис. 61).
υ1
υ2
υ1
υ2
υ4
υ3
υ4
υ3
Рис. 58. Сильный орграф
Рис. 59. Односторонний орграф
υ1
υ2
υ1
υ2
υ4
υ3
υ4
υ3
Рис. 60. Слабый орграф
Рис. 61. Несвязный орграф
56
υ5
υ6
На рис 60 орграф является слабым потому, что вершины υ2 и υ4 не достижимы друг из друга ни в одном направлении.
9.3. Матрицы достижимости и контрдостижимости
Пусть В – матрица смежности графа G =< V ,U > n–го порядка. Составим
( )
матрицу D = E + B + B 2 + … + B n −1 . Образуем из матрицы D = dij
( )
матрицу
C = cij порядка п по следующему правилу:
● если dij ≠ 0 , то cij = 1 ;
● если dij = 0 , то и cij = 0 .
В этом случае матрица С называется матрицей связности, если G – неорграф, и матрицей достижимости, если G – орграф.
В графе G тогда и только тогда существует маршрут из вершины υi в
вершину υ j , когда cij = 1 . Таким образом, в матрице С содержится информация
о существовании связей между различными элементами графа посредством
маршрутов. Если G – связный неорграф, то все элементы матрицы связности С
равны единице.
Определим следующим образом матрицу контрдостижимости Q = qij :
( )
● если вершина υi достижима из вершины υ j или i = j , то qij = 1 ;
● в противном случае qij = 0 .
( )
Нетрудно заметить, что если C = cij
Q = CT .
( )
Матрицы достижимости C = cij
– матрица достижимости, то
( )
и контрдостижимости Q = qij
можно использовать для нахождения сильных компонент графа.
Как известно, понятие сильной связности относится только к орграфам.
Поэтому далее в этом параграфе речь будет идти об орграфах.
Сильной компонентой орграфа называется подграф, который является
сильно связным орграфом.
Рассмотрим матрицу S = C ∗ Q , где операция « ∗ » означает поэлементное
произведение матриц С и Q, т.е. sij = cij ⋅ qij . Элемент sij матрицы S равен 1 то-
гда и только тогда, когда i = j или вершины υi и υ j взаимно достижимы, т.е.
υi достижима из υ j , а υ j достижима из υi . Таким образом, вершины υi и υ j
находятся в одной сильной компоненте. Следовательно, сильная компонента,
содержащая вершину υi , состоит из элементов υ j , для которых sij = 1 .
57
Пример 9.1. Найти компоненты сильной связности орграфа, изображенного на рис. 62.
υ6
υ1
υ5
υ2
υ4
υ3
Рис. 62. Орграф
Решение. Матрица смежности данного орграфа имеет вид
υ1
υ1 ⎛ 0
υ2 ⎜⎜ 0
υ3 ⎜ 0
B= ⎜
υ4 ⎜ 0
υ5 ⎜ 1
⎜
υ6 ⎝ 0
υ2 υ3 υ4 υ5 υ6
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
1
0⎞
1 ⎟⎟
0⎟
⎟.
0⎟
0⎟
⎟
0⎠
Так как орграф имеет шесть вершин, то матрица D будет равна
D = E + B + B 2 + B3 + B 4 + B5 .
Найдем B 2 , B3 , B 4 , B5 .
⎛0
⎜0
⎜
⎜0
B 2= ⎜
⎜0
⎜1
⎜
⎝0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0⎞ ⎛ 0 0
1 ⎟⎟ ⎜⎜ 0 0
0⎟ ⎜ 0 0
⎟⋅⎜
0⎟ ⎜ 0 1
0 ⎟ ⎜1 0
⎟ ⎜
0⎠ ⎝ 0 0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
1
58
0⎞ ⎛ 0 0
1 ⎟⎟ ⎜⎜ 0 0
0⎟ ⎜ 1 0
⎟=⎜
0⎟ ⎜ 0 0
0⎟ ⎜ 0 0
⎟ ⎜
0 ⎠ ⎝1 1
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0⎞
0 ⎟⎟
0⎟
⎟.
1⎟
0⎟
⎟
0⎠
⎛0
⎜0
⎜
⎜1
B 3= ⎜
⎜0
⎜0
⎜
⎝1
0
0
0
0
0
0
0
1
0
1
1
0
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
⎛0 0
⎜0 0
⎜
⎜0 0
B 5= ⎜
⎜1 1
⎜1 0
⎜
⎝0 0
1
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
2
⎛1
⎜1
⎜
⎜0
B 4= ⎜
⎜0
⎜0
⎜
⎝0
0⎞ ⎛ 0
0 ⎟⎟ ⎜⎜ 0
0⎟ ⎜ 0
⎟⋅⎜
1⎟ ⎜0
0 ⎟ ⎜1
⎟ ⎜
0⎠ ⎝ 0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
0⎞ ⎛ 0 0
0 ⎟⎟ ⎜⎜ 0 0
0⎟ ⎜ 0 0
⎟⋅⎜
0⎟ ⎜ 0 1
0 ⎟ ⎜1 0
⎟ ⎜
1⎠ ⎝ 0 0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
0⎞ ⎛ 0 0
1 ⎟⎟ ⎜⎜ 0 0
0⎟ ⎜ 0 0
⎟⋅⎜
0⎟ ⎜ 0 1
0 ⎟ ⎜1 0
⎟ ⎜
0⎠ ⎝ 0 0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
⎛1
⎜0
⎜
⎜0
D = E + B + B 2+ B 3+ B 4+ B 5= ⎜
⎜0
⎜0
⎜
⎝0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
⎛0
⎜0
⎜
⎜1
+⎜
⎜0
⎜0
⎜
⎝1
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
1
0
1
0
0
0
0
0
0
0
0⎞ ⎛1
0 ⎟⎟ ⎜⎜ 1
0⎟ ⎜ 0
⎟+⎜
1⎟ ⎜0
0⎟ ⎜ 0
⎟ ⎜
0⎠ ⎝ 0
59
0⎞ ⎛ 1
1 ⎟⎟ ⎜⎜ 1
0⎟ ⎜ 0
⎟=⎜
0⎟ ⎜0
0⎟ ⎜ 0
⎟ ⎜
0⎠ ⎝0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0⎞ ⎛ 0 0
1 ⎟⎟ ⎜⎜ 0 0
0⎟ ⎜ 0 0
⎟=⎜
0 ⎟ ⎜1 1
0 ⎟ ⎜1 0
⎟ ⎜
0⎠ ⎝ 0 0
1
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
2
0⎞ ⎛ 0
1 ⎟⎟ ⎜⎜ 0
0⎟ ⎜ 1
⎟=⎜
0⎟ ⎜ 0
0⎟ ⎜ 0
⎟ ⎜
0⎠ ⎝ 2
0
0
0
0
0
0
0
1
0
1
2
0
0
0
1
1
1
0
0
0
0
0
0
0
0⎞ ⎛ 0
0 ⎟⎟ ⎜⎜ 0
0⎟ ⎜ 0
⎟+⎜
0⎟ ⎜ 0
0 ⎟ ⎜1
⎟ ⎜
1⎠ ⎝ 0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
0⎞ ⎛ 0 0
0 ⎟⎟ ⎜⎜ 0 0
0⎟ ⎜ 0 0
⎟+⎜
0 ⎟ ⎜1 1
0 ⎟ ⎜1 0
⎟ ⎜
1⎠ ⎝ 0 0
1
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
2
0⎞
0 ⎟⎟
0⎟
⎟.
0⎟
0⎟
⎟
1⎠
0⎞
1 ⎟⎟
0⎟
⎟.
0⎟
0⎟
⎟
0⎠
0⎞
0 ⎟⎟
0⎟
⎟.
1⎟
0⎟
⎟
0⎠
0⎞
1 ⎟⎟
0⎟
⎟+
0⎟
0⎟
⎟
0⎠
0⎞
1 ⎟⎟
0⎟
⎟+
0⎟
0⎟
⎟
0⎠
⎛0
⎜0
⎜
⎜1
+⎜
⎜0
⎜0
⎜
⎝2
0
0
0
0
0
0
0
1
0
1
2
0
0
0
1
1
1
0
0
0
0
0
0
0
0⎞ ⎛ 2
0 ⎟⎟ ⎜⎜ 1
0⎟ ⎜ 2
⎟=⎜
1 ⎟ ⎜1
0⎟ ⎜ 2
⎟ ⎜
0⎠ ⎝3
0
2
0
2
1
2
0
2
0
2
3
2
2
0
3
1
2
1
2
0
2
1
2
3
0⎞
2 ⎟⎟
0⎟
⎟.
2⎟
0⎟
⎟
2⎠
Используя полученную матрицу D, составим матрицу достижимости С.
Для этого заменим в матрице D все не нулевые элементы на единицы:
⎛1
⎜1
⎜
⎜1
C =⎜
⎜1
⎜1
⎜
⎝1
0
1
0
1
1
0
1
0
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
Транспонируя матрицу достижимости
жимости Q:
⎛1 1 1
⎜0 1 0
⎜
⎜1 1 1
Q = CT = ⎜
⎜0 1 0
⎜1 1 1
⎜
⎝0 1 0
0⎞
1 ⎟⎟
0⎟
⎟.
1⎟
0⎟
⎟
1⎠
С, получим матрицу контрдости-
1
1
1
1
1
1
0
1
0
1
1
0
1⎞
1⎟⎟
1⎟
⎟.
1⎟
1⎟
⎟
1⎠
Наконец, составим матрицу S = C ∗ Q :
⎛1 0
⎜1 1
⎜
⎜1 0
S =⎜
⎜1 1
⎜1 0
⎜
⎝1 1
1
1
1
0
1
0
1
1
1
1
1
1
1
0
1
1
1
1
0⎞ ⎛ 1
1 ⎟⎟ ⎜⎜ 0
0⎟ ⎜ 1
⎟ ∗⎜
1⎟ ⎜0
0 ⎟ ⎜1
⎟ ⎜
1⎠ ⎝0
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
0
1
0
1
1
1
0
1
0
1⎞ ⎛ 1
1⎟⎟ ⎜⎜ 0
1⎟ ⎜ 1
⎟=⎜
1⎟ ⎜ 0
1⎟ ⎜1
⎟ ⎜
1⎠ ⎝ 0
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
1
0
1
0
1
0
1
0
0⎞
1 ⎟⎟
0⎟
⎟.
1⎟
0⎟
⎟
1⎠
Рассматриваем матрицу S по строкам. Из первой, третьей и пятой строк
видно, что вершины υ1 , υ3 и υ5 взаимно достижимы (элементы
60
s11 = 1, s13 = 1, s15 = 1 , s31 = 1, s33 = 1, s35 = 1 и s51 = 1, s53 = 1, s55 = 1 ). Из второй, четвертой и шестой строк видно, что вершины υ2 , υ4 и υ6 взаимно достижимы
(элементы s22 = 1, s24 = 1, s26 = 1 , s42 = 1, s44 = 1, s46 = 1 и s62 = 1, s64 = 1, s66 = 1).
Таким образом, в орграфе две компоненты сильной связности: подграф с
вершинами υ1 , υ3 , υ5 и подграф с вершинами υ2 , υ4 и υ6 (рис. 63).
υ1
υ6
υ5
υ2
υ3
υ4
Рис. 63. Компоненты сильной связности
Как видно из рис. 63, дуга, исходящая из вершины υ6 и заходящая в вершину υ5 , не вошла ни в одну компоненту сильной связности.
9.4. Вершинная и реберная связность
Числом вершинной связности κ ( G ) называется число, равное наименьшему числу вершин, удаление которых приводит к несвязному или одновершинному графу.
Числом рёберной связности λ ( G ) называется число, равное наименьшему числу рёбер, удаление которых приводит к несвязному или одновершинному графу.
Например, для графа, изображённого на рис. 64, числа вершинной и рёберной связности соответственно равны κ ( G ) = 1 (при удалении вершины υ8
граф распадается на две компоненты связности), λ ( G ) = 3 (при удалении трех
ребер, например, инцидентных вершине υ4 , граф распадается на две компоненты связности).
Вершина υi графа G называется точкой сочленения (разделяющей точкой), если граф Gυi , полученный после удаления у графа G вершины υi , имеет
больше компонент связности, чем сам граф G . При этом если граф G связный
и υi – точка сочленения, то граф Gυi несвязный.
61
υ2
υ1
υ4
υ7
υ6
υ8
υ3
υ5
Рис. 64. Неорграф
Мостом называется ребро в графе, после удаления которого начальная и
конечная вершины этого ребра оказываются несвязными, т.е. мост – ребро, после удаления которого происходит увеличение количества компонент связности
как минимум на 1.
Отметим, что граничные точки моста являются точками сочленения графа. Точки сочленения и мосты являются своего рода «узкими местами» («опасными местами») графа с точки зрения связности.
Например, для графа, изображённого на рис. 65, вершины υ4 , υ5 и υ9 являются точками сочленения, ребро υ4 & υ5 является мостом.
υ8
υ2
υ3
υ9
υ1
υ5
υ4
υ7
υ6
Рис. 65. Вершинная и рёберная связность графа
Можно сказать, что числа вершинной и рёберной связности отражают
чувствительность системы к повреждениям, а точки сочленения и мосты – наиболее уязвимые места системы.
Граф называется неразделимым, если он связный и не имеет точек сочленения. Граф, имеющий хотя бы одну точку сочленения, является разделимым и называется сепарабельным. В этом случае он разбивается на части, каждая из которых представляет собой неразделимый граф. На рис. 64 и рис. 65
представлены сепарабельные графы.
62
10. Расстояния в графе
Пусть граф G является связным неорграфом. Так как любые две вершины
графа υi и υ j связаны, то существуют простые цепи с концами υi и υ j . Таких
цепей может быть несколько, и они имеют длины, выражающиеся целыми неотрицательными числами. Следовательно, между вершинами υi и υ j должны
существовать простые цепи наименьшей длины.
Наименьшая из длин цепей, связывающих вершины υi и υ j , называется
(
)
расстоянием d υi ,υ j между этими вершинами.
Из определения следует, что d (υi ,υi ) = 0 . Также можно отметить, что
(
)
расстояние d υi ,υ j между вершинами υi и υ j обладает следующими свойствами:
( ) ( )
2. d (υi ,υ j ) = 0 ⇔ υi = υ j .
3. d (υi ,υ j ) ≥ 0 .
4. d (υi ,υ j ) ≤ d (υi ,υk ) + d (υk ,υ j ) .
1. d υi ,υ j = d υ j ,υi .
С понятием расстояния в графе связаны такие метрические характеристики графа, как эксцентриситет вершины, диаметр и радиус графа.
Для фиксированной вершины υi графа G =< V ,U > расстояние до наиболее удалённой от неё вершины называется эксцентриситетом вершины υi :
e (υi ) = max {d (υi ,υk )} , υk ∈V .
(10.1)
Диаметром графа G называется число, равное расстоянию между наиболее удалёнными друг от друга вершинами графа:
d ( G ) = max {d (υi ,υk )} или d ( G ) = max {e (υi )} ,
υi , υ k ∈ V .
(10.2)
Простая цепь, длина которой совпадает с диаметром графа, называется
диаметральной цепью.
Вершина υi называется периферийной, если её эксцентриситет равен
диаметру графа: e (υi ) = d ( G ) .
Минимальный из эксцентриситетов вершин связного графа G называется
его радиусом r ( G ) :
r ( G ) = min {e (υi )} .
(10.3)
Так как диаметр графа равен максимальному из эксцентриситетов вер63
шин, а его радиус – минимальному, то радиус графа никогда не может быть
больше диаметра.
Вершина υi называется центральной, если её эксцентриситет равен радиусу графа: e (υi ) = r ( G ) .
Множество всех центральных вершин графа называется его центром.
Есть графы, центр которых совпадает с множеством всех его вершин. Например, у любого цикла все вершины будут центральными. Если граф полный,
т.е. все его вершины соединены рёбрами, то все вершины являются центральными и его d ( G ) = r ( G ) = 1 .
Центр простой цепи состоит из двух вершин при чётном числе вершин и
из одной – при нечётном.
Пример 10.1. Найти радиус и диаметр неорграфа, изображённого на
рис. 66. Указать центральные и периферийные вершины.
υ4
υ5
υ2
υ1
υ3
Рис. 66. Неорграф
Решение. Сначала определим расстояния между вершинами графа. Из
определения следует, что
d (υ1,υ1 ) = d (υ2 ,υ2 ) = d (υ3 ,υ3 ) = d (υ4 ,υ4 ) = d (υ5 ,υ5 ) = 0 .
Расстояния от вершины υ1 до всех вершин графа равны
d (υ1, υ2 ) = d (υ1, υ4 ) = 1 , d (υ1, υ3 ) = d (υ1, υ5 ) = 2 .
Расстояния от вершины υ2 до всех вершин графа равны
d (υ2 , υ3 ) = d (υ2 , υ5 ) = d (υ2 , υ4 ) = 1
Здесь не записано расстояние d (υ2 , υ1 ) , так как по первому свойству
расстояний оно равно d (υ1, υ2 ) = 1 . Аналогично находим расстояния от вершин
υ3 и υ4 до всех вершин графа:
d (υ3 , υ4 ) = 2 , d (υ3 , υ5 ) = 1 ,
d (υ4 , υ5 ) = 1 .
Пользуясь формулой (10.1), найдем эксцентриситеты вершин графа:
64
e (υ1 ) = max {d (υ1,υ2 ) , d (υ1,υ3 ) , d (υ1,υ4 ) , d (υ1,υ5 )} = max {1, 2,1, 2} = 2 .
e (υ2 ) = max {d (υ1,υ2 ) , d (υ2 ,υ3 ) , d (υ2 ,υ4 ) , d (υ2 ,υ5 )} = max {1,1,1,1} = 1 .
e (υ3 ) = max {d (υ1,υ3 ) , d (υ2 ,υ3 ) , d (υ3 ,υ4 ) , d (υ3 ,υ5 )} = max {2,1, 2,1} = 2 .
e (υ4 ) = max {d (υ1,υ4 ) , d (υ2 ,υ4 ) , d (υ3 ,υ4 ) , d (υ4 ,υ5 )} = max {1,1, 2,1} = 2 .
e (υ5 ) = max {d (υ1,υ5 ) , d (υ2 ,υ5 ) , d (υ3 ,υ5 ) , d (υ4 ,υ5 )} = max {2,1,1,1} = 2 .
Учитывая формулы (10.2) и (10.3), вычислим диаметр и радиус графа:
d ( G ) = max {e (υ1 ) , e (υ2 ) , e (υ3 ) , e (υ4 ) , e (υ5 )} = max {2,1, 2, 2, 2} = 2 .
r ( G ) = min {e (υ1 ) , e (υ2 ) , e (υ3 ) , e (υ4 ) , e (υ5 )} = min {2,1, 2, 2, 2} = 1 .
Центром графа является вершина υ2 , так как её эксцентриситет совпадает
с радиусом графа. Все остальные вершины являются периферийными. Диаметральными цепями являются, например, цепи υ1 − υ2 − υ3 , υ1 − υ2 − υ5 ,
υ1 − υ2 − υ4 .
Для связного орграфа расстояния между вершинами определяются как
расстояния между соответствующими вершинами в его основании.
Для каждого графа можно ввести так называемую матрицу расстояний
P = pij , где
( )
(
)
pij = d υi ,υ j .
(10.4)
Эта матрица является симметричной, т.е. P = PT . С помощью матрицы
расстояний P = pij можно определить эксцентриситет e (υi ) любой вершины
( )
υi графа. Он будет равен наибольшему из чисел, стоящих в i-й строке.
( )
Пример 10.2. Составить матрицу расстояний P = pij
для неорграфа,
изображённого на рис. 67, и указать центральные и периферийные вершины.
υ2
υ3
υ5
υ1
υ4
Рис. 67. Неорграф
65
Решение. Составим матрицу расстояний. Эта матрица будет квадратной
пятого порядка, симметричной и элементы её главной диагонали будут нулями,
потому что d (υi ,υi ) = 0 . Так как элементы pij (i ≠ j ) матрицы расстояний определяются в соответствии с (10.4), то найдем их так же, как и в примере 10.1. В
итоге получим
υ1 υ2 υ3 υ4 υ5
υ1 ⎛ 0
υ2 ⎜⎜ 1
P = υ3 ⎜ 2
⎜
υ4 ⎜ 3
υ5 ⎜⎝ 1
1
0
1
2
1
2
1
0
1
2
3
2
1
0
3
1⎞
1 ⎟⎟
2 ⎟.
⎟
3⎟
0 ⎟⎠
Наибольшее число, стоящее в первой строке, равно трем. Следовательно,
e (υ1 ) = 3 . Подобным образом определим, что e (υ2 ) = 2 , e (υ3 ) = 2 , e (υ4 ) = 3 и
e (υ5 ) = 3 . Таким образом, получим d ( G ) = 3 , а r ( G ) = 2 . Следовательно, центрами графа являются вершины υ2 и υ3 . Вершины υ1 , υ4 и υ5 являются периферийными.
Задача нахождения центральных вершин возникает в практической деятельности людей. Пусть, например, граф представляет собой сеть дорог, т.е.
вершины соответствуют населенным пунктам, а ребра – дорогам между ними.
Требуется оптимально распределить больницы, пункты обслуживания и т.п. В
подобных ситуациях оптимизация заключается в минимизации расстояния от
места обслуживания до наиболее удаленного населенного пункта. Следовательно, местами размещения должны быть центральные вершины графа. Так, в
работе [1] был определен центр московского метро. Схема московского метро
представлена в виде графа, вершинами которого являются станции, а ветки
метро и переходы между станциями – ребрами, соединяющие вершины. В результате вычислений было определено, что в представленной модели центральных станций московского метро оказывается всего пять: Павелецкая (кольцевая), Добрынинская, Октябрьская (кольцевая), Парк Культуры (кольцевая) и
Серпуховская. Их эксцентриситет равен радиусу графа r ( G ) , равному 14. Диаметр графа d ( G ) равен 26. Две станции имеют подобный эксцентриситет – Алтуфьево и Битцевский парк. Результаты вычислений отображены на схеме
метро (см. рис. 68). В двойных числах первое соответствует кольцевой станции.
Подчеркнем, что это именно схема, а не граф, так как здесь не отражены ребра
графа – переходы между станциями, которые входят в вычисление центра метро.
66
Рис. 68. Схема московского метро с указанием эксцентриситетов станций
Как говорилось выше, в полном графе (каждая вершина соединена со
всеми остальными) радиус и диаметр равны 1 (недостижимая мечта пассажира!). Поэтому, чем меньше радиус и диаметр графа метро, тем оно удобнее.
67
11. Рёберные и вершинные обходы графов
11.1. Эйлеровы графы
Рассмотрим обходы рёбер графа. В 1736 г. Эйлером была сформулирована и решена общая проблема теории графов: при каких условиях связный граф
имеет цикл, проходящий по каждому его ребру один раз?
Цикл в графе G называется эйлеровым, если он содержит все рёбра
графа. Связный граф, который содержит эйлеров цикл, называется эйлеровым.
Эйлеровой цепью называется цепь, содержащая все рёбра графа.
Эйлеров граф можно нарисовать, не отрывая карандаша от бумаги и
не повторяя линий. Примером эйлерового графа является граф, изображённый
на рис. 69. Этот граф является эйлеровым, так как он содержит цикл
υ6 − υ1 − υ2 − υ6 − υ4 − υ2 − υ3 − υ4 − υ5 − υ6 . Можно указать и другие циклы, которые будут различаться лишь порядком обхода рёбер.
υ1
υ6
υ2
υ5
υ3
υ4
Рис. 69. Эйлеров граф
Примером графа, не являющегося эйлеровым, служит задача о кенигсбергских мостах (см. рис. 1 и 14). Именно Эйлером было доказано, что задача
имеет отрицательный ответ, так как соответствующий граф не содержит эйлерова цикла. Эйлер сформулировал теоремы, которые позволяют установить, является ли граф эйлеровым.
Теорема 11.1 (Эйлера). Связный граф является эйлеровым тогда и только
тогда, когда степени всех его вершин являются чётными.
Теорема 11.2 (Эйлера). Мультиграф обладает эйлеровой цепью тогда и
только тогда, когда он связный и число его вершин нечётной степени равно нулю или двум.
68
Из теоремы 11.2 следует, что вершины нечетной степени являются началом и концом эйлеровой цепи. Если таких вершин нет, то эйлерова цепь становится эйлеровым циклом.
Для нахождения эйлерового цикла (эйлеровой цепи) в эйлеровом графе
были разработаны специальные алгоритмы. К ним относят алгоритм Флери.
Алгоритм Флери
1. Выбирается произвольная вершина υi .
2. Выбирается произвольно некоторое ребро υi & υk , и ему присваивается
номер 1. Это ребро называется пройденным. Пройденное ребро вычеркиваем.
3. Далее выбираем ребро υk & υ j . Присваиваем ему номер на 1 больший
номера предыдущего вычеркнутого ребра и т.д. На этом этапе выбор ребер
проводится с учетом следующих условий:
● находясь в вершине υk , не выбираем ребра υk & υi , если имеется возможность иного выбора;
● находясь в вершине υk , не выбирают ребро, являющееся мостом, т.е.
ребро, при удалении (вычеркивании) которого нарушается связность оставшегося графа (т.е. графа, образованного невычеркнутыми рёбрами).
4. После того, как в графе будут занумерованы все рёбра, образуется эйлеров цикл (эйлерова цепь), причём порядок нумерации соответствует последовательности обхода рёбер.
Пример 11.1. Определить, является ли граф, изображенный на рис. 70,
эйлеровым, и если является, то найти в нем эйлеров цикл.
υ2
υ1
υ6
υ7
υ5
υ4
υ3
Рис. 70. Неорграф
Решение. Так как граф является связным и все степени вершин – четные
( δ (υ1 ) = δ (υ2 ) = δ (υ3 ) = δ (υ5 ) = δ (υ6 ) = δ (υ7 ) = 2 , δ (υ4 ) = 4 ), то он является эйлеровым и обладает эйлеровой цепью (в данном случае эйлеровым циклом).
Для определения эйлерова цикла применим алгоритм Флери. В качестве начальной вершины выберем, например, вершину υ2 . Далее начнем обходить
ребра в произвольном порядке, например, по часовой стрелке. Присвоим номер
69
1 ребру, соединяющему υ2 с вершиной υ3 . Затем присвоим номер 2 ребру
υ3 & υ4 (рис. 71).
После прохождения ребер 1 и 2 имеются три возможности выбора: ребра
υ4 & υ1 , υ4 & υ5 и υ4 & υ7 . Ребро υ4 & υ1 выбирать нельзя, так как оно является
мостом, т.е. если его выбрать, то граф (см. рис. 71) становится несвязным
(рис. 72).
υ2
υ1
υ6
υ7
υ4
υ5
υ4
υ3
2
υ6
υ7
1
υ5
υ2
υ1
Рис. 72. Неорграф после выбора ребра
υ4 & υ1
Рис. 71. Неорграф с двумя
пройденными ребрами
На рис. 72 ребра υ3 & υ4 и υ2 & υ3 не показаны, так как после их нумерации эти ребра вычеркиваются. Таким образом, в качестве третьего ребра можно
выбрать любое из υ4 & υ5 и υ4 & υ7 , например υ4 & υ5 . Ему присвоим номер 3.
Далее обходим все оставшиеся незанумерованными ребра и получаем эйлеров
цикл: υ2 − υ3 − υ4 − υ5 − υ6 − υ7 − υ4 − υ1 − υ2 (рис. 73).
8
υ1
υ7
7
6
υ4
5
υ2
υ6
4
υ5
3
2
1
υ3
Рис. 73. Эйлеров цикл
11.2. Гамильтоновы графы
Рассмотрим обходы вершин графа. В 1859 г. Сэр Вильям Гамильтон*
предложил математическую игру-головоломку, связанную с обходом вершин
додекаэдра (задача состояла в нахождении пути вдоль ребер додекаэдра, про*
Биографические сведения см. в прил. 2.
70
ходящего через каждую вершину по одному разу (рис. 74)), определив тем самым класс графов, носящих теперь его имя.
2
12
13
1
11
14
20
3
15
10
18
19
17
6
9
16
7
8
5
4
Рис. 74. Граф додекаэдра
Граф называется гамильтоновым, если он имеет простой цикл, проходящий через все вершины графа, т.е. цикл, в котором попарно различны все
вершины графа, кроме первой и последней. Сам такой цикл также называется
гамильтоновым.
Простые цепи, проходящие через все вершины графа, также называются
гамильтоновыми, если они включают в себя все попарно различные вершины
графа.
Примерами гамильтоновых графов могут служить графы, изображенные
на рис. 74 и рис. 75. На этих рисунках жирными линиями выделены гамильтоновы циклы.
υ1
υ6
υ8
υ2
υ3
υ1
υ7
υ2
υ5
υ3
υ4
υ5
υ4
Рис. 75. Гамильтоновы графы
71
Ответить на вопрос, является ли граф гамильтоновым, непросто, так как
необходимого и достаточного условия существования гамильтонова цикла (как
теорема 11.2 для эйлеровых графов) нет. Однако, имеются достаточные условия существования гамильтоновых циклов. Приведем некоторые из них, применимые к связным неорграфам без петель, имеющим n ≥ 3 вершин.
Теорема 11.3 (Оре*). Если в графе степени любых двух несмежных вершин υi и υ j удовлетворяют неравенству δ (υi ) + δ υ j ≥ n , то граф гамильто-
( )
нов.
Теорема 11.4 (Дирака*). Если степень любой вершины графа удовлетвоn
ряет неравенству δ (υi ) ≥ , то граф гамильтонов.
2
Для орграфов также имеется достаточное условие.
Теорема 11.5 (Гуйя-Ури). Если для любой вершины сильно связного
n
n
орграфа выполняется δ +(υi ) ≥
и δ −(υi ) ≥ , то он обладает гамильтоновым
2
2
циклом.
Орграф называется полугамильтоновым, если он содержит гамильтонову цепь.
Задача нахождения гамильтоновых циклов получила свое развитие в связи с рядом практических задач. Одной из них является так называемая задача о
коммивояжере, в которой определяется кратчайший гамильтонов цикл. Решение этой задачи будет описано в главе 13.
*
Биографические сведения см. в прил. 2.
72
12. Деревья
12.1. Основные определения
Граф T называется деревом, если он связный и не имеет циклов (рис. 76).
Лесом называется граф, связные компоненты которого являются деревьями (рис. 77).
υ6
υ1
υ2
υ3
υ6
υ1
υ2
υ5
υ7
υ4
υ3
υ9
υ10
υ8
υ5
υ4
υ11
Рис. 76. Дерево
Рис. 77. Лес
Дерево не может иметь петель и кратных ребер. Среди деревьев выделяют два частных случая:
● последовательное дерево, представляющее собой простую цепь
(рис. 78);
● звёздное дерево, являющееся «кустом», в котором одна из вершин
(центр) является смежной со всеми остальными (рис. 79).
υ1
υ2
υ1
υ4
υ3
υ6
υ5
υ2
υ7
υ6
υ7
Рис. 78. Последовательное дерево
υ5
υ3
υ4
Рис. 79. Звездное дерево (куст)
Пусть носитель графа V содержит n вершин. Если связать эти вершины
рёбрами так, чтобы отсутствовал цикл, то получится дерево. Для двух вершин
существует одно дерево: сами эти вершины и связывающее их ребро. С увеличением числа вершин n число различных деревьев Tn быстро увеличивается и
их количество можно найти, воспользовавшись теоремой Кэли.
Теорема 12.1 (Кэли). Число деревьев с n занумерованными вершинами
равно
Tn = n n − 2 .
(12.1)
73
Деревья считаются различными, если они не изоморфны (впрочем, как и
любые графы). Например, деревьев с 4 вершинами всего 16 , из них существенно различаются только 2 . Деревьев с 6 вершинами будет 1296 , и только 6 будут существенно различаться.
Следует отметить, что среди графов порядка n полный граф имеет максимальное количество рёбер, а дерево – минимальное количество рёбер, необходимых для того, чтобы граф был связным.
12.2. Свойства деревьев
Сформулируем свойства деревьев в виде теорем.
Теорема 12.2. Каждое дерево с n вершинами имеет ( n − 1) ребер.
Доказательство. Две любые вершины дерева связаны одним ребром. Для
связи существующей вершины с каждой из добавляемых вершин нужно ещё
одно ребро. Если добавить два ребра, т.е. соединить новую вершину с двумя
уже рассмотренными вершинами, то обязательно образуется цикл. Следовательно, для связи n вершин необходимо ( n − 1) ребро.
Теорема 12.3. Граф является деревом тогда и только тогда, когда каждая
пара различных вершин графа соединяется только одной простой цепью.
Теорема 12.4. У каждого дерева найдётся висячая вершина.
Теорема 12.5. При удалении любого ребра дерева (рис. 80,а) оно распадается на связные компоненты, которые являются деревьями, т.е. образуется лес
(рис. 80,б). При добавлении любого нового ребра образуется цикл и дерево перестаёт быть деревом (рис. 80,в).
Замечание 12.1. Из любого связного графа, не являющегося деревом,
можно удалить некоторые рёбра, не нарушая связности (например, ребро, входящее в цикл).
υ1
υ3
υ2
υ1
T
υ4
υ6
υ9
υ8
T1
υ5
υ7
υ10
υ11
υ3
υ2
υ4
υ6
T2
υ9
υ8
υ10
υ1
G
υ5
υ4
υ5
υ6
υ7
υ11
υ3
υ2
υ9
υ8
υ7
υ10
а)
б)
Рис. 80. Геометрическая иллюстрация теоремы 12.5:
а) дерево, б) лес, в) неорграф
74
υ11
в)
12.3. Типы вершин дерева и его центры
Рассмотрим дерево T с n вершинами. Назовём его концевые (висячие)
вершины вершинами типа 1. Если удалить все концевые вершины и рёбра дерева T , то получим связный граф без циклов T1 , т.е. получим опять дерево, но
уже с меньшим количеством вершин и рёбер. Концевые вершины дерева T1 называются вершинами типа 2 дерева T . Аналогично определяются вершины типа 3, типа 4 (рис. 81) и т.д. Ясно, что дерево может иметь одну или две вершины максимального типа.
1
1
2
2
1
1
1
3
3
4
4
T
1
Рис. 81. Типы вершин дерева
Пусть вершина типа K есть вершина максимального типа. Из определения типа вершин следует, что эксцентриситет вершины максимального типа
(если она одна) равен K − 1 , а эксцентриситет каждой из двух вершин максимального типа равен её типу, т.е. равен K . При этом эксцентриситет любой
вершины не максимального типа будет всегда больше ее типа и больше эксцентриситета вершины максимального типа.
Следовательно, центрами любого дерева являются его вершины максимального типа, и поэтому дерево может иметь или один, или два центра.
Кратчайшая диаметральная цепь дерева проходит через его центр или оба центра, если их два. В первом случае длина диаметральной цепи равна 2 K − 2 , а во
втором 2 K − 1.
Например, дерево на рис. 81 имеет два центра (вершины типа 4), а кратчайшая диаметральная цепь состоит из 2 K − 1 = 2 ⋅ 4 − 1 = 7 ребер.
12.4. Корневые деревья
Произвольно зафиксируем некоторую вершину υ0 дерева T и назовём её
корнем дерева. Тогда само дерево называется деревом с корнем или корневым
деревом.
Из статических соображений в дереве удобно выделить некоторую цепь,
75
выходящую из корня. Такую цепь называют стволом дерева. Как правило, корень дерева является концевой вершиной ствола.
Каждая концевая вершина связана с ближайшей вершиной в стволе единственной цепью, называемой ветвью дерева, исходящей из одной вершины и
заходящей в другую.
При отсутствии у дерева ствола ветвями дерева называются цепи, связывающие концевые вершины дерева с его корнем.
Висячие вершины в дереве называют листьями, а все остальные – внутренними вершинами.
Корневые деревья могут быть как неориентированными, так и ориентированными (от корня или к корню).
Ориентированное дерево называется прадеревом с корнем υ0 , если существует простой путь от этой вершины до любой другой вершины прадерева.
Ориентированное дерево можно получить из неориентированного дерева
(рис. 82) следующей процедурой его ориентации. Выберем произвольную вершину дерева – корень. Все рёбра, инцидентные корню дерева, считаем исходящими из корня и заходящими в соответствующие им инцидентные вершины.
Все рёбра, инцидентные вершинам, удалённым на расстояние 1 от корня, считаются исходящими из этих вершин и заходящими в смежные им вершины.
Процесс ориентации рёбер продолжают до тех пор, пока не будут ориентированы все рёбра дерева. Полученное таким образом корневое дерево называется
ориентированным деревом (рис. 83). Все рёбра в нем имеют направление от
корня. Очевидно, что прадерево может иметь только один корень.
Следует отметить, что для любой вершины ориентированного корневого
дерева, кроме корня, полустепень захода δ −(υi ) = 1 . Для корня полустепень захода δ −(υ0 ) = 0 , а для листьев полустепень исхода равна нулю.
υ0
Рис. 82. Неориентированное корневое дерево
76
υ0
Рис. 83. Ориентированное корневое дерево (прадерево)
Если поменять направления в ориентированном дереве на противоположные (к корню), то полученный таким образом орграф называется сетью сборки
(рис. 84). Вершина υ0 называется в этом случае стоком сборки.
υ0
Рис. 84. Сеть сборки
12.5. Покрывающие деревья
Пусть дерево T является подграфом графа G . Рёбра графа G , которые
принадлежат дереву T , называются ветвями дерева T , а не принадлежащие –
хордами относительно дерева T .
Если дерево T есть суграф графа G , т.е. вершины дерева T совпадают с
77
вершинами графа G , то говорят, что дерево T покрывает граф G . В этом случае дерево Т называют остовом (каркасом) или покрывающим деревом графа
G.
В дальнейшем нам потребуется понятие матрицы Кирхгофа. Матрицу
Кирхгофа K можно получить как разность диагональной матрицы F , диагональные элементы которой равны степеням вершин ( fii = δ (υi ) ), и матрицы
смежности B неорграфа G , т.е.
K = F − B.
(12.2)
Матрица Кирхгофа обладает свойством: сумма элементов в каждой
строке и каждом столбце равна нулю.
Количество остовов (каркасов) неорграфа G можно найти, воспользовавшись следующей теоремой.
Теорема 12.7 (Кирхгофа). Число остовов неорграфа равно алгебраическому дополнению любого элемента матрицы Кирхгофа.
Пример 12.1. Определить количество остовов мультиграфа, изображённого на рис. 85.
υ2
υ1
υ3
υ4
Рис. 85. Мультиграф
Решение. Матрица смежности B данного мультиграфа имеет вид
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B4×4 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
0
0
1
1
0
1
2
1⎞
1 ⎟⎟
.
2⎟
⎟
0⎠
Найдем степени вершин графа и составим диагональную матрицу F .
Так как δ (υ1 ) = 2 , δ (υ2 ) = 3 , δ (υ3 ) = 3 и δ (υ4 ) = 4 , то f11 = δ (υ1 ) = 2 ,
78
f 22 = δ (υ2 ) = 3 , f33 = δ (υ3 ) = 3 и f 44 = δ (υ4 ) = 4 . Следовательно,
υ1 υ2 υ3 υ4
υ1 ⎛ 2
υ2 ⎜⎜ 0
F4×4 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
0
0
3
0
0
3
0
0
0⎞
0 ⎟⎟
.
0⎟
⎟
4⎠
Таким образом, матрица Кирхгофа равна
⎛2
⎜0
K = F −B=⎜
⎜0
⎜
⎝0
0
0
3
0
0
3
0
0
0 ⎞ ⎛0
0 ⎟⎟ ⎜⎜ 1
−
0 ⎟ ⎜0
⎟ ⎜
4 ⎠ ⎝1
1
0
0
1
1
0
1
2
1⎞ ⎛2
1 ⎟⎟ ⎜⎜ −1
=
2⎟ ⎜0
⎟ ⎜
0 ⎠ ⎝ −1
−1
0
3
−1
−1
3
−1
−2
−1 ⎞
−1 ⎟⎟
.
−2 ⎟
⎟
4 ⎠
Следуя теореме 12.7, определим количество остовов мультиграфа, изображённого на рис. 85. Вычислим алгебраическое дополнение любого элемента
матрицы Кирхгофа, например для элемента k44 :
A44 = ( −1)
4+ 4
2
−1
0
⋅ −1
3
−1 = 2 ⋅
0
−1
3
3
−1
−1
3
− ( −1) ⋅
−1 −1
0
3
= 2 ⋅ 8 + ( −3) = 13.
Следовательно, у данного мультиграфа имеется 13 различных остовов.
Количество остовов можно определить и для орграфа. Остовом орграфа
можно считать остов его основания.
Рассмотрим две матрицы, которые получаются аналогично матрице
Кирхгофа.
Пусть G – орграф с матрицей смежности В. Тогда матрицы K + и K − определим как
K += F +− B ,
(12.3)
K −= F −− B ,
(12.4)
где F + и F − – диагональные матрицы, у которых диагональные элементы равны полустепеням исхода ( fii+ = δ + (υi ) ) и полустепеням захода ( fii− = δ −(υi ) )
вершин соответственно.
79
Теорема 12.8. Число остовов орграфа, входящих в вершину υi , равно ал-
гебраическому дополнению любого элемента i-й строки матрицы K + . Число
остовов орграфа, выходящих из вершины υi , равно алгебраическому дополне-
нию любого элемента i-го столбца матрицы K − .
Пример 12.2. Определить количество остовов орграфа, изображённого
на рис. 86, входящих в вершину υ1 и выходящих из нее.
υ2
υ1
υ3
υ4
υ5
Рис. 86. Орграф
Решение. Матрица смежности B орграфа имеет вид
υ1 ⎛
υ2 ⎜⎜
B5×5 = υ3 ⎜
⎜
υ4 ⎜
υ5 ⎜⎝
υ1 υ2
υ3
υ 4 υ5
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
0
1
0
0
0
1⎞
0 ⎟⎟
0 ⎟.
⎟
1⎟
0 ⎟⎠
Найдем полустепени исхода и полустепени захода вершин орграфа и составим диагональные матрицы F + , F − и матрицы K + и K − .
Так как δ +(υ1 ) = 2 , δ +(υ2 ) = 2 , δ +(υ3 ) = 1 , δ +(υ4 ) = 2 и δ +(υ5 ) = 1, то
υ1 υ2
υ1 ⎛
υ2 ⎜⎜
F + = υ3 ⎜
⎜
υ4 ⎜
υ5 ⎜⎝
υ3
υ4 υ5
2
0
0
0
0
2
0
0
0
0
1
0
0
0
0
2
0
0
0
0
80
0⎞
0 ⎟⎟
0 ⎟.
⎟
0⎟
1 ⎟⎠
Следовательно, матрица K + имеет вид
⎛
⎜
⎜
K += F +− B = ⎜
⎜
⎜
⎜
⎝
2
0
0
0
0
2
0
0
0
0
1
0
0
0
0
2
0
0
0
0
⎛
⎜
⎜
=⎜
⎜
⎜
⎜
⎝
0⎞ ⎛
0 ⎟⎟ ⎜⎜
0⎟ − ⎜
⎟ ⎜
0⎟ ⎜
1 ⎟⎠ ⎜⎝
2
−1
0
0
0
2
−1
−1
0
0
1
−1
0
−1
0
2
−1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
0
1
0
0
0
1⎞
0 ⎟⎟
0⎟ =
⎟
1⎟
0 ⎟⎠
−1⎞
0 ⎟⎟
0 ⎟.
⎟
−1⎟
1 ⎟⎠
Аналогично находим δ −(υ1 ) = 1 , δ −(υ2 ) = 2 , δ −(υ3 ) = 1 , δ −(υ4 ) = 2
и δ −(υ5 ) = 2 :
υ1 υ2
υ3
υ 4 υ5
1
0
0
0
0
2
0
0
0
0
1
0
0
0
0
2
0
0
0
0
υ1 ⎛
υ2 ⎜⎜
F − = υ3 ⎜
⎜
υ4 ⎜
υ5 ⎜⎝
0⎞
0 ⎟⎟
0 ⎟.
⎟
0⎟
2 ⎟⎠
Таким образом, матрица K − имеет вид
⎛
⎜
⎜
K −= F −− B = ⎜
⎜
⎜
⎜
⎝
1
0
0
0
0
2
0
0
0
0
1
0
0
0
0
2
0
0
0
0
⎛
⎜
⎜
=⎜
⎜
⎜
⎜
⎝
0⎞ ⎛
0 ⎟⎟ ⎜⎜
0⎟ − ⎜
⎟ ⎜
0⎟ ⎜
2 ⎟⎠ ⎜⎝
1
−1
0
0
0
2
−1
−1
0
0
1
−1
0
−1
0
2
−1
0
0
0
81
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
0
1
0
0
0
−1 ⎞
0 ⎟⎟
0 ⎟.
⎟
−1 ⎟
2 ⎟⎠
1⎞
0 ⎟⎟
0⎟ =
⎟
1⎟
0 ⎟⎠
Согласно теореме 12.8 определяем число остовов орграфа, входящих в
вершину υ1 . Для этого вычислим алгебраическое дополнение любого элемента
+
:
первой строки матрицы K + , например элемента k11
+
K11
1+1
= ( −1)
⋅
2
−1 −1
0
0
1
−1
0
−1
0
2
−1
0
0
0
1
−1 −1
2
= 1⋅ 0
−1
1
−1 = 2 ⋅
0
2
1 −1
0
2
− 1⋅
−1 −1
1
−1
= 2.
Для того чтобы найти число остовов орграфа, выходящих из вершины υ1 ,
вычислим алгебраическое дополнение любого элемента первого столбца мат−
рицы K − , например элемента k11
:
1+1
−
= ( −1)
K11
⋅
2
−1 −1
0
0
1
−1
0
−1
0
2
−1
0
0
0
2
−1 −1
2
= 2⋅ 0
1
−1
0
⎛ 1 −1
−1 −1 ⎞
−1 = 2 ⎜ 2 ⋅
− 1⋅
⎟ = 4.
0 2
1 −1 ⎠
⎝
2
Следовательно, у данного орграфа имеется четыре остова (каркаса), выходящих из вершины υ1 , и два остова (каркаса), входящих в эту вершину.
Теоремы 12.7 (Кирхгофа) и 12.8 не дают ответа на вопрос о том, сколько
ребер нужно удалить из графа, чтобы получит его остов. Ответ на этот вопрос
дает теорема, которая вытекает из определения дерева.
Теорема 12.9. Число ребер произвольного неорграфа G, которые необходимо удалить для получения остова, не зависит от последовательности их удаления и равно m − n + p , где m – число ребер, n – число вершин, p – число
компонент связности графа G.
Число γ ( G ) = m − n + p называется цикломатическим числом графа G.
Следовательно, при любом выборе остова число хорд равно цикломатическому
числу γ ( G ) . Например, у псевдографа, изображённого на рис. 87, цикломатическое число равно γ ( G ) = m − n + p = 9 − 7 + 2 = 4 (при вычислении цикломатического числа петля считается однократным звеном). Заметим, что под остовом несвязного графа понимается лес.
82
υ2
υ7
υ4
υ1
υ6
υ3
υ5
Рис. 87. Несвязный псевдограф
Для мультиграфа, изображённого на рис. 85, цикломатическое число равно γ ( G ) = m − n + p = 6 − 4 + 1 = 3 . Один из возможных его остовов представлен
на рис. 88.
υ2
υ1
υ3
υ4
Рис. 88. Один из остовов мультиграфа
Для орграфа, изображённого на рис. 86, цикломатическое число равно
γ ( G ) = m − n + p = 8 − 5 + 1 = 4 . Два остова, входящих в вершину υ1 , представлены на рис. 89, а все четыре остова, выходящих из этой вершины, изображены на
рис. 90.
υ1
υ5
υ2
υ4
υ1
υ3
υ5
υ2
υ3
υ4
Рис. 89. Остовы, входящие в вершину υ1
83
υ1
υ2
υ1
υ2
υ3
υ5
υ1
υ5
υ3
υ4
υ5
υ2
υ4
υ1
υ3
υ5
υ4
υ2
υ4
υ3
Рис. 90. Остовы, выходящие из вершины υ1
Теорема 12.9 имеет следующие два следствия.
Следствие 12.1. Неорграф G является деревом или лесом тогда и только
тогда, когда γ ( G ) = 0 .
Следствие 12.2. Неорграф G имеет единственный цикл тогда и только тогда, когда γ ( G ) = 1 .
84
13. Экстремальные задачи на графах
13.1. Задача об остове наименьшего веса
Существует ряд практических задач, в которых ищется наиболее экономичный способ взаимосвязи n пунктов. Например, необходимо построить автомобильные дороги, связывающие n дачных посёлков так, чтобы их суммарная длина была минимальной. Любые два посёлка должны быть связаны дорогой либо непосредственно либо дорогами, проходящими через другие посёлки.
Аналогичная задача возникает при прокладке водопроводов, газопроводов, линий связи и т.п.
Математически такого рода задачи формулируются следующим образом.
Каждому ребру ui графа с n вершинами ставится в соответствие число wi
(вес), численно выражающее, например, расстояние между объектами. Эта величина ( wi ) характеризует взаимосвязь между двумя вершинами графа. Найдём
n −1
такой остов, чтобы сумма весов всех ветвей остова w = ∑ wi была минимальi =1
ной (максимальной) в зависимости от того, как ставится задача. Такой остов
графа называется его экстремальным деревом.
Известно, что количество различных остовов графа с n вершинами равняется n n − 2 . Решение задачи полным перебором вариантов потребовало бы чрезвычайно больших вычислений. Для решения задач подобного рода были разработаны эффективные алгоритмы – Краскала* и ближайшего соседа (алгоритм
Прима*).
Алгоритм Краскала
1. Выбираем первую ветвь искомого остова – ребро с минимальным
(максимальным) весом и присоединяем его к пустому графу.
2. Рассматриваем следующее минимальное (максимальное) по весу ребро. Если оно не образует цикла с ранее выбранными ветвями, то его вводят в
остов.
3. Второй пункт повторяем до тех пор, пока не отберем ( n − 1) ребро.
Алгоритм Краскала позволяет построить экстремальный граф любого
связного графа.
*
Биографические сведения см. в прил. 2.
85
Пример 13.1. Построить автомобильные дороги, связывающие семь посёлков таким образом, чтобы их суммарная длина была минимальной. Любые
два посёлка должны быть связаны дорогой либо непосредственно либо дорогой, проходящей через другие посёлки.
Решение. Если поселки обозначить точками, а все возможные автомобильные дороги, соединяющие эти поселки, линиями с указанием их длины в
километрах, то получим взвешенный граф (рис. 91).
υ2
υ1
14
20
13
υ6
22
19
27
υ7
16
24
17
υ5
υ3
25
υ4
Рис. 91. Взвешенный граф
Данная задача сводится к нахождению остова минимального веса. Так как
исходный взвешенный граф состоит из семи вершин, то искомый остов будет
включать шесть ребер. Построим пустой граф на множестве вершин исходного
графа и присоединим к нему ребро минимального веса – 13 (рис. 92,а).
Далее выбираем следующее ребро наименьшего веса – 14 (рис. 92,б). На
третьем, четвертом и пятом шагах соответственно выбираем ребра с весами 16
(рис. 92,в), 17 (рис. 92,г) и 19 (рис. 92,д). Следующим ребром минимального веса из оставшихся является ребро с весом 20, но это ребро в остов включать
нельзя, так как оно образует цикл с ребрами весом 13 и 14. Следовательно, в
остов нужно включить ребро с весом 22 (рис. 92,е). На этом построение остова
заканчиваем, так как уже отобрано шесть ребер.
Таким образом, минимальная длина дорог, связывающих посёлки, равна
13 + 14 + 16 + 17 + 19 + 22 = 101 км.
Замечание 13.1. Экстремальное дерево может быть построено для произвольного графа, не обязательно полного, так как связи между некоторыми
вершинами могут быть нежелательными или недопустимыми.
86
υ2
υ1
υ2
υ1
14
υ6
13
υ7
13
υ6
υ3
υ4
υ5
б)
υ2
13
υ2
υ1
14
υ6
υ4
υ5
а)
υ1
υ3
υ7
14
υ7
16
13
υ6
υ3
υ7
υ3
16
17
υ4
υ5
в)
г)
υ2
υ1
14
υ6
13
16
14
13
υ6
υ3
22
17
υ4
υ5
υ2
υ1
19
υ7
υ4
υ5
19
υ7
16
17
υ4
υ5
д)
υ3
е)
Рис. 92. Алгоритм Краскала: а) первый шаг, б) второй шаг, в) третий шаг,
г) четвертый шаг, д) пятый шаг, е) шестой шаг
87
Алгоритм ближайшего соседа
Алгоритм Краскала требует для построения остова предварительной сортировки рёбер графа по весам на каждом шаге, что весьма затруднительно для
графов с большим числом рёбер. Несколько проще алгоритм ближайшего соседа
(алгоритм Прима).
1. Отмечаем произвольно выбранную вершину графа, с которой начинается построение. Строим ребро с наименьшим (наибольшим) весом, инцидентное этой вершине.
2. Ищем ребро минимального (максимального) веса, инцидентное одной
из двух уже полученных вершин. В область поиска не входят уже построенные
рёбра.
3. Продолжаем далее разыскивать каждый раз ребро с минимальным
(максимальным) весом, инцидентное построенным вершинам, не включая в
круг поиска все рёбра, их соединяющие.
4. Третий пункт повторяем до тех пор, пока не отберем ( n − 1) ребро.
Пример 13.2. Решить задачу, рассмотренную в примере 13.1, с помощью
алгоритма ближайшего соседа.
Решение. Выберем в качестве начальной вершины, например, вершину
υ2 (см. рис. 91). Тогда инцидентным ей ребром минимального веса является
ребро с весом 19 (рис. 93,а).
Теперь выбираем ребро минимального веса, инцидентное вершинам υ2 и
υ3 . Этим ребром служит ребро с весом 16 (рис. 93,б). На третьем, четвертом и
пятом шагах соответственно выбираем ребра с весами 13 (рис.93,в), 14
(рис. 93,г) и 17 (рис. 93,д). И, наконец, включаем в остов ребро с весом 22
(рис. 93,е).
Ребро с весом 20 в остов мы не включаем по тем же соображениям, что
при использовании алгоритма Краскала (оно образует цикл с ребрами весом 13
и 14).
Следует отметить, что если в качестве начальной вершины выбрать вершину υ6 , то последовательность шагов, выполняемых по алгоритму ближайшего соседа, совпадет с алгоритмом Краскала.
88
υ2
υ1
υ2
υ1
19
υ6
19
υ6
υ3
υ7
υ7
υ4
υ5
13
υ7
14
13
υ6
υ3
16
υ4
υ5
13
υ2
16
υ4
υ2
14
13
υ6
υ3
22
17
υ4
υ5
υ3
16
υ1
19
υ7
υ7
г)
14
υ6
19
υ5
в)
υ1
υ2
υ1
19
υ6
υ4
б)
υ2
υ1
16
υ5
а)
υ3
19
υ7
16
17
υ4
υ5
д)
е)
Рис. 93. Алгоритм ближайшего соседа: а) первый шаг, б) второй шаг,
в) третий шаг, г) четвертый шаг, д) пятый шаг, е) шестой шаг
89
υ3
13.2. Задача о коммивояжере
Задача берет свое начало из работ Гамильтона и заключается в том, что
коммивояжёр (бродячий торговец) должен посетить некоторое количество городов, расстояния между которыми известны. Требуется найти маршрут, проходящий через все пункты по одному разу и возвращающийся в исходный город. Если таких маршрутов много, требуется найти кратчайший из них.
Математическая постановка задачи выглядит так: найти гамильтонов
цикл минимального веса.
Отметим некоторые практические задачи, сводящиеся к задаче коммивояжера.
1. Пусть граф задает сеть коммуникаций между фиксированными центрами. Необходимо построить маршрут, обеспечивающий посещение всех центров ровно по одному разу.
2. Имеется станок с числовым программным управлением, который высверливает отверстия в печатных платах по заданной программе. Составляем
граф, в котором вершины соответствуют требуемым отверстиям, и ищем обход
вершин с затраченным на него минимальным временем.
Задача коммивояжера относится к такому классу задач, для которых пока
не найдено быстрых алгоритмов решения, но проверка того, является ли данное
решение правильным, проходит быстро. Существует несколько способов решения задачи коммивояжёра: алгоритм ближайшего соседа, алгоритм ближайшей
вставки, алгоритм отжига, муравьиный алгоритм и некоторые другие. Как правило, во всех этих алгоритмах находится не самый эффективный маршрут, а
приближённое решение, которое впоследствии улучшается.
Пример 13.3. Дан взвешенный орграф (рис. 94). Найти кратчайший гамильтонов цикл.
Решение. Применим алгоритм ближайшего соседа. Хоть он и не гарантирует оптимального решения (как и другие алгоритмы), но является одним из
наиболее простых алгоритмов. Решение будет зависеть от выбора начальной
вершины и от выбора направления движения при наличии нескольких направлений одинакового веса.
Начнем движение по графу из произвольной вершины, например из вершины υ1 . Из двух возможных дуг υ1 × υ5 и υ1 × υ2 предпочтение отдаем короткой дуге υ1 × υ5 длины 1. Далее из вершины υ5 двигаемся без ветвления до
вершины υ3 , т.е. проходим простой путь υ1 − υ5 − υ4 − υ3 . После этого из υ3 направляемся по более короткой дороге в вершину υ6 , затем в υ2 и возвращаемся
в υ1 , тем самым получаем гамильтонов цикл υ1 − υ5 − υ4 − υ3 − υ6 − υ2 − υ1
(рис. 95).
90
υ1
3
3
3
υ2
1
3
3
3
8
υ6
3
4
υ5
3
1
3
5
1
υ3
8
1
υ4
Рис. 94. Взвешенный орграф
υ1
3
1
υ2
3
υ5
υ6
1
3
υ3
8
υ4
Рис. 95. Гамильтонов цикл после первой итерации
Суммарная длина цикла равна 1 + 3 + 8 + 1 + 3 + 3 = 19 .
91
Проверим другую вершину в качестве начальной. Например, начнем
движение из вершины υ4 в сторону вершины υ5 , т.е. по наиболее короткой дуге. Далее движемся до вершины υ2 без ветвления, получая при этом простой
путь υ4 − υ5 − υ1 − υ2 . Затем из υ2 направляемся по дуге υ2 × υ6 (ее вес меньше,
чем у дуги υ2 × υ3 ) и из вершины υ6 движемся в υ3 и возвращаемся в υ4 . При
этом получаем гамильтонов цикл: υ4 − υ5 − υ1 − υ2 − υ6 − υ3 − υ4 (рис. 96). Его
суммарная длина равна 1 + 3 + 3 + 3 + 3 + 1 = 14 . Этот цикл наименьший по весу
(предоставляем читателю проверить это самостоятельно), и его можно принять
за окончательный ответ.
υ1
3
3
υ2
3
υ5
υ6
3
1
υ3
1
υ4
Рис. 96. Кратчайший гамильтонов цикл
92
14. Элементы сетевого планирования
Сетевое планирование применяют для организации и составления календарных планов реализации больших комплексов. Это, например, научноисследовательские работы с участием нескольких институтов, разработка автоматизированной системы бухгалтерского учета, строительство большого объекта и т.д. Управление всеми этими работами можно осуществлять с помощью их
графических моделей – сетевых графиков.
С математической точки зрения сетевой график – это связный орграф
без петель и контуров.
Основными понятиями сетевого планирования являются понятия работы
и события.
Работа – это любые действия, сопровождающиеся затратами ресурсов и
(или) времени и приводящие к определенным результатам.
Событие – результат завершения одной или нескольких работ – является
предпосылкой для выполнения работ, следующих за ним.
Использование сетевого графика позволяет сравнительно просто выяснить, когда необходимо начинать и заканчивать выполнение отдельных работ,
как задержка хода выполнения некоторой работы влияет на время завершения
всего проекта.
Для использования сетевого графика нужно, прежде всего, разбить крупный проект на отдельные работы и составить их перечень. Некоторые из работ
могут выполняться одновременно, другие – только в определенном порядке.
Например, при строительстве многоэтажного дома возведение крыши не может
начаться, пока не возведены стены всех этажей, а отделочные работы на первом
этаже могут происходить параллельно с возведением крыши. Необходимо выяснить очередность выполнения всех работ списка. Для этого составляют список работ, непосредственно предшествующих каждой работе. После этого нужно запланировать время, необходимое для выполнения каждой работы. Полученные данные обычно помещаются в таблицу. Например, в табл. 7 приведены
данные для проекта, состоящего из восьми работ. Для каждой из них задана
продолжительность и указаны непосредственно предшествующие ей работы.
Любая работа в сети может быть определена двумя событиями, между которыми она находится. Событием может начинаться или заканчиваться несколько работ. Работы на сети изображают дугами, а события – вершинами сети.
Сетевой график обладает рядом особенностей, в частности, он имеет
только одно исходное событие (исток сети) и только одно завершающее событие – окончание всех работ.
93
Исходная работа
a1
a2
a3
a4
a5
a6
a7
a8
Предшествующие ей работы
—
—
—
a2
a1 , a4
a2
a3
a5 , a6 , a7
Таблица 7
Продолжительность работ
3
6
4
5
1
9
6
8
Пример 14.1. Построить сетевой график последовательности работ, приведенной в табл. 7.
Решение. Работы a1 , a2 и a3 не имеют предшествующих, поэтому реализация проекта начинается с этих работ; они изображаются дугами, выходящими
из одной вершины. В конце дуг a1 , a2 и a3 также ставим вершины, соответствующие окончаниям этих работ (рис. 97,а). Нумерацию вершин проведем после
того, как изобразим всю последовательность работ. Работе a4 предшествует
работа a2 , поэтому дуга a4 на сетевом графике изображается вслед за дугой
a2 . В конце работы a4 ставим вершину графа (рис. 97,б). Работе a5 предшествуют две работы a1 и a4 , но дугу a5 одновременно провести из концов дуг a1 и
a4 нельзя. Следовательно, вершины, являющиеся завершением работ a1 и a4 ,
можно объединить в одну и из нее провести дугу a5 , в конце которой ставим
вершину (рис. 97,в). Работам a6 и a7 предшествует только по одной работе –
a2 и a3 соответственно. Поэтому дуги a6 и a7 на сетевом графике изображаются вслед за дугами a2 и a3 соответственно. В конце работ a6 и a7 ставим
вершины графа (рис. 97,г). Итоговой работе a8 предшествуют работы a5 , a6 и
a7 . Таким образом, вершины, являющиеся завершением работ a5 , a6 и a7 ,
объединяем в одну и из нее проводим дугу a8 , в конце которой ставим новую
вершину (рис. 97,д). Сетевой график построен.
После построение сетевого графика нумеруют его вершины.
Нумерацию, при которой номер начала любой дуги меньше ее конца, называют правильной.
94
a1
a1
a4
a2
a2
a3
a3
а)
a1
a4
б)
a5
a1
a2
a5
a4
a2
a3
a6
a3
a7
в)
a1
г)
a4
a5
a2
a3
a6
a8
a7
д)
Рис. 97. Построение сетевого графика:
а) первый шаг, б) второй шаг, в) третий шаг, г) четвертый шаг, д) пятый шаг
95
Алгоритм получения правильной нумерации вершин
1. Нумеруют все начальные вершины, т.е. вершины, в которые не входит
ни одна дуга.
2. Вычеркивают все дуги, выходящие из начальных вершин. При этом
получают новые начальные вершины. Переходят к шагу 1.
Процесс повторяют до тех пор, пока все вершины не будут перенумерованы. Конечная вершина получает при этом наибольший номер.
Пример 14.2. Получить правильную нумерацию вершин сетевого графика, изображенного на рис. 97,д.
Решение. На сетевом графике (см. рис. 97,д) только одна вершина является начальной – вершина, являющаяся началом работ a1 , a2 и a3 . Ей присваиваем номер 1 и вычеркиваем дуги a1 , a2 и a3 (рис. 98,а). После этого имеем две
начальные вершины. Присваиваем им номера 2 и 3 и вычеркиваем дуги, выходящие из них: a7 , a6 и a4 (рис. 98,б). Далее получаем одну начальную вершину. Присваиваем ей номер 4 и вычеркиваем дугу a5 (рис. 98,в). Следующей начальной вершине присваиваем номер 5. После вычеркивания дуги a8 остается
только одна вершина. Ей присваиваем номер 6. Эта вершина и является конечной (рис. 98,г). В итоге получаем сетевой график (рис. 99), на котором вместо
обозначения работ поставлена их продолжительность, выраженная в днях.
Замечание 14.1. На рисунках сети не рекомендуется во избежание путаницы изображать одновременно выполняемые работы параллельными дугами.
Однако можно вводить дополнительные события и фиктивные работы (нулевой продолжительности), которые изображаются штриховыми линиями. Например, если бы в примере 14.1 работе a4 предшествовала бы еще работа a3 , то
между событиями 2 и 3 пришлось бы ввести штриховую дугу (рис. 100).
Имея сеть работ некоторого проекта, мы можем посчитать время выполнения всего проекта и различных его частей, состоящих из разного набора работ. Для этого введем еще несколько определений. Сначала определим минимальное время, за которое можно выполнить все работы комплекса. Для этого
найдем продолжительность всех полных путей.
Полным путем называется путь, начало которого совпадает с исходным
событием сети, а конец – с завершающим.
В нашем случае (см. рис. 99) таких путей четыре: L 1 : 1 – 2 – 5 – 6;
L 2 : 1 – 3 – 5 – 6; L 3 : 1 – 3 – 4 – 5 – 6 и L 4 : 1 – 4 – 5 – 6.
Их продолжительности равны
t ( L 1 ) = 4 + 6 + 8 = 18 , t ( L 2 ) = 6 + 9 + 8 = 23 ,
t ( L 3 ) = 6 + 5 + 1 + 8 = 20 , t ( L 4 ) = 3 + 1 + 8 = 12 .
96
a1
a5
a4
a2
1
a6
a8
a7
a3
а)
a5
a4
a6
a8
3
a7
2
б)
4
a5
a8
a8
5
6
г)
в)
Рис. 98. Нумерация вершин сетевого графика:
а) первый шаг, б) второй шаг, в) третий шаг, г) четвертый шаг
97
4
1
3
5
6
1
3
5
9
6
8
6
4
2
Рис. 99. Сетевой график
4
a1
a5
a4
a2
1
a6
3
5
a8
6
a7
a3
2
Рис. 100. Сетевой график с фиктивной работой
Наиболее продолжителен второй путь, который называют критическим.
Он определяет минимальное время выполнения всех работ комплекса. Минимальное время называют критическим сроком и обозначают tкр . Итак, в рассматриваемом примере (см. рис. 99) tкр = 23 . Все работы и события, лежащие
на критическом пути, называют критическими, все остальные работы и события – некритическими. Задержка любой критической работы вызывает задержку выполнения всего комплекса. Следовательно, чтобы уменьшить время
выполнения комплекса работ, надо сократить сроки критических работ. Некритические работы допускают некоторое запаздывание их выполнения без нарушения критического срока. Это запаздывание измеряется резервом времени со98
бытий и работ.
Свершением события называется момент, к которому заканчиваются все
входящие в него работы и может быть начата любая выходящая работа. Некоторые события можно совершать в разные моменты, т.е. варьировать свершение этих событий. Например, событие 2 (см. рис. 99) может свершиться через
четыре дня (по окончании работы a3 ), но может наступить и позже на срок до
пяти дней, поскольку на пути L 1 , где лежит это событие, есть резерв времени:
tкр − t ( L 1 ) = 23 − 18 = 5 дней. Поэтому для событий различают ранний и поздний
сроки свершения.
Ранним сроком tp ( j ) свершения события j называется самый ранний
момент времени, к которому завершатся все работы, предшествующие этому
событию. Ранние сроки для всех событий могут быть рассчитаны по формуле
tp ( j ) = max
(i , j )∈U +j
{tp ( i ) + t ( i, j )} ,
(14.1)
где U +j – множество работ, входящих в j-е событие; tp ( i ) – ранний срок свер-
шения начального события работы ( i, j ) ; t ( i, j ) – продолжительность работы
( i, j ) .
Поздним сроком tп ( i ) свершения события i называется самый поздний
момент времени, после которого остается ровно столько времени, сколько необходимо для завершения всех работ, следующих за этим событием.
В нашем случае tп ( 6 ) = 23 . Чтобы не нарушался критический срок, событие 5 должно произойти, в крайнем случае, на восемь дней раньше, поэтому
tп ( 5 ) = 23 − 8 = 15 . Аналогично tп ( 2 ) = 15 − 6 = 9 . Таким образом, поздние сроки
событий рассчитываются по формуле
tп ( i ) = min
(i , j )∈U i−
{tп ( j ) − t ( i, j )} ,
(14.2)
где U i− – множество работ, выходящих из i-го событие; tп ( j ) – поздний срок
свершения конечного события работы ( i, j ) .
Разности между поздним и ранним сроками свершения события i составляет резерв времени R ( i ) этого события:
R ( i ) = tп ( i ) − t p ( i ) .
(14.3)
Резерв времени события показывает, на какой предельно допустимый
99
срок может задержаться свершение события i без изменения срока наступления
итогового события. У критических событий ранние и поздние сроки совершения совпадают, ибо резерв времени у них равен нулю.
Зная сроки свершения событий, можно найти ранние и поздние сроки
начала и окончания работы ( i, j ) . Очевидно, что
⎧⎪tр.н. ( i, j ) = tp ( i ) , tр.o. ( i, j ) = tp ( i ) + t ( i, j ) ,
⎨
⎪⎩tп.о. ( i, j ) = tп ( j ) , tп.н. ( i, j ) = tп ( j ) − t ( i, j ) .
(14.4)
Для работ определяют два резерва времени: полный и свободный.
Полный резерв времени работы – это максимальное количество времени, на которое можно задержать начало работы или увеличить ее продолжительность, не нарушая критический срок,
R п ( i , j ) = tп ( j ) − t p ( i ) − t ( i , j ) .
(14.5)
Формулу (14.5) можно проиллюстрировать на рис. 101.
R п( i , j )
tp ( j )
tп ( i )
tp ( i )
tп ( j )
t ( i, j )
Рис. 101. Графическое объяснение формулы (14.5)
Отдельные работы, помимо полного резерва, имеют свободный резерв
времени, составляющий часть полного резерва, остающуюся после исключения резерва времени R ( j ) конечного события j данной работы:
R c( i , j ) = t р ( j ) − t р ( i ) − t ( i , j ) .
100
(14.6)
Свободный резерв времени – это запас времени, на который можно отсрочить начало работы или увеличить ее продолжительность при условии, что
она начнется в свой ранний срок и при этом ранние сроки начала последующих
работ не изменятся.
Понятно, что все резервы критических работ равны нулю.
Все расчеты резервов времени для событий и работ проводят в четыре
этапа:
1) вычисляют tp ( i ) ;
2) находят tп ( i ) ;
3) определяют R ( i ) ;
4) находят критический путь и резервы времени работ.
Пример 14.3. Рассчитать все резервы времени для событий и работ сетевого графика, изображенного на рис. 99.
Решение.
Этап 1
При вычислении tp ( i ) перемещаются по сети от исходного события 1
к завершающему событию 6 в порядке возрастания номеров.
Для исходного события tp (1) = 0 . Для остальных событий применяем
формулу (14.1):
tp ( 2 ) = max tp (1) + t (1,2 ) = max {0 + 4} = 4 ,
(1,2)
{
}
{
}
(1,2)
tp ( 3) = max tp (1) + t (1,3) = max {0 + 6} = 6 ,
(1,3)
{(
)}
)(
(1,2)
tp ( 4 ) = max tp (1) + t (1,4 ) , tp ( 3) + t ( 3,4 ) = max {( 0 + 3) , ( 6 + 5)} = max {3, 11} = 11,
(1,4),
(3,4)
{(
(1,4),
(3,4)
)(
(1,4),
(3,4)
)(
)}
tp ( 5) = max tp ( 2 ) + t ( 2,5) , tp ( 3) + t ( 3,5) , tp ( 4 ) + t ( 4,5) =
(2,5),
(3,5),
(4,5)
= max {( 4 + 6 ) , ( 6 + 9 ) , (11 + 1)} = max {10, 15, 12} = 15 ,
(2,5),
(3,5),
(4,5)
(2,5),
(3,5),
(4,5)
101
{
}
tp ( 6 ) = max tp ( 5 ) + t ( 5,6 ) = max {15 + 8} = 23 .
(5,6)
(5,6)
Следовательно, критический срок tкр = tp ( 6 ) = 23 .
Этап 2
При вычислении поздних сроков свершения событий tп ( i ) перемещаются
по сети от завершающего события 6 к исходному событию 1 в порядке убывания номеров.
Так как tп ( 6 ) = tp ( 6 ) = 23 , то исходное значение tп ( i ) известно.
Далее используем формулу (14.2):
tп ( 5 ) = min {tп ( 6 ) − t ( 5,6 )} = min {23 − 8} = 15 ,
(5,6)
(5,6)
tп ( 4 ) = min {tп ( 5 ) − t ( 4,5 )} = min {15 − 1} = 14 ,
(4,5)
{
(4,5)
}
tп ( 3) = min ( tп ( 5) − t ( 3,5) ) , ( tп ( 4 ) − t ( 3,4 ) ) = min {(15 − 9 ) , (14 − 5)} = min {6,9} = 6 ,
(3,4),
(3,5)
(3,4),
(3,5)
(3,4),
(3,5)
tп ( 2 ) = min {tп ( 5 ) − t ( 2,5 )} = min {15 − 6} = 9 ,
(2,5)
(2,5)
{
}
tп (1) = min ( tп ( 2 ) − t (1,2 ) ) , ( tп ( 3) − t (1,3) ) , ( tп ( 4 ) − t (1,4 ) ) =
(1,2),
(1,3),
(1,4)
= min {( 9 − 4 ) , ( 6 − 6 ) , (14 − 3)} = min {5,0,11} = 0 .
(1,2),
(1,3),
(1,4)
(1,2),
(1,3),
(1,4)
Этап 3
Для вычисления резервов времени событий R ( i ) пользуются формулой
(14.3):
R (1) = tп (1) − tp (1) = 0 − 0 = 0 , R ( 2 ) = tп ( 2 ) − tp ( 2 ) = 9 − 4 = 5 ,
102
R ( 3) = tп ( 3) − tp ( 3) = 6 − 6 = 0 , R ( 4 ) = tп ( 4 ) − tp ( 4 ) = 14 − 11 = 3 ,
R ( 5 ) = tп ( 5 ) − tp ( 5 ) = 15 − 15 = 0 , R ( 6 ) = tп ( 6 ) − tp ( 6 ) = 23 − 23 = 0 .
Часто на сетевом графике вершины графа заменяются кружками, разделенными на четыре сектора. В верхнем секторе записывается номер вершины, в
нижнем – резерв времени этого события R ( i ) , в левом – ранний срок свершения события tp ( i ) , в правом – поздний срок свершения события tп ( i )
(рис. 102).
i
t p ( i ) tп ( i )
R( i )
Рис. 102. Представление вершины графа на сетевом графике
Этап 4
У критических событий резерв времени R ( i ) равен нулю. В нашем примере критическими являются события 1, 3, 5 и 6. Они и определяют критические работы и критический путь 1–3–5–6 (рис. 103), который выделен жирными
дугами.
4
11 14
3
0
1
0
6
0
1
5
3
6
3
0
9
6
5
15 15
0
6
4
4
2
5
9
Рис. 103. Сетевой график
103
8
6
23 23
0
Вычислим по очереди для каждой работы сети ранние и поздние сроки
начала и окончания и резервы времени по формулам (14.4), (14.5) и (14.6).
Для работы (1,2 ) имеем
tп.о. (1,2 ) = tп ( 2 ) = 9 ,
tр.н. (1,2 ) = tp (1) = 0 ,
tр.o. (1,2 ) = tp (1) + t (1,2 ) = 0 + 4 = 4 ,
tп.н. (1,2 ) = tп ( 2 ) − t (1,2 ) = 9 − 4 = 5 ,
R п(1,2 ) = tп ( 2 ) − tp (1) − t (1, 2 ) = 9 − 0 − 4 = 5 ,
R c(1,2 ) = tр ( 2 ) − tр (1) − t (1,2 ) = 4 − 0 − 4 = 0 .
Для работы (1,3) получим
tп.о. (1,3) = tп ( 3) = 6 ,
tр.н. (1,3) = tp (1) = 0 ,
tр.o. (1,3) = tp (1) + t (1,3) = 0 + 6 = 6 ,
tп.н. (1,3) = tп ( 3) − t (1,3) = 6 − 6 = 0 ,
R п(1,3) = tп ( 3) − tp (1) − t (1,3) = 6 − 0 − 6 = 0 ,
R c(1,3) = tр ( 3) − tр (1) − t (1,3) = 6 − 0 − 6 = 0 .
Для работы (1,4 ) имеем
tп.о. (1,4 ) = tп ( 4 ) = 14 ,
tр.н. (1,4 ) = tp (1) = 0 ,
tр.o. (1,4 ) = tp (1) + t (1,4 ) = 0 + 3 = 3 ,
tп.н. (1,4 ) = tп ( 4 ) − t (1,4 ) = 14 − 3 = 11 ,
R п(1,4 ) = tп ( 4 ) − tp (1) − t (1,4 ) = 14 − 0 − 3 = 11 ,
R c(1,4 ) = tр ( 4 ) − tр (1) − t (1,4 ) = 11 − 0 − 3 = 8 .
Для работы ( 3,4 ) имеем
tп.о. ( 3, 4 ) = tп ( 4 ) = 14 ,
tр.н. ( 3,4 ) = tp ( 3) = 6 ,
tр.o. ( 3,4 ) = tp ( 3) + t ( 3,4 ) = 6 + 5 = 11 ,
tп.н. ( 3,4 ) = tп ( 4 ) − t ( 3,4 ) = 14 − 5 = 9 ,
R п( 3,4 ) = tп ( 4 ) − tp ( 3) − t ( 3,4 ) = 14 − 6 − 5 = 3 ,
R c( 3, 4 ) = tр ( 4 ) − tр ( 3) − t ( 3,4 ) = 11 − 6 − 5 = 0 .
104
Для работы ( 2,5 ) имеем
tп.о. ( 2,5 ) = tп ( 5 ) = 15 ,
tр.н. ( 2,5 ) = tp ( 2 ) = 4 ,
tр.o. ( 2,5 ) = tp ( 2 ) + t ( 2,5 ) = 4 + 6 = 10 ,
tп.н. ( 2,5 ) = tп ( 5 ) − t ( 2,5 ) = 15 − 6 = 9 ,
R п( 2,5 ) = tп ( 5 ) − tp ( 2 ) − t ( 2,5 ) = 15 − 4 − 6 = 5 ,
R c( 2,5 ) = tр ( 5 ) − tр ( 2 ) − t ( 2,5 ) = 15 − 4 − 6 = 5 .
Для работы ( 3,5 ) имеем
tп.о. ( 3,5 ) = tп ( 5 ) = 15 ,
tр.н. ( 3,5 ) = tp ( 3) = 6 ,
tр.o. ( 3,5 ) = tp ( 3) + t ( 3,5 ) = 6 + 9 = 15 ,
tп.н. ( 3,5 ) = tп ( 5 ) − t ( 3,5 ) = 15 − 9 = 6 ,
R п( 3,5 ) = tп ( 5 ) − tp ( 3) − t ( 3,5 ) = 15 − 6 − 9 = 0 ,
R c( 3,5 ) = tр ( 5 ) − tр ( 3) − t ( 3,5 ) = 15 − 6 − 9 = 0 .
Для работы ( 4,5 ) имеем
tп.о. ( 4,5 ) = tп ( 5 ) = 15 ,
tр.н. ( 4,5 ) = tp ( 4 ) = 11 ,
tр.o. ( 4,5 ) = tp ( 4 ) + t ( 4,5 ) = 11 + 1 = 12 ,
tп.н. ( 4,5 ) = tп ( 5 ) − t ( 4,5 ) = 15 − 1 = 14 ,
R п( 4,5 ) = tп ( 5 ) − tp ( 4 ) − t ( 4,5 ) = 15 − 11 − 1 = 3 ,
R c( 4,5 ) = tр ( 5 ) − tр ( 4 ) − t ( 4,5 ) = 15 − 11 − 1 = 3 .
Для работы ( 5,6 ) имеем
tп.о. ( 5,6 ) = tп ( 6 ) = 23 ,
tр.н. ( 5,6 ) = tp ( 5 ) = 15 ,
tр.o. ( 5,6 ) = tp ( 5 ) + t ( 5,6 ) = 15 + 8 = 23 ,
tп.н. ( 5,6 ) = tп ( 6 ) − t ( 5,6 ) = 23 − 8 = 15 ,
R п( 5,6 ) = tп ( 6 ) − tp ( 5 ) − t ( 5,6 ) = 23 − 15 − 8 = 0 ,
R c( 5,6 ) = tр ( 6 ) − tр ( 5 ) − t ( 5,6 ) = 23 − 15 − 8 = 0 .
В заключение заметим, что критических путей в сети может быть несколько. Они могут включать в себя и фиктивные работы.
105
15. Варианты расчетно-графической работы
Характеристика заданий
Расчетно-графическая работа состоит из шести заданий, а каждое задание
содержит 30 вариантов. Тем самым, предлагаемые задания индивидуальны для
каждого студента. Приступая к выполнению расчетно-графической работы,
студент должен знать основные определения теории графов. Для этого ему
нужно будет изучить первую и вторую главы данного пособия.
Первое задание расчетно-графической работы связано с понятием неориентированного графа. Отметим, что в этом задании рассматриваются только
простые графы. Первое задание состоит из шести задач. Для выполнения первой из них от студента потребуется умение строить матрицы смежности и инцидентности неориентированного графа. С понятием об этих матрицах можно
ознакомиться в пятой главе. При решении первой задачи студент должен обратить внимание на примеры 5.1 и 5.3.
Вторая задача первого задания посвящена вычислению количества циклических маршрутов заданной длины. В первую очередь, студенту необходимо
изучить первый параграф восьмой главой и разобраться с такими понятиями,
как маршрут заданной длины, замкнутый и незамкнутый маршруты и их разновидностями (цепи, пути, циклы и контуры). В этой задаче требуется определить
количество маршрутов длины 3 и показать их. Как это делается, подробно разобрано во втором параграфе восьмой главой (см. пример 8.1). Для успешного
выполнения второй задачи студенты должны уметь умножать матрицы (этот
навык приобретается при изучении курса «Линейная алгебра»), причем в качестве умножаемых матриц используется матрица смежности неорграфа, полученная в первой задаче.
Третья задача первого задания связана с такими характеристиками графа, как радиус и диаметр графа. Эти характеристики описаны в десятой главе.
Определение радиуса и диаметра графа связано с вычислением эксцентриситетов его вершин, так как диаметр графа равен максимальному из эксцентриситетов вершин, а его радиус – минимальному. Для вычисления эксцентриситетов
необходимо уметь определять расстояния между вершинами графа. Отметим,
что эксцентриситеты вершин можно быстро найти при помощи матрицы расстояний (эксцентриситет любой вершины υi будет равен наибольшему из чисел, стоящих в i-й строке матрицы расстояний). После нахождения радиуса и
диаметра графа приступают к определению его центральных и периферийных
вершин. Решить третью задачу можно так, как показано в примере 10.1 или в
примере 10.2.
В четвертой задаче первого задания нужно найти степени вершин графа.
Это понятие раскрыто в третьей главе пособия. При выполнении четвертой задачи следует обратить внимание на пример 3.1.
Пятая задача первого задания требует от студентов знаний таких поня106
тий как эйлеров граф, эйлеров цикл и эйлерова цепь. С ними студент может познакомиться в одиннадцатой главе. В пятой задаче студенту необходимо проверить наличие эйлерового цикла (цепи) в предложенном графе. Это можно осуществить, используя теоремы Эйлера (теоремы 11.1 и 11.2). Если эйлеров цикл
или эйлерова цепь в графе существует, то ее находят по алгоритму Флери (см.
пример 11.1), который описан в первом параграфе одиннадцатой главы. Следует отметить, что в пятой задаче используется решение четвертой задачи (т.е.
используются найденные ранее степени вершин графа).
Шестая задача первого задания связана с понятием остова (покрывающего дерева) графа. Это понятие студент может усвоить, разобрав пятый параграф двенадцатой главы. Чтобы найти какой-либо остов графа и показать его,
необходимо знать, сколько ребер нужно удалить у графа для получения его остова, а это можно выяснить, вычислив цикломатическое число графа. Цикломатическое число вычисляется в соответствии с теоремой 12.9.
Второе задание расчетно-графической работы связано с понятием ориентированного графа. В этом задании, так же как и в первом, рассматриваются
только простые графы. Второе задание состоит из четырех задач. В первой задаче второго задания нужно найти полустепени исхода и захода вершин графа.
Это понятие разобрано в третьей главе пособия. При решении первой задачи
следует обратить внимание на пример 3.4.
При выполнении второй задачи второго задания студенту понадобится
умение строить матрицы смежности и инцидентности ориентированного графа.
Отличие между построением этих матриц для орграфов и неорграфов описано в
пятой главе. При решении второй задачи студент должен обратить внимание на
примеры 5.2 и 5.5.
Третья задача второго задания посвящена вычислению количества маршрутов длины 2, 3 и 4 из вершины υ3 в υ2 . При решении этой задачи, как и при
решении второй задачи из первого задания будет использована найденная ранее
(во второй задаче второго задания) матрица смежности орграфа. Матрицу
смежности возводим сначала во вторую степень, затем в третью, а потом в четвертую. Каждая из полученных матриц B 2 , B3 и B 4 будет показывать количество маршрутов соответствующей длины и, обратив внимание на численное
значение элемента β32 матриц B 2 , B3 и B 4 , узнаем количество маршрутов
длины 2, 3 и 4 из вершины υ3 в υ2 . После выполнения вышеизложенных действий следует указать все маршруты (см. пример 8.2).
В четвертой задаче второго задания необходимо найти компоненты
сильной связности орграфа. Прежде чем приступать к выполнению задания
нужно изучить девятую главу, посвященную связности графов, и разобраться с
такими понятиями как компонента связности графа, сильно связный орграф и
сильная компонента орграфа, а также, выяснить, как строить матрицы достижимости и контрдостижимости. При выполнении четвертой задачи студенту
следует обратить внимание на пример 9.1. Следует отметить, что для решения
107
четвертой задачи будут использованы найденные ранее (во второй и третьей
задачах второго задания) матрица смежности орграфа и матрицы B 2 , B3 и B 4 .
Третье задание расчетно-графической работы направлено на освоение
студентом таких действий над графами, как их пересечение, объединение и
симметрическая разность. Познакомиться с этими действиями студент может,
разобрав шестую главу. Особое внимание нужно обратить на пример 6.2. Следует отметить, что при выполнении третьего задания от студента потребуется
умение по заданным матрицам смежности строить графы (отметим, что в первом и втором заданиях расчетно-графической работы студент решает обратную
задачу: по заданному изображению графа построить его матрицу смежности).
Построив исходные графы G1 и G2 , далее строят их пересечение G1 ∩ G2 , объединение G1 ∪ G2 и симметрическую разность G1ΔG2 . Матрицы смежности графов G1 ∩ G2 , G1 ∪ G2 и G1ΔG2 можно получить двумя способами:
● построив их по полученным изображениям графов G1 ∩ G2 , G1 ∪ G2 и
G1ΔG2 ;
● из исходных матриц смежности B1 и B2 графов G1 и G2 , применив к
матрицам операции пересечения, объединения и симметрической разности.
Четвертое задание расчетно-графической работы посвящено нахождению кратчайшего пути во взвешенном орграфе по алгоритму Дейкстры. Алгоритм Дейкстры описан в третьем параграфе восьмой главы. При решении четвертого задания необходимо обратить внимание на пример 8.5. Следует отметить, что при выполнении данного задания студенту понадобится знание таких
понятий как взвешенный граф и матрица весов, а также потребуется умение
строить взвешенный орграф по заданной матрице весов. Понятия взвешенного
графа и матрицы весов рассмотрены во втором параграфе седьмой главы.
Пятое задание расчетно-графической работы связано с понятием взвешенного графа и посвящено решению такой экстремальной задаче на графах,
как задача об остове наименьшего веса. Студенту требуется решить эту задачу,
используя два алгоритма: Краскала и ближайшего соседа. Подробное описание
алгоритмов рассмотрено в первом параграфе тринадцатой главы. При выполнении пятого задания необходимо обратить внимание на примеры 13.1 и 13.2.
Шестое задание затрагивает такое приложение теории графов, как сетевое планирование. Прежде чем приступить к выполнению задания студент
должен изучить четырнадцатую главу и разобраться с понятиями сетевого графика, работы и события. Перед выполнением расчетов критического срока выполнения работ, сроков свершения событий, резервов времени событий, сроков
начала и окончания всех работ, полных и свободных резервов времени всех работ (см. пример 14.3) студент должен построить сетевой график (см. пример 14.1)
и определить правильную нумерацию его вершин (см. пример 14.2).
108
Задание 1. Неориентированный граф
1. Построить матрицы инцидентности и смежности.
2. Вычислить количество циклических маршрутов длины 3 и показать их.
3. Найти радиус и диаметр графа, указать центральные и периферийные
вершины.
4. Найти степени вершин графа.
5. Проверить наличие эйлерового цикла (цепи) и, если он (она) существует, указать его (ее), применив алгоритм Флери.
6. Найти цикломатическое число графа и показать какой-либо его остов.
ВАРИАНТЫ
υ1
1
u1
u2
υ6
u5
u4
υ5
u6
υ2
u3
υ5
u5
υ5
u6
υ1
4
u1
u2
u4
υ6
u3
u5
u2
υ5
υ3
u7
υ3
u7
υ4
υ2
u6
υ2
u3
u5
υ4
u4
u2
u4
u8
υ3
u1
υ6
u1
υ6
υ1
3
υ1
2
υ4
u6
u7
υ4
109
υ2
u3
υ3
υ1
5
u2
u3
υ6
υ2
υ6
u4
u1
u1
υ5
υ3
u6
u4
u2
υ6
u8
υ5
υ2
u6
υ1
8
u1
u5
υ5
υ3
u4
u1
υ6
υ5
u2
u8
u3 υ2
10
υ3
u6
υ1
u1
υ6
u4 u5
u7
u6
υ4
υ1
9
u3
u7
υ4
υ2
u2
υ6
u3
u5
u7
υ3
u5
υ4
υ1
u1
υ2
u3
υ4
7
u2
u4
u6
u5
υ5
υ1
6
u5
υ5
υ3
υ4
υ2
u2
u4
u7
υ4
110
u3
u6
υ3
11
υ1
u1
υ1
u1
υ6
u4
u6
υ5
υ3
u7
υ6
u6
υ5
15
υ6
u8
υ5
u4
u2
u7
u1
u5 υ2
u8
u9
u10
υ3
u7
υ1
14
υ6
u3
u1
u2
υ5
u11 υ
3
υ3
u4
υ4
υ1
υ1
υ2
u2
16
u1
υ6
u5
u7
υ5
υ3
u2
u4
u3
u6
111
υ2
u3
u5
u6
υ4
υ4
υ2
u3
u5
υ4
u4
u5
υ4
υ1
u1
u3
u6
υ4
13
υ2
u2
u8
u3
u5
υ5
υ2
u2
u4
υ6
12
υ3
υ1
17
u1
u2
u3
υ6
18
υ2
υ5
υ3
u7
υ2
u3
u6
u5
υ5
u1
υ6
u4
u6
υ1
u4
u5
υ4
u1
υ6
υ5
u2
u4
u6
u7
υ2
u1
u3
u6
υ5
υ3
u4
υ6
u6
υ5
u9
u5
υ3
u7
υ4
υ1
u1
υ2
u2
υ6
u3
u5
υ1
20
υ4
21
υ3
υ4
υ1
19
u2
u4
22
u5 υ2
υ1
u1
υ6
u8
u3
u2
u4 υ 2
u9
u3
u5
u7
u10
u2
υ5
υ3
υ4
u7
u6
υ4
112
u8
υ3
υ1
23
u4
u1
υ6
u2
u1
υ6
u3
u6
υ5
υ2
υ1
24
u4
u5
u8
u7
υ5
υ3
u5
υ6
υ2
u1
u5
u2
υ5
υ3
u4
υ4
27
υ6
υ5
u3
u2
υ3
υ1
28
υ2
u1
υ6
u5
u4
u6
υ5
υ3
υ4
u4
u2
u6
u7
u3
υ4
υ1
u1
υ2
υ6
u2
u4
υ1
26
u3
u6
υ5
υ4
υ1
u1
u3
υ3
u5
υ4
25
υ2
u2
u3
u5
υ3
u7
υ4
113
υ2
υ1
29
u1
u5
υ6
υ5
u6
u4
υ2
u1
υ6
u3
u2
υ1
30
u6
υ5
υ3
u9
u3
u2
u4
u7
υ4
υ2
u5
u8
υ3
υ4
Задание 2. Ориентированный граф
1. Найти полустепени исхода и захода вершин графа.
2. Построить матрицы инцидентности и смежности.
3. Вычислить количество маршрутов длины 2, 3 и 4 из вершины υ3 в υ2
и показать их.
4. Найти компоненты сильной связности.
ВАРИАНТЫ
1
υ1
υ2
u8
u7
u6
u4
υ4
u2
u3
u5
υ3
114
υ5
u1
2
υ1
υ2
u7
u8
u6
u4
u5
υ1
υ3
υ2
u7
u8
4
u5
υ1
υ3
υ2
u7
u5
υ3
υ2
u7
u8
u6
u3
u4
u5
υ5
u1
u3
υ1
υ4
u2
u6
u4
υ4
υ5
u1
u3
u8
5
u2
u6
u4
υ4
υ5
u1
u3
υ4
3
u2
υ3
115
u2
υ5
u1
6
υ1
υ2
u7
u8
u6
u5
υ4
υ1
υ2
υ5
u1
u3
u5
υ1
u2
u6
u4
υ4
8
υ3
u7
u8
υ5
u1
u3
u4
7
u2
υ3
υ2
u7
u8
u6
u1
u2
υ5
u3
u4
u5
υ4
9
υ1
υ3
υ2
u7
u8
u6
u1
u4
υ4
u5
υ3
116
u2
u3
υ5
10
υ1
u7
υ2
u6
u1
u4
u5
υ1
u7
υ3
υ2
u5
u1
u6
u4
u3
υ5
υ3
υ1
u1
u2
u8
υ4
12
u3
υ5
u8
υ4
11
u2
u7
υ2
u6
u2
u3
υ5
u4
u8
u5
υ4
13
υ1
u1
u7
υ3
υ2
u6
u2
u3
u4
u8
υ4
u5
υ3
117
υ5
14
υ1
u1
υ2
u7
u4
u6
u2
u3
υ5
u8
u5
υ4
15
υ1
u1
υ3
u7
υ2
u6
u2
u3
υ5
u4
u8
16
υ4
u5
υ3
υ1
u3
υ2
u1
u7
u4
u2
υ5
u6
u8
u5
υ4
17
υ1
u1
u7
υ3
υ2
u6
u2
u3
u4
u8
υ4
u5
υ3
118
υ5
18
υ1
u7
υ2
u6
u1
u2
u3
υ5
u4
u8
u5
υ4
19
υ1
u1
υ3
u7
υ2
u4
u6
u5
u2
u3
υ5
u8
υ4
20
υ1
u1
21
υ3
u7
υ2
u4
u6
u8
u3
υ3
υ1
υ2
u7
u4
u6
u2
u3
u8
υ4
υ5
u5
υ4
u1
u2
u5
υ3
119
υ5
22
υ1
u1
u7
υ2
u4
u6
u8
u2
u5
υ5
u3
υ4
23
υ3
υ1
u7
υ2
u4
u6
u8
u2
u5
υ5
u3
u1
υ4
24
υ1
υ3
u7
υ2
u6
u1
u2
u3
υ5
u4
u8
u5
υ4
25
υ1
u1
u8
υ3
u7
υ2
u4
u6
u2
u5
u3
υ4
υ3
120
υ5
26
υ1
u1
u7
υ2
u4
u6
u8
u2
u5
υ5
u3
υ4
27
υ3
υ1
u7
υ2
u3
u1
u6
u2
υ5
u8
u4
u5
υ4
28
υ1
u7
υ3
υ2
u3
u1
u6
u2
υ5
u8
u4
u5
υ4
29
υ1
u1
u7
υ3
υ2
u6
u8
u3
u4
u2
υ4
u5
υ3
121
υ5
30
υ1
υ2
u7
u2
u3
u1
υ5
u6
u4
u8
u5
υ4
υ3
Задание 3. Операции над графами
Графы G1 и G2 заданы матрицами смежности B1 и B2 соответственно.
Построить исходные графы G1 и G2 , их пересечение, объединение и симметрическую разность. Составить матрицы смежности полученных графов.
ВАРИАНТЫ
1
2
3
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
1
0
1
0
0
1
0
1
0
0
1
1
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
1
1
0
1
1
0
0
1
0
1
1
0
1
0
0
1
0
0
0
1
1
1
1
0
0
1
1
1
0
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛1
υ2 ⎜⎜1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝1
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
0
1
0
1
0
1
0
1
1
0
0
1
0
0
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
122
1
1
1
0
1
1
1
1
0
0
1
1
⎞
⎟
⎟.
⎟
⎟
⎠
4
5
6
7
8
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
0
0
1
1
1
1
0
1
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
0
1
1
1
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
0
1
1
1
1
1
1
0
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
0
1
0
0
1
1
1
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
1
1
1
0
1
1
1
1
1
1
0
0
1
1
0
0
1
0
1
1
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
0
0
1
0
1
1
1
0
0
0
0
1
⎞
⎟
⎟.
⎟
⎟
⎠
0
1
1
0
0
1
1
0
1
0
0
1
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
0
1
1
υ1 υ2 υ3 υ4
⎞
⎟
⎟,
⎟
⎟
⎠
1
0
1
0
0
1
1
1
υ1 υ2 υ3 υ4
⎞
⎟
⎟,
⎟
⎟
⎠
0
1
0
1
0
1
1
0
1
0
0
1
1
0
0
1
0
1
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛1
υ2 ⎜⎜1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝1
⎞
⎟
⎟,
⎟
⎟
⎠
123
1
1
1
0
1
1
0
0
1
0
0
0
⎞
⎟
⎟.
⎟
⎟
⎠
9
10
11
12
13
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
0
1
0
1
1
0
1
1
0
1
1
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
1
0
0
1
0
0
1
1
0
1
0
0
1
1
1
1
1
0
0
1
1
0
0
υ1 ⎛ 0
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
1
1
1
0
0
1
1
1
1
0
1
1
υ1 ⎛ 0
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
1
0
1
1
1
1
0
1
0
1
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
0
1
1
0
1
1
1
1
1
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
0
1
0
1
0
0
0
1
1
1
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
1
0
0
1
υ1 υ2 υ3 υ4
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
1
1
0
υ1 υ2 υ3 υ4
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
0
0
1
0
1
1
0
1
0
0
1
1
1
1
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
124
1
1
1
1
0
1
1
1
0
1
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
14
15
16
17
18
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
0
1
1
1
1
1
1
1
1
1
0
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
0
1
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
0
1
0
1
1
0
0
υ1 ⎛ 0
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
1
0
0
1
0
0
0
1
1
1
1
0
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
0
0
1
1
1
1
0
0
1
1
0
1
⎞
⎟
⎟.
⎟
⎟
⎠
0
0
1
1
1
1
0
0
1
1
0
0
⎞
⎟
⎟.
⎟
⎟
⎠
0
0
0
1
1
0
0
0
1
1
0
1
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛1
υ2 ⎜⎜1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝1
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
0
0
1
1
υ1 υ2 υ3 υ4
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
0
0
1
1
υ1 υ2 υ3 υ4
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
1
0
0
1
0
0
1
1
0
0
1
1⎞
1 ⎟⎟
.
1⎟
⎟
1⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
125
0
0
1
1
0
1
1
1
1⎞
1 ⎟⎟
.
1⎟
⎟
1⎠
19
20
21
22
23
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
1
0
1
1
1
1
0
1
0
1
1
1
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
1
1
0
1
1
1
0
1
0
0
0
0
1
1
1
0
1
1
0
1
1
0
0
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
1
0
1
0
0
1
1
1
1
0
1
1
υ1 ⎛ 0
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
1
0
1
0
0
1
0
1
1
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
1
1
1
0
0
1
0
1
0
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
1
1
1
1
0
1
0
1
0
1
1
1
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
0
1
0
1
υ1 υ2 υ3 υ4
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
0
1
1
0
υ1 υ2 υ3 υ4
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
0
1
1
1
1
1
1
0
1
1
0
1
1
0
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
⎞
⎟
⎟,
⎟
⎟
⎠
126
0
1
0
1
0
0
0
1
1
1
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
24
25
26
27
28
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
0
1
0
1
1
0
1
0
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 0
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
0
1
0
1
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
1
1
0
0
1
1
0
υ1 ⎛ 1
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
0
1
1
1
1
1
0
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 1
1
1
1
1
1
1
0
1
1
1
1
0
0
1
1
1
1
1
0
1
0
1
1
1
⎞
⎟
⎟.
⎟
⎟
⎠
1
0
0
1
1
0
0
0
0
1
0
1
⎞
⎟
⎟.
⎟
⎟
⎠
0
0
1
1
1
1
0
1
0
1
1
1
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
0
1
1
0
υ1 υ2 υ3 υ4
⎞
⎟
⎟,
⎟
⎟
⎠
1
1
0
1
0
1
0
1
υ1 υ2 υ3 υ4
⎞
⎟
⎟,
⎟
⎟
⎠
1
0
0
1
1
0
1
1
0
0
1
1
1
1
1
0
0
1
0
0
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
127
0
1
1
0
1
1
0
1
0
0
1
0
⎞
⎟
⎟.
⎟
⎟
⎠
29
30
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
0
0
0
1
0
0
1
1
1
1
1
0
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 0
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 1
υ2 ⎜⎜ 1
B1 =
υ3 ⎜ 0
⎜
υ4 ⎝ 1
1
1
1
0
0
1
0
1
1
0
1
0
0
1
1
1
1
1
0
0
0
1
0
1
⎞
⎟
⎟.
⎟
⎟
⎠
υ1 υ2 υ3 υ4
υ1 ⎛ 0
υ2 ⎜⎜ 1
B2 =
υ3 ⎜ 1
⎜
υ4 ⎝ 0
⎞
⎟
⎟,
⎟
⎟
⎠
1
1
1
0
1
1
1
1
0
0
1
1
⎞
⎟
⎟.
⎟
⎟
⎠
Задание 4. Кратчайший путь в орграфе
Орграф задан весовой матрицей W . Построить его, найти величину кратчайшего пути и сам путь из вершины υ1 в вершину υ6 или υ7 по алгоритму
Дейкстры.
ВАРИАНТЫ
1
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
υ2
υ3
υ4
υ5
υ6
6
0
∞
∞
∞
∞
9
7
0
∞
∞
∞
12
8
4
0
∞
∞
∞
12
3
7
0
∞
∞⎞
∞ ⎟⎟
5⎟
⎟.
9⎟
8⎟
⎟
0⎠
2
128
υ1
υ2
υ3
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
12
0
∞
8
12
∞
∞
14
0
12
11
∞
υ4
15
∞
∞
0
∞
∞
υ5
16
∞
∞
10
0
∞
υ6
∞⎞
∞ ⎟⎟
14 ⎟
⎟.
∞⎟
15 ⎟
⎟
0⎠
3
υ1
υ2
υ3
υ4
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
6
0
∞
11
7
∞
9
11
0
15
9
∞
7
∞
∞
0
∞
∞
5
υ1
υ1 ⎛ 0
υ2 ⎜ ∞
⎜
υ3 ⎜ ∞
⎜
W = υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎜ ∞
υ7 ⎜⎝ ∞
7
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
υ5
υ6
19
∞
∞
7
0
∞
∞⎞
∞ ⎟⎟
16 ⎟
⎟.
∞⎟
10 ⎟
⎟
0⎠
υ2
υ3
υ4
υ5
∞
10
15
7
0
∞
∞
13
8
0
12
6
∞
∞
0
∞
∞
∞
∞
∞
∞
∞
0
∞
∞
∞
∞
∞
υ1
4
∞
∞⎞
19 ∞ ⎟⎟
10 21 ⎟
⎟
10 15 ⎟ .
9 22 ⎟
⎟
0 17 ⎟
∞ 0 ⎟⎠
υ3
υ4
υ5
υ6
6
8
∞
12
0
6
∞
0
∞
7
∞
5
∞
6
6
0
∞⎞
13 ⎟⎟
∞⎟
⎟.
8⎟
9⎟
⎟
0⎠
∞
∞
∞
6
∞
∞
129
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
8
υ2
∞
0
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
6
υ6 υ7
υ1
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
υ2
υ3
υ4
υ5
υ6
5
0
7
∞
∞
∞
7
∞
0
∞
∞
∞
10
8
6
0
∞
∞
9
6
3
5
0
∞
∞⎞
14 ⎟⎟
10 ⎟
⎟.
6⎟
8⎟
⎟
0⎠
υ2
υ3
υ4
υ5
υ6
4
0
3
6
∞
∞
0
∞
∞
∞
∞
∞
∞
10
4
4
0
4
∞
∞
∞⎞
15 ⎟⎟
17 ⎟
⎟.
5⎟
9⎟
⎟
0⎠
υ2
υ3
υ4
υ5
7
0
∞
∞
15
7
∞
16
0
∞
3
∞
4
∞
19
0
15
∞
4
∞
∞
∞
∞
5
∞
0
0
∞
υ6
∞⎞
∞ ⎟⎟
2⎟
⎟.
7⎟
8⎟
⎟
0⎠
9
υ1
υ1 ⎛ 0
υ2 ⎜ ∞
⎜
υ3 ⎜ ∞
⎜
W = υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎜ ∞
υ7 ⎜⎝ ∞
11
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
13
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
υ2
υ3
υ4
υ5
8
18
21
∞
0
∞
12
7
∞
0
7
9
∞
∞
0
9
∞
∞
∞
∞
∞
∞
0
∞
∞
∞
∞
∞
υ6 υ7
15 ∞ ⎞
∞ ∞ ⎟⎟
∞ 6⎟
⎟
8 3 ⎟.
5 5⎟
⎟
0 4⎟
∞ 0 ⎟⎠
υ2
υ3
υ4
υ5
υ6
8
0
3
3
∞
∞
0
∞
∞
∞
∞
∞
∞
∞
2
0
4
14
6
3
∞⎞
∞ ⎟⎟
12 ⎟
⎟.
6⎟
6⎟
⎟
0⎠
∞
∞
0
∞
υ2
υ3
υ4
υ5
υ6
7
0
∞
7
0
9
13
∞
∞
0
∞
∞
7
0
∞⎞
∞ ⎟⎟
7⎟
⎟.
15 ⎟
11 ⎟
⎟
0⎠
∞
5
8
9
6
∞
∞
∞
∞
∞
10
υ1
υ2
υ3
υ4
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
11
0
13
12
∞
10
∞
∞
0
14
∞
0
∞
∞
∞
∞
∞
∞
υ1
υ2
υ3
υ4
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
11
0
∞
∞
∞
∞
12
14
0
∞
∞
∞
7
9
6
0
∞
∞
υ2
υ3
5
0
∞
3
3
∞
12
14
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
130
υ5
∞
∞
11
12
0
∞
υ6
∞⎞
20 ⎟⎟
∞⎟
⎟.
11 ⎟
7⎟
⎟
0⎠
υ5
υ6
∞
11
7
8
0
∞
∞⎞
18 ⎟⎟
16 ⎟
⎟.
∞⎟
10 ⎟
⎟
0⎠
υ4
υ5
υ6
9
3
0
8
∞
∞
∞
∞
∞
5
∞
∞
0
∞
∞
7
0
∞
∞⎞
∞ ⎟⎟
4⎟
⎟.
∞⎟
4⎟
⎟
0⎠
15
υ1
υ1 ⎛ 0
υ2 ⎜ ∞
⎜
υ3 ⎜ ∞
⎜
W = υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎜ ∞
υ7 ⎜⎝ ∞
17
υ2
υ3
υ4
υ5
υ 6 υ7
6
∞
10
9
0
8
∞
6
∞
0
5
∞
∞
∞
0
∞
∞
∞
7
∞
∞
9
0
∞
∞
∞
∞
∞
12 ∞ ⎞
9 ∞ ⎟⎟
6 1⎟
⎟
∞ 4 ⎟.
13 2 ⎟
⎟
0 9⎟
∞ 0 ⎟⎠
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
19
υ1
υ1 ⎛ 0
υ2 ⎜ ∞
⎜
υ3 ⎜ ∞
⎜
W = υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎜ ∞
υ7 ⎜⎝ ∞
16
υ3
υ4
υ5
υ6
9
0
10
10
0
∞
8
9
0
∞
2
2
9
0
∞⎞
∞ ⎟⎟
7⎟
⎟.
3⎟
1⎟
⎟
0⎠
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
υ2
υ3
υ4
υ5
υ6
7
0
∞
9
6
13
10
∞
∞
∞
0
∞
∞
∞
7
0
∞
∞
13
7
∞
∞⎞
∞ ⎟⎟
16 ⎟
⎟.
10 ⎟
9⎟
⎟
0⎠
υ1
υ2
υ3
υ4
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
11
0
∞
∞
∞
∞
13
7
0
∞
∞
∞
∞
10
12
0
12
∞
υ2
υ3
υ4
υ5
υ6
8
0
6
12
4
5
∞
0
6
∞
∞
0
∞
14
∞
∞
∞
∞
7
0
∞
∞
∞
∞
∞⎞
∞ ⎟⎟
∞⎟
⎟.
10 ⎟
11 ⎟
⎟
0⎠
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
18
υ2
υ2
υ3
υ4
υ5
υ 6 υ7
∞
8
∞
∞
∞
0
∞
11
6
5
0
4
7
∞
∞
0
∞
∞
∞
∞
∞
8
∞
0
∞
∞
∞
∞
∞
∞⎞
11 ∞ ⎟⎟
8 ∞⎟
⎟
∞ 6 ⎟.
6 19 ⎟
⎟
0 5⎟
∞ 0 ⎟⎠
131
υ1
20
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
9
0
∞
υ5
∞
14
15
∞
0
∞
υ6
∞⎞
∞ ⎟⎟
20 ⎟
⎟.
13 ⎟
15 ⎟
⎟
0⎠
21
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
23
υ2
υ3
υ4
υ5
υ6
5
0
9
∞
4
∞
∞⎞
11⎟⎟
∞⎟
⎟.
5⎟
8⎟
⎟
0⎠
∞
0
4
∞
3
∞
∞
∞
∞
∞
4
5
0
6
∞
0
∞
∞
υ1
υ2
υ3
υ4
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
13
0
9
11
12
8
11
∞
∞
∞
∞
∞
∞
∞
11
8
0
6
∞
∞
25
υ1
υ1 ⎛ 0
υ2 ⎜ ∞
⎜
υ3 ⎜ ∞
⎜
W = υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎜ ∞
υ7 ⎜⎝ ∞
∞
0
υ5
∞
0
22
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
24
υ6
∞⎞
16 ⎟⎟
∞⎟
⎟.
12 ⎟
13 ⎟
⎟
0⎠
υ2
υ3
υ4
υ5
υ6 υ7
∞
8
13
∞
0
∞
∞
7
6
0
5
6
∞
∞
0
∞
∞
∞
∞
∞
9
∞
0
∞
∞
∞
∞
∞
11 ∞ ⎞
14 ∞ ⎟⎟
7 ∞⎟
⎟
∞ 5 ⎟.
5 9⎟
⎟
0 7⎟
∞ 0 ⎟⎠
132
υ2
υ3
υ4
υ5
υ6
6
0
5
∞
9
11
7
∞
∞
0
∞
∞
∞
∞
∞
6
0
5
∞
9
∞
0
∞
∞
∞⎞
14 ⎟⎟
∞⎟
⎟.
9⎟
11 ⎟
⎟
0⎠
υ6
υ1
υ2
υ3
υ4
υ5
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
19
0
12
11
∞
∞
0
∞
∞
∞
∞
∞
∞
∞
9
0
11
∞
2
2
∞
0
∞
∞
υ2
υ3
υ4
υ5
8
9
13
∞
0
∞
∞
∞
∞
10
0
∞
∞
∞
8
7
0
∞
∞
12
8
9
26
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
0
∞
∞⎞
8 ⎟⎟
9⎟
⎟.
3⎟
4⎟
⎟
0⎠
υ6
∞⎞
∞ ⎟⎟
8⎟
⎟.
7⎟
3⎟
⎟
0⎠
27
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
29
υ1
υ1 ⎛ 0
υ2 ⎜ ∞
⎜
υ3 ⎜ ∞
⎜
W = υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎜ ∞
υ7 ⎜⎝ ∞
28
υ2
υ3
υ4
υ5
υ6
5
0
6
11
11
4
12
6
∞
∞
0
∞
7
0
∞
∞
∞
∞
∞
∞
8
7
0
∞⎞
∞ ⎟⎟
8⎟
⎟.
∞⎟
9⎟
⎟
0⎠
∞
υ2
υ3
υ4
υ5
υ 6 υ7
4
6
∞
5
∞
0
∞
9
∞
∞
0
5
7
∞
∞
0
∞
∞
∞
∞
∞
9
∞
0
∞
∞
∞
∞
∞
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
30
υ1
υ1 ⎛ 0
υ2 ⎜⎜ ∞
υ3 ⎜ ∞
W= ⎜
υ4 ⎜ ∞
υ5 ⎜ ∞
⎜
υ6 ⎝ ∞
∞⎞
10 16 ⎟⎟
∞ ∞⎟
⎟
8 ∞ ⎟.
3 12 ⎟
⎟
0 9⎟
∞ 0 ⎟⎠
υ2
υ3
υ4
υ5
υ6
9
0
∞
∞
8
6
∞
∞
10
∞
∞
0
∞
∞
6
0
∞
∞⎞
∞ ⎟⎟
9⎟
⎟.
11⎟
4⎟
⎟
0⎠
6
7
∞
0
7
6
∞
υ2
υ3
υ4
υ5
υ6
∞
0
9
4
∞
0
∞
∞
∞
∞
∞
∞
∞
5
6
0
∞
7
7
6
0
∞⎞
9 ⎟⎟
13 ⎟
⎟.
8⎟
4⎟
⎟
0⎠
∞
∞
∞
Задание 5. Взвешенный граф
Найти остов минимального веса (экстремальное дерево), применив:
а) алгоритм Краскала;
б) алгоритм ближайшего соседа.
ВАРИАНТЫ
1
13
19
14
υ6
υ2
29
υ1
20
υ5
17
12
υ7
27
2
16
15
21
16
υ6
υ3
17
22
22
υ4
υ5
133
υ2
υ1
19
27
υ7
υ3
13
24
29
υ4
3
16
22
υ6
24
υ4
21
υ2
υ5
υ1
16
υ6
υ7
23
υ5
υ1
7
17
υ6
23
υ5
29
υ1
8
20
15
27
19
υ4
20
υ2
15
υ6
υ3
16
29
25
υ4
υ5
134
υ3
24
27
29
υ4
19
υ2
27
20
19
14
13
17
υ5
υ3
23
22
υ7
22
υ2
21
υ7
υ6
υ4
24
17
15
29
19
16
υ1
6
υ3
14
18
12
υ7
υ5
20
27
13
21
25
19
27
15
υ6
υ2
29
υ1
20
υ3
14
27
4
29
15
υ7
5
υ2
21
υ1
18
13
υ7
22
12
υ4
υ3
9
16
29
14
27
23
18
13
υ6
13
14
υ6
υ7
20
υ5
29
υ6
24
υ4
29
υ2
15
υ5
υ1
14
11
16
15
υ6
υ3
23
υ4
υ5
135
υ4
22
υ2
19
υ7
21
22
υ3
12
14
17
12
18
13
υ7
υ3
25
27
υ2
18
19
14
20
υ4
21
14
υ7
22
27
27
υ1
12
υ3
11
15
υ1
υ5
29
12
υ7
υ5
27
20
15
23
υ2
18
υ2
29
16
υ4
υ1
19
υ1
υ6
υ3
25
υ5
11
10
20
υ7
17
υ6
υ2
21
υ1
29
18
27
12
17
υ3
23
υ4
15
14
20
16
υ1
17
υ6
υ4
20
υ2
υ1
19
υ7
16
υ6
19
27
18
29
24
17
υ5
υ7
27
15
27
υ4
29
υ2
19
υ7
17
υ5
136
21
14
29
υ4
υ3
υ1
υ6
16
11
21
υ3
23
υ2
υ5
20
υ3
υ4
22
13
υ6
19
υ2
20
17
12
18
υ3
27
υ1
18
υ4
23
15
21
16
24
18
29
υ7
15
υ5
13
27
υ5
υ3
19
14
υ7
14
20
υ6
υ2
19
υ1
23
22
15
29
12
17
υ5
16
18
υ7
27
υ6
υ2
29
υ1
υ3
13
24
18
23
υ4
21
υ2
17
υ1
12
υ7
14
19
υ5
υ1
23
υ6
υ4
20
υ2
16
υ5
υ1
25
19
υ2
14
20
15
υ6
υ4
29
υ5
13
υ7
27
υ5
137
29
27
υ4
22
υ2
18
17
27
υ7
11
21
υ3
29
15
υ5
υ3
12
14
20
υ4
υ7
13
υ6
υ3
17
22
υ1
26
18
16
21
18
υ2
15
υ6
υ3
υ4
29
14
20
υ3
25
υ1
24
24
23
14
18
υ5
13
27
υ7
17
υ6
20
27
29
14
υ7
15
29
20
υ2
21
υ1
22
υ3
15
15
21
16
11
27
υ6
22
υ4
υ2
υ1
27
υ
27
19
6
υ5
16
29 23
υ1
14
19
29
18
υ5
27
υ6
30
υ4
υ4
20
υ2
υ5
29
14
υ7
17
22
υ3
25
24
15
21
υ3
14
18
υ5
υ2
υ7
27
20
27
29
20
15
υ7
6
υ4
21
16
22
28υ
16
22
22
21
υ1
υ3
11
15
29
υ6
17
υ7
14
υ2
υ1
υ3
18
23
υ4
Задание 6. Сетевой график
По приведенному перечню работ и их взаимной последовательности построить сетевой график, определить правильную нумерацию его вершин, критический срок, ранние и поздние сроки свершения событий, резервы времени
событий, ранние и поздние сроки начала и окончания всех работ, а также полные и свободные резервы времени всех работ.
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 1
Предшествующие
Продолжительность
ей работы
работ
—
4
—
7
—
10
5
a1
11
a1 , a2
17
a1 , a2 , a3
6
a4 , a5 , a6
138
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
Вариант 2
Предшествующие
Продолжительность
ей работы
работ
—
6
—
10
—
5
9
a1
6
a1 , a2 , a3
12
a3
11
a3 , a4 , a5
8
a4
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
Вариант 3
Предшествующие
Продолжительность
ей работы
работ
—
3
—
4
—
5
3
a1
2
a1
8
a2 , a3
6
a3
7
a2 , a3 , a4
3
a3 , a5 , a6
6
a7
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 4
Предшествующие
Продолжительность
ей работы
работ
—
7
—
5
10
a1
6
a1 , a2
2
a1 , a2
12
a3 , a4
13
a1 , a5
139
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 5
Предшествующие
Продолжительность
ей работы
работ
—
6
—
10
—
8
4
a1
3
a3
8
a3
9
a3 , a4
12
a1 , a2 , a5 , a6
10
a6
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 6
Предшествующие
Продолжительность
ей работы
работ
—
10
—
8
—
6
5
a2
6
a1
9
a3 , a4
12
a2 , a3 , a4 , a5
13
a6
16
a1 , a7 , a8
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 7
Предшествующие
Продолжительность
ей работы
работ
—
13
—
16
—
14
16
a1
14
a1 , a2 , a3
17
a3
15
a3 , a4 , a5
140
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 8
Предшествующие
Продолжительность
ей работы
работ
—
10
—
12
—
9
6
a1
7
a1 , a3
9
a2 , a4
5
a1 , a2 , a4 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 9
Предшествующие
Продолжительность
ей работы
работ
—
5
—
7
10
a1
11
a1 , a2
5
a1 , a2
7
a3
10
a3
7
a1 , a4 , a6
12
a1 , a4 , a5 , a6
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 10
Предшествующие
Продолжительность
ей работы
работ
—
12
—
10
—
13
7
a1
9
a1 , a2
14
a1 , a2 , a3
16
a6
11
a4 , a5 , a7
9
a6
141
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 11
Предшествующие
Продолжительность
ей работы
работ
—
7
5
a1
—
11
14
4
a1 , a3
7
a2 , a4
6
a1 , a4 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 12
Предшествующие
Продолжительность
ей работы
работ
—
5
—
7
12
a1 , a2
4
a1 , a2
6
a2
10
a3 , a4 , a5
9
a3
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 13
Предшествующие
Продолжительность
ей работы
работ
—
7
—
11
9
a1
6
a1
12
a1 , a2
15
a1 , a2
8
a3
7
a4 , a5
6
a3 , a4 , a5 , a6
142
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 14
Предшествующие
Продолжительность
ей работы
работ
—
6
—
7
—
9
11
a1 , a2
8
a2 , a3
7
a2
6
a4 , a5
10
a6
7
a2 , a3
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 15
Предшествующие
Продолжительность
ей работы
работ
—
7
—
8
—
12
6
a1 , a2
7
a2 , a3
14
a3
5
a3 , a4 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 16
Предшествующие
Продолжительность
ей работы
работ
—
6
—
7
8
a1
9
a1 , a2
8
a2 , a3
4
a1 , a3 , a4
5
a4
143
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 17
Предшествующие
Продолжительность
ей работы
работ
—
7
—
9
—
10
7
a3
12
a2 , a4
14
a1 , a2 , a3
6
a2 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 18
Предшествующие
Продолжительность
ей работы
работ
—
9
—
10
7
a1
12
a1 , a2
8
a2
10
a3 , a4 , a5
8
a3 , a4
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 19
Предшествующие
Продолжительность
ей работы
работ
—
14
—
14
16
a2
17
a1 , a2
10
a1 , a3
15
a2 , a4 , a5
18
a2
144
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 20
Предшествующие
Продолжительность
ей работы
работ
—
7
—
6
—
8
10
a1 , a2
10
a2
18
a2 , a3
5
a3 , a4 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 21
Предшествующие
Продолжительность
ей работы
работ
—
16
—
14
10
a2
5
a1 , a2
7
a3
14
a2 , a4 , a5
3
a2
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 23
Предшествующие
Продолжительность
ей работы
работ
—
11
—
12
—
10
9
a1 , a2
7
a2 , a3
14
a2 , a3
8
a1 , a2
9
a2 , a4 , a5
12
a6
145
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 22
Предшествующие
Продолжительность
ей работы
работ
—
8
—
5
—
7
9
a3
10
a2 , a4
15
a1 , a2 , a3
7
a2 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 24
Предшествующие
Продолжительность
ей работы
работ
—
13
—
12
15
a1
16
a1
14
a1 , a2
14
a3
16
a4 , a5
17
a6 , a7
15
a4 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 25
Предшествующие
Продолжительность
ей работы
работ
—
3
—
2
4
a1
11
a1 , a2
7
a1 , a2
5
a1 , a4
9
a3
7
a1 , a4
8
a5 , a6
146
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 26
Предшествующие
Продолжительность
ей работы
работ
—
8
—
7
9
a2
10
a1 , a2
8
a1 , a3
6
a2 , a4 , a5
10
a2
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
Вариант 27
Предшествующие
Продолжительность
ей работы
работ
—
8
—
9
7
a1 , a2
12
a2
5
a3 , a4
10
a2
7
a3 , a4 , a6
13
a2 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
Вариант 28
Предшествующие
Продолжительность
ей работы
работ
—
15
—
14
16
a1
15
a1 , a2
17
a2 , a3
19
a2 , a3 , a4
14
a4
17
a5 , a6
147
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
Вариант 29
Предшествующие
Продолжительность
ей работы
работ
—
17
—
15
—
10
14
a3
18
a2 , a4
10
a1 , a2 , a3
16
a2 , a5
Исходная
работа
a1
a2
a3
a4
a5
a6
a7
a8
a9
Вариант 30
Предшествующие
Продолжительность
ей работы
работ
—
10
—
11
—
13
19
a1
17
a1 , a2
15
a1 , a2 , a3
16
a4
12
a4 , a5 , a6
15
a1 , a7 , a8
Заключение
Пособие в первую очередь предназначено для студентов ВГАСУ специальности 270115 «Экспертиза и управление недвижимостью», хотя может быть
использовано и студентами других специальностей, изучающих теорию графов.
Пособие позволит студентам выполнить расчетно-графическую работу и
подготовиться к сдаче экзамена, так как включает и необходимые теоретические сведения по курсу «Теория графов» и примеры решений всех типов задач,
входящих в расчетно-графическую работу.
148
Библиографический список
рекомендуемой литературы
1. Кирсанов, М.Н. Математический центр московского метро / М.Н. Кирсанов // Exponenta Pro. Математика в приложениях. 2003. № 4(4).– С. 60 –
62.
2. Аляев, Ю.Л. Дискретная математика и математическая логика / Ю.А. Аляев,
С.Ф. Тюрин. – М.: Финансы и статистика, 2006. – 368 с.
3. Балюкевич, Э.Л. Дискретная математика / Э.Л. Балюкевич, Л.Ф. Ковалева,
А.Н Романчиков.– Московский государственный университет экономики,
статистики и информатики, – М., 2003. – 127 с.
4. Дьяконов, В.П. Maple 7: учебный курс / В.П. Дьяконов. – СПб.: Питер,
2002. – 672 с.
5. Канцедал, С.А. Дискретная математика / С.А. Канцедал. – М.: ИД
«ФОРУМ»: ИНФРА-М, 2007. – 224 с.
6. Кирсанов, М.Н. Графы в Maple. Задачи, алгоритмы, программы / М.Н.
Кирсанов.– М.: ФИЗМАТЛИТ, 2007. – 168 с.
7. Кристофидес, Н. Теория графов. Алгоритмический подход / Н. Кристофидес. – М.:Наука, 1990. – 432 с.
8. Кузнецов, О.П. Дискретная математика для инженера / О.П. Кузнецов. –
СПб: Издательство «Лань», 2007. – 400 с.
9. Оре, О. Графы и их применение / О. Оре. – М.: Мир, 1965 г. – 175 с.
10. Осипова, В.А. Основы дискретной математики / В.А. Осипова. – М.:
ФОРУМ: ИНФРА-М, 2006. –160 с.
11. Плотников, А.Д. Дискретная математика /А.Д. Плотников. – М.: Новое
знание, 2006. – 304 с.
12. Редькин, Н.П. Дискрегная математика / Н.П. Редькин. – СПб.: Издательство «Лань», 2003. – 96 с.
13. Сдвижков, О.А. Математика на компьютере: Maple 8 / О.А. Сдвижков. –
М.: СОЛДОН-Пресс, 2003. – 176 с.
14. Справочник по математике для экономистов / В.Е. Барбаумов, В.И. Ермаков, Н.Н. Кривенцова и др.; под ред. В.И. Ермакова. – М.: Высш. шк.,
1987. – 336 с.
15. Судоплатов, С.В. Дискретная математика / С.В. Судоплатов, Е.В. Овчинникова. – М.: ИНФРА-М; Новосибирск: Изд-во НГТУ, 2007. – 256 с.
16. Уилсон, Р. Введение в теорию графов / Р. Уилсон. – М.: Мир. 1977 г. – 208
с.,
17. Харари, Ф. Теория графов / Ф. Харари. – М.: Мир. 1973 г. – 301 с.
18. Шапорев, С.Д. Дискретная математика. Курс лекций и практических занятий / С.Д. Шапорев. – СПб.: БХВ-Петербург, 2007. – 400 с.
149
Приложение 1
Пакет символьной математики Maple для работы с графами
Долгое время задачи теории графов решались вручную. С появлением
компьютеров появилась возможность написания специальных программ на алгоритмических языках. Позднее появились пакеты аналитических вычислений
Mathematica, MATLAB, Mathcad и Maple, позволяющие выполнять аналитические символьные преобразования.
В программе Maple есть специализированная библиотека networks, составленная из операторов для работы с графами. Вызов пакета networks производится командой with(networks). Рассмотрим здесь его операторы, которые могут потребоваться для решения задач, описанных в данном пособии
(более подробно с пакетом networks можно ознакомиться в руководствах по
программе Maple):
● addedge([{1,2},[3,4]],G) – добавить в граф G ребра или дуги.
Ребра в неорграфе задаются как множества – с вершинами в фигурных скобках,
а дуги в орграфе – списком вершин в квадратных скобках. Если требуется задать вес дуги в орграфе, то дуги надо обозначать только квадратными скобками. Если вес можно не указывать, то для сокращения ввода две дуги, соединяющие вершины в разных направлениях, проще ввести как ребро;
● addvertex(seq(i,i=l..n),G) – добавить к графу G вершины
1,2,...,n. В опции weights можно в списке указать веса вершин. По
умолчанию веса нулевые;
● adjacency(G) – матрица смежности графа G. Данный оператор правильно работает в случае мультиграфов, но для псевдографов он непригоден.
Главная диагональ этой матрицы нулевая;
● allpairs(G) – матрица пар расстояний между вершинами графа G;
● arrivals(v,G) – множество ребер, входящих в вершину v
орграфа G;
● complement(G) – дополнение графа G;
● complete(n) – полный граф K n ;
● complete(n,m) – полный двудольный граф K n, m ;
150
● components(G) – список вершин в связных компонентах графа;
● connect({u,v},’weights’=L1,’names’=L2,’directed’,G)
– соединить две вершины – u и v. Можно указать вес, имя и выбрать орграф
(directed) или неорграф. Оператор позволяет соединить сразу несколько
вершин с одной, например connect(1,{2,3,4},G);
● connectivity(G) – число λ ( G ) реберной связности;
● contract(u,v,G) – совмещение вершин, или стягивание ребра, соединяющего вершины u и v графа G;
● counttrees(G) – вычисление количества остовов графа G;
● cycle(n) – циклический граф с n вершинами;
● delete(z,G) – удаление ребра или вершины z из графа G;
● departures(v,G) – множество ребер, выходящих из вершины v
орграфа G;
● diameter(G) – диаметр графа G;
● dodecahedron() – создание додекаэдра, т.е. однородного графа порядка 20 степени 3;
● draw(G) – рисунок графа G;
● draw3d(G) – трехмерное изображение графа G. Координаты вершин
принимаются в соответствии с собственными векторами матрицы смежности;
● duplicate() – создание копии графа. Изменение оригинала не влияет на копию;
● edges(G) – множество ребер графа G;
● ends(G) – множество пар концов ребер графа G (или ends(el,G) –
концы ребра el);
● fundcyc(e,G) – определение цикла из подмножества е ребер графа G.
Предполагается, что е содержит только один цикл;
151
● girth(G,scyc) – определение длины кратчайшего цикла в графе G
или возвращение «бесконечности», если циклов нет. Номера ребер цикла помещаются в переменную scyc;
● graph(V,U) – граф, заданный списком вершин V и ребер U;
● gsimp(G) – создание простого графа из псевдографа или мультиграфа G.
Удаление кратных ребер и петель;
● gunion(G,J,’SIMPLE’) – объединение двух графов. В полученном
графе множество вершин является объединением множеств вершин графов G и J.
Если опустить опцию SIMPLE, то в полученном графе допускаются кратные
ребра (мультиграф);
● head(el,G) – конец дуги el (направленного ребра) орграфа G;
● icosahedron – создание икосаэдра, т.е. однородного графа порядка
12 степени 5;
● incidence(G) – матрица инцидентности графа G (строки – вершины,
столбцы – ребра);
● incident(v,G,In) – множество ребер, инцидентных вершине v. В
орграфе можно уточнить: incident(v,G,In) — входящие дуги, incident(v,G,Out) — исходящие дуги;
● indegree(v,G) – полустепень захода вершины v;
● induce(Eset,G) – создание подграфа по данному множеству вершин или ребер графа G;
● isplanar(G) – проверка планарности графа G;
● maxdegree(G) – максимальная степень вершин графа G;
● mindegree(G) – минимальная степень вершин графа G;
● neighbors(v,G) – множество вершин графа G, соседних с вершиной v;
● new(G) – создание нового графа G;
152
● nops(edges(G)) – число ребер графа;
● octahedron() – создание октаэдра, т.е. однородного графа порядка 6
степени 4;
● outdegree(v,G) – полустепень исхода вершины v;
● petersen() – граф Петерсена, т.е. однородный граф порядка 10 степени 3;
● random(n) – создание случайного графа с n вершинами;
● shortpathtree(G,v) – выделение из графа G дерева минимальных
путей из вершины v;
● show(G) – информация о графе: названия вершин, ребер, таблица весов ребер и т.д.;
● shrink(vset,G,u) – стягивание множества вершин vset графа G
с образованием из них новой вершины (узла) u;
● span(eset,G) – определение множества ребер графа G, концы которых принадлежат множеству eset концов ребер графа G;
● spantree(G,s,w) – определение остова наименьшего веса графа G.
Корень дерева – в вершине s, суммарный вес остова – в переменной w;
● tail(el,G) – начало дуги el орграфа G;
● tetrahedron() – создание тетраэдра, т.е. однородного графа порядка
4 степени 3, или, что то же самое, полного графа K 4 ;
● vdegree(v,G) – степень вершины;
● vertices(G) – множество вершин графа G;
● void(n) – создание пустого графа с n вершинами. Возможно обращение
по
списку
вершин,
например
void({$1..n})
или
void({a,b,cl,c2}).
153
Приложение 2
Биографические сведения об ученых, работавших в области теории графов
Гамильтон, Уильям Роуан (William
Rowan Hamilton; 1806 –1865) – выдающийся
ирландский математик XIX века.
Гамильтон родился в Дублине, в семье
юриста. Из-за финансовых затруднений с трёх
лет его воспитывал дядя по отцу, Джеймс Гамильтон, викарий и учитель в городе Трим.
Уже в детстве мальчик проявил необыкновенные дарования. В 7 лет он знал древнееврейский язык; в 12 – под руководством дяди
Джеймса, хорошего лингвиста, знал уже 12
языков и среди них персидский, арабский и
санскрит. В 13 лет он написал руководство по
сирийской грамматике.
После языков настала пора увлечения математикой. Двумя годами раньше Гамильтону попался латинский перевод «Начал» Евклида, и он детально
изучил это сочинение; в 13 лет он прочел «Универсальную арифметику» Ньютона; в 16 лет – большую часть «Математических начал натуральной философии» Ньютона, в 17 лет начал изучение «Небесной механики» Лапласа.
В 1823 году поступил в Тринити-колледж в Дублине. Он показал столь
блестящие способности, что в 1827 году, ещё студентом, был назначен профессором астрономии в Дублинском университете и королевским астрономом Ирландии. Публикует ряд работ по геометрической оптике. В 1833 году женится
на Хелен Бэйли. Брак оказался не слишком удачным, и Гамильтон начал злоупотреблять алкоголем. В 1834 – 1835 годах появились классические работы по
гамильтоновой механике. В 1835 году вице-король Ирландии возвёл Гамильтона в достоинство баронета. В 1837 году избран президентом Королевской ирландской академии и членом-корреспондентом Петербургской академии наук.
В 1843 году открывает кватернионы и углубляется в их исследование.
Следующие 20 лет он посвятил их подробному исследованию, в ходе которых Гамильтон попутно ввёл понятие векторного поля и создал основы векторного анализа. Он открыл векторное произведение, предложил оператор «набла». На основе работ Гамильтона Гиббс и Хевисайд систематизировали векторный анализ. Интересно отметить, что оба главных открытия Гамильтона –
новая формулировка механики и кватернионы – сыграли существенную роль в
XX веке при возникновении квантовой механики.
Сочинения Гамильтона носят печать гениальности, и можно сказать, что
он далеко опередил своих современников.
154
Дейкстра, Эдсгер Вибе (Edsger Wybe
Dijkstra; 1930 – 2002) – выдающийся нидерландский учёный, идеи которого оказали огромное влияние на развитие компьютерной
индустрии.
Родился в Роттердаме, в семье учёных
(отец – химик, мать – математик). По окончании школы поступил на факультет теоретической физики Лейденского университета.
В 1951 году увлёкся программированием,
поступил на трёхнедельные компьютерные
курсы в Кембридже, с 1952 года работал
программистом в Математическом центре
Амстердама под руководством профессора
Ван Вейнгаардена (впоследствии – автора
одного из способов формального описания
грамматики формальных языков – так называемых двухуровневых грамматик
Ван Вейнгаардена). Уже в 1952 году принял решение окончательно специализироваться на программировании, но курс теоретической физики закончил. В
1956 году принял участие в разработке ЭВМ X1. Эта машина была создана
тремя энтузиастами за год. Именно для оптимизации разводки плат для X1 был
придуман алгоритм поиска кратчайшего пути на графе, известный как «алгоритм Дейкстры».
В 1958 – 1960 годах принимал участие в разработке языка программирования Алгол, в 1960-х – участвовал в создании ОС THE – первой операционной
системы, построенной в виде множества параллельно исполняющихся взаимодействующих процессов. Именно в процессе этой работы появились понятия
синхронизации процессов, идея семафора, а также была чётко осознана необходимость в структуризации процесса программирования и самих программ.
Длительное время работал в фирме Burroughs Corporation. В 1970-е годы
вместе с Чарльзом Хоаром и Никлаусом Виртом разработал основные положения ставшей классикой методологии разработки программ – структурного программирования. Будучи одним из авторов концепции структурного программирования, он проповедовал отказ от использования инструкции GOTO. В 1972
году Дейкстра стал лауреатом премии Тьюринга.
В последние годы жизни преподавал в США, в Техасском университете.
Дейкстра был активным писателем, его перу (он предпочитал авторучку
клавиатуре) принадлежит множество книг и статей, самыми известными из которых являются книги «Дисциплина программирования» и «Заметки по структурному программированию» и статья «О вреде оператора GOTO».
Дейкстра в своих статьях и книгах, помимо обсуждения специальных вопросов, последовательно отстаивал необходимость математического подхода к
программированию. Этот подход предполагал точное предварительное всесто-
155
роннее математическое описание задачи и способа её решения, формальное доказательство правильности выбранного алгоритма и последующую реализацию
алгоритма в виде максимально простой, структурированной программы, корректность которой должна быть формально доказана. По мнению Дейкстры,
господствующий в компьютерной индустрии подход к программированию как
к процессу достижения результата методом проб и ошибок («написать код –
протестировать – найти ошибки – исправить – протестировать – ...») порочен,
поскольку стимулирует программистов не думать над задачей, а писать код,
при этом совершенно не гарантирует корректность программы, которая не может быть доказана тестированием в принципе.
Дейкстра многократно предостерегал от попыток превратить разработку
программ в некий тривиальный процесс; по его мнению, программирование, в
сути своей, чрезвычайно сложная научная и инженерная деятельность и никакие новые методы и инструменты не смогут кардинально изменить это положение – они лишь освобождают программиста от части рутинной работы. Попытки же превратить программирование в простое занятие, доступное каждому,
обречены на провал.
Дирак, Габриэль Эндрю (Gabriel Andrew Dirac; 1925 – 1983) – математик, который, в основном, работал в области теории графов.
Габриэль Эндрю Дирак был пасынком Поля Дирака. Г. Дирак установил
достаточное условие того, что граф является гамильтоновым. Г. Дирак получил
ученую степень в 1952 в Лондонском университете, был профессором математики в Университете города Аархус (Дания).
Кирхгоф, Густав Роберт (Gustav Robert
Kirchhoff 1824 – 1887) – один из великих физиков XIX века.
Родился в Кенигсберге; с 1842 по 1846 гг.
изучал математику и физику в Кёнигсбергском
университете, а в 1847 году уже был приватдоцентом в Берлине. В 1850 – 1854 гг., в качестве экстраординарного профессора, читал
лекции в Бреславле, затем до 1874 года исполнял должность ординарного профессора в Гейдельберге; в 1875 году избран членом Берлинской академии, с 1862 года состоял членомкорреспондентом СПб. академии наук. Умер в
Берлине 17 октября 1887 года.
Кирхгоф, будучи прекрасным знатоком
математики, обладал в то же время редким
умением плодотворно прилагать свои знания к
решению труднейших вопросов математической физики, в области которой
156
преимущественно работал.
Уже первые его работы о распространении электричества по пластинкам
(1845 – 1847) послужили исходным пунктом для множества работ других учёных. Целый ряд последующих работ по электричеству был посвящен вопросам
распределения электричества на проводниках, разряда конденсаторов, течения
электричества по подводным кабелям и т.д. Особенно важна работа об индукции токов (1849), которая содержит описание способа определения электрического сопротивления проводников в абсолютной мере и два больших мемуара
об индуктированном магнетизме (1853 и 1876). Одновременно Кирхгоф обнародовал ряд замечательных работ по механике, относящихся главным образом
к теории деформации, равновесия и движения упругих тел.
Свои взгляды на основные принципы механики Кирхгоф изложил в весьма известных лекциях по механике, содержащих решение множества трудных
вопросов теории упругости и течения жидкости. Наибольшей известностью
пользуются работы Кирхгофа по радиации (излучению). Ряд опытных (совместно со знаменитым химиком Бунзеном) и теоретических работ по этому вопросу (1858 – 1860) привели к блестящему открытию обращения линий спектра, к объяснению Фрауенгоферовых линий и к созданию целого метода, чрезвычайно важного по своим приложениям в физике, химии и астрономии, спектрального анализа. Затем следовал целый ряд работ по термодинамике паров и
растворов и по оптике. Последние исследования Кирхгофа касались изменений
формы тел под влиянием магнитных и электрических сил (1884 – 1885).
Краскал, Джозеф Бернард, младший (Joseph Bernard Kruskal, Jr.) –
американский математик, специалист по статистике и психометрии.
Краскал родился в 1928 году в Нью-Йорке в семье успешного торговца
мехом Джозефа Б. Краскала, старшего. Краскал был студентом Чикагского и
Принстонского университетов, где в 1954 году завершил работу над диссертацией (номинально под руководством Альберта Такера (Albert W. Tucker) и
Роджера Линдона (Roger Lyndon), но фактически под руководством Пауля Эрдоса (Paul Erdős), с которым у него было всего пару коротких бесед.
Краскал – член Американской Статистической Ассоциации, бывший президент Психометрического Общества и бывший президент Североамериканского Классификационного Общества. Краскал внес конструктивный вклад в постановку задачи многомерного масштабирования в статистике. В компьютерных науках его наиболее известной работой является алгоритм Краскала для
построения остова минимального веса. В комбинаторике он известен теоремой
Краскала о дереве (1960), интересной с точки зрения математической логики,
т.к. ее можно доказать только неконструктивно. У Краскала также имеются работы по лингвистике и в экспериментальном лексикостатистическом изучении
индоевропейских языков совместно с лингвистами Исидорой Дайен (Isidore
Dyen) и Полом Блеком (Paul Black).
157
Куратовский, Казимеж (Kuratowski;
1896 – 1980) – польский математик.
Куратовский родился в Варшаве. Окончил университеты в Глазго и Варшаве. С 1921
– доцент Варшавского университета, с 1927 –
профессор Львовского политехнического института, с 1934 – профессор Варшавского университета и директор института математики в
Варшаве, с 1952 – член и вице-президент
Польской АН, с 1966 – иностранный член АН
СССР. Основные труды посвящены теории
множеств, а также топологии, теории функций
действительного переменного, математической логике, теории графов и др.
Особенно интересные результаты получил Куратовский в т.н. дескриптивной теории множеств. В топологии предложил аксиоматику операции замыкания (оператор замыкания Куратовского), теорию неприводимых континуумов, получил ряд важных результатов в теории размерности и др. Куратовский
возглавлял польскую школу в области топологии и теории множеств. Он являлся редактором известного польского журнала, посвященного теоретикомножественным отделам математики. Удостоен многих премий, медали Больцано.
Кэли, Артур (другие варианты написания фамилии Кейли, Кэйлей; англ. Arthur
Cayley; 1821 – 1895) – английский математик.
Артур Кэли родился в Ричмонде (Лондон). Первые восемь лет провел в СанктПетербурге. В 1829 году его родители переехали в БлэкХэлс (вблизи Лондона). Ещё когда Кэли был ребенком, он решал сложные
математические задачи ради забавы. В 14 лет
он пошел в лондонскую Королевскую школу.
Школьный учитель увидел в мальчике гения и
посоветовал отцу готовить сына к поступлению в Кембриджский университет.
В необыкновенно раннем возрасте (17 лет) Кэли поступил в Тринитиколледж Кембриджского университета. В возрасте 20 лет Кэли передал Кембриджскому математическому журналу три рукописи на темы, навеянные чтением Mecanique analytique Лагранжа и некоторыми работами Лапласа. Кэли за158
вершил свое образование, выиграв приз Senior Wrangler и первый приз Смита.
Его следующим шагом было получение степени Master of Arts (MA degree) и
стипендии. В Кембридже Кэли еще пребывал в течении 4 лет. В это время он
взял себе несколько учеников, но его основной работой была подготовка 28
статей для математического журнала.
В связи с тем, что стипендия не вечна, было необходимо выбирать профессию. Кэли выбрал профессию адвоката, и в возрасте 25 лет он сдал адвокатский экзамен и начал работать в лондонском Доме Линкольна. В течение этого
периода его жизни, длящегося примерно 14 лет, Кэли выпустил от 200 до 300
научных работ.
Когда Кэли было 42 года, он был избран на должность профессора Кембриджского университета. Кэли оставил доходную практику адвоката ради
скромной зарплаты, но он сам никогда об этом не жалел. Должность профессора позволила ему полностью заняться любимым делом.
Кэли – один из самых плодовитых учёных XIX века, который написал более 700 работ. В 1882 Лондонское королевское общество присудило ему медаль
Коплэя. Большая часть его работ относится к линейной алгебре, дифференциальным уравнениям и эллиптическим функциям. В результате он смог доказать
теорему Кэли-Гамильтона о том, что каждая квадратная матрица является корнем своего характеристического многочлена. Он был первым, кто сформулировал определение группы в том виде, в котором она определена сегодня – множество с бинарной операцией, удовлетворяющей определенным законам. Прежде же, когда математики говорили о группе, они подразумевали группу перестановок.
Оре, Ойстин (Oystein Ore; 1899 –
1968) – норвежский математик.
Ойстин Оре родился в городе Осло (Норвегия). Когда Оре учился в школе, он заинтересовался математикой. В 1918 году окончил
школу и продолжил изучение математики в
университете города Осло. В 1922 году Оре
окончил университет, получив степень магистра по математике. В 1924 году университет Осло присвоил ему степень доктора наук за работу «Zur Theorie der algebraischen Körper», выполненную под руководством Торальфа Сколема. Оре также учился в Стокгольмском университете, где изучал новый подход Эмми Нёзер к абстрактной алгебре. Кроме того, он являлся членом института Миттага-Лефлера в
Швеции.
В 1925 г был назначен ассистентом по исследованиям в Университете
159
Осло. В 1927 г. Оре получил должность доцента математики в Йельском университете (США), адъюнкт-профессора в 1928 и профессора – в 1929. В 1931 г.
становится стерлинговским профессором (высший академический уровень в
Йеле) и оставался им до выхода на пенсию в 1968 году.
Во время второй мировой войны был активистом движения «Американская помощь Норвегии» и «Свободная Норвегия». В благодарность за помощь,
оказанную своей родной стране в годы войны, был награжден рыцарским орденом Святого Олафа.
Оре известен своими работами по теории связей Галуа, а особенно по
теории графов, которой он занимался до конца жизни. Оре живо интересовался
историей математики и был автором книг, таких как биографии Кардано и
Нильса Хенрика Абеля.
Оре является автором около 120 математических статей и 10 книг.
Петерсен, Джулиус Петер Кристиан (Julius Peter Christian Petersen;
1839 – 1910) – датский математик.
Петерсен родился в городе Соро (Зеландия). Интересы Петерсена в математике были весьма обширны (геометрия, теория функций, теория чисел, математическая физика, математическая экономика, криптография и теория графов).
В 1880 он опубликовал систематическую трактовку геометрических построений (с помощью линейки и циркуля). В 1898 он дал знаменитый контрпример
«Граф Петерсена» к теореме Тата об 1-факторизуемости 3-регулярного графа.
К 150-летию со дня рождения Петерсена был посвящен специальный выпуск журнала «Дискретная математика», в котором можно найти его очень
подробную биографию.
Понтрягин,
Лев
Семёнович
(1908 – 1988) – советский математик,
академик АН СССР.
В 14 лет потерял зрение от несчастного случая. Окончил Московский
университет (1929). С 1939 заведующий
отделом Математического института им.
В.А. Стеклова АН СССР, одновременно
с 1935 года профессор МГУ. С 1958 академик АН СССР. В топологии открыл
общий закон двойственности и в связи с
этим создал теорию характеров непрерывных групп; получил ряд результатов
в теории гомотопий (классы Понтрягина). В теории колебаний главные результаты относятся к асимптотике релаксационных колебаний. В теории
160
управления – создатель математической теории оптимальных процессов, в основе которой лежит т.н. принцип максимума Понтрягина; имеет фундаментальные результаты по дифференциальным играм. Работы школы Понтрягина оказали большое влияние на развитие теории управления и вариационного исчисления во всём мире.
Понтрягин написал мемуары, в которых дал оценки многим учёным и событиям, свидетелем и участником которых он был.
Понтрягин имеет следующие почётные звания и награды:
● почётный член Лондонского математического общества (1953);
● почётный член Международной академии «Астронавтика» (1966);
● вице-президент Международного математического союза (в 1970-74);
● почётный член АН ВНР (1972);
● Сталинская премия (1941);
● Ленинская премия (1962);
● три ордена Ленина;
● Герой Социалистического Труда (1969).
Прим, Роберт Клэй (Robert Clay Prim) – американский математик и
специалист по компьютерным наукам.
Родился в 1921 в городе Суитуотер, штат Техас. В 1941 Прим получил
степень бакалавра по электротехнике в Принстонском Университете. Позже, в
1949, он получил степень доктора наук по математике. С 1948 по 1949 Роберт
Прим работал научным сотрудником в Принстоне.
Во время второй мировой войны Прим работал инженером в «General
Electric». С 1944 по 1949 его наняли на работу в Американскую лабораторию
морской артиллерии в качестве инженера, а затем математика. С 1958 по 1961
Прим служил директором математических исследований в «Bell Laboratories».
Там он разработал алгоритм Прима. Во время работы в «Bell Laboratories» одним из сотрудников Роберта Прима был Джозеф Краскал. После «Bell
Laboratories» Прим стал вице-президентом по исследованиям в «Sandia National
Laboratories».
Эйлер, Леонард (Leonhard Euler; 1707 – 1783) – выдающийся
математик, внёсший значительный вклад в развитие математики, а также
механики, физики, астрономии и ряда прикладных наук.
Эйлер – самый продуктивный математик в истории, автор более чем 800
работ по математическому анализу, дифференциальной геометрии, теории чисел, приближённым вычислениям, небесной механике, математической физике,
оптике, баллистике, кораблестроению, теории музыки и др. Многие его работы
оказали значительное влияние на развитие науки. Почти полжизни Эйлер провёл в России, где внес существенный вклад в становление российской науки.
161
Леонард Эйлер родился в 1707 году
в семье базельского пастора, друга семьи
Бернулли. Рано обнаружил математические способности. Начальное обучение
получил дома под руководством отца,
учившегося некогда математике у Якоба
Бернулли. Пастор готовил старшего сына
к духовной карьере, однако занимался с
ним и математикой – как в качестве развлечения, так и для развития логического
мышления. Одновременно с обучением в
гимназии мальчик увлечённо занимался
математикой под руководством Якоба
Бернулли, а в последние гимназические
годы посещал университетские лекции
младшего брата Якоба, Иоганна Бернулли.
В 1720 году 13-летний Леонард Эй- Портрет 1756 года, выполненный
лер стал студентом факультета искусств
Эммануэлем Хандманном
Базельского университета. Но любовь к
математике направила Леонарда по иному пути. Вскоре способный мальчик
обратил на себя внимание профессора Иоганна Бернулли. Он передал одарённому студенту математические статьи для изучения и пригласил приходить к
нему домой по субботам, чтобы совместно разбирать непонятное. В доме своего учителя Эйлер познакомился и подружился с сыновьями Бернулли – Даниилом и Николаем, также увлечённо занимавшимися математикой.
В 1724 году 17-летний Леонард Эйлер произнёс на латыни речь о сравнении философских воззрений Декарта и Ньютона и был удостоен учёной степени магистра.
В последующие два года юный Эйлер написал несколько научных работ.
Одна из них, «Диссертация по физике о звуке», получившая благоприятный отзыв, была представлена на конкурс для замещения неожиданно освободившейся в Базельском университете должности профессора физики (1725). Но, несмотря на положительный отзыв, 19-летнего Эйлера сочли слишком юным,
чтобы включить в число кандидатов на профессорскую кафедру.
Надо отметить, что число научных вакансий в Швейцарии было совсем
невелико. Поэтому братья Даниил и Николай Бернулли уехали в далёкую Россию, где как раз шла организация Академии наук; они обещали похлопотать
там и о месте для Эйлера. В начале зимы 1726 года по рекомендации братьев
Бернулли Эйлер был приглашён работать в Санкт-Петербург. В 1731 – 1741 и
начиная с 1766 года был академиком Петербургской Академии Наук (в 1741 –
1766 годах работал в Берлине, оставаясь почётным членом Петербургской Академии). Хорошо знал русский язык, часть своих сочинений (особенно учебни162
ки) публиковал на русском. Первые русские академики по математике
(С.К. Котельников) и по астрономии (С.Я. Румовский) были учениками Эйлера.
Эйлер активно трудился до последних дней. В сентябре 1783 года 76летний учёный стал ощущать головные боли и слабость. 7 (18) сентября он
скончался от кровоизлияния в мозг. Его похоронили на Смоленском лютеранском кладбище в Петербурге. Надпись на памятнике гласила: «Здесь покоятся
бренные останки мудрого, справедливого, знаменитого Леонарда Эйлера».
Эйлер оставил важнейшие труды по самым различным отраслям математики, механики, физики, астрономии и по ряду прикладных наук. С точки зрения математики, XVIII век – это век Эйлера. Если до него достижения в области математики были разрозненны и не всегда согласованны, то Эйлер впервые
увязал анализ, алгебру, тригонометрию, теорию чисел и др. дисциплины в единую систему и добавил немало собственных открытий. Значительная часть математики преподаётся с тех пор «по Эйлеру».
Эйлер обогатил математику общей теорией рядов, удивительной по красоте «формулой Эйлера», операцией сравнения по целому модулю, полной теорией непрерывных дробей, аналитическим фундаментом механики, многочисленными приёмами интегрирования и решения дифференциальных уравнений,
числом е, обозначением i для мнимой единицы, гамма-функцией с её окружением и многим другим.
По существу, именно он создал несколько новых математических дисциплин – теорию чисел, вариационное исчисление, теорию комплексных функций, дифференциальную геометрию поверхностей, специальные функции. Другие области его трудов – диофантов анализ, астрономия, оптика, акустика, статистика и т.д. Познания Эйлера были энциклопедичны: кроме математики, он
глубоко изучал ботанику, медицину, химию, теорию музыки, множество европейских и древних языков.
Биографы отмечают, что Эйлер был виртуозным алгоритмистом. Он неизменно старался довести свои открытия до уровня конкретных вычислительных методов.
П.Л. Чебышёв писал: «Эйлером было положено начало всех изысканий,
составляющих общую теорию чисел». Большинство математиков XVIII века
занимались развитием анализа, но Эйлер пронёс увлечение древней арифметикой через всю свою жизнь. Благодаря его трудам интерес к теории чисел к концу века возродился.
Эйлер продолжил исследования Ферма, ранее высказавшего ряд разрозненных гипотез о натуральных числах (под влиянием Диофанта), и строго доказал эти гипотезы, значительно обобщил и объединил их в содержательную теорию чисел. Он ввёл в математику исключительно важную «функцию Эйлера» и
сформулировал с её помощью одноименную теорему. Создал теорию сравнений и квадратичных вычетов, для которых указал критерий Эйлера.
n
Он опроверг гипотезу Ферма о том, что все числа вида Fn = 22 + 1 – про163
стые; оказалось, что F5 делится на 641.
Доказал утверждение Ферма о представлении нечётного простого числа в
виде суммы двух квадратов.
Эйлер доказал Великую теорему Ферма для n = 3 и n = 4 , создал полную
теорию непрерывных дробей, исследовал различные классы диофантовых
уравнений, теорию разбиений чисел на слагаемые.
Он открыл, что в теории чисел возможно применение методов математического анализа, положив начало аналитической теории чисел. В основе её лежат тождество Эйлера и общий метод производящих функций.
Эйлер ввёл понятие первообразного корня и выдвинул гипотезу, что для
любого простого числа р существует первообразный корень по модулю р; доказать это он не сумел, позднее теорему доказали Лежандр и Гаусс. Большое значение в теории имела другая гипотеза Эйлера – квадратичный закон взаимности, также доказанный Гауссом.
Одна из главных заслуг Эйлера перед наукой – монография «Введение в
анализ бесконечно малых» (1748). В 1755 году выходит дополненное «Дифференциальное исчисление», а в 1768 – 1770 годах – три тома «Интегрального исчисления». В совокупности это фундаментальный, хорошо иллюстрированный
примерами курс, с продуманной терминологией и символикой, откуда многое
перешло и в современные учебники.
Основание натуральных логарифмов было известно ещё со времён Непера и Якоба Бернулли, однако Эйлер дал настолько глубокое исследование этой
важнейшей константы, что с тех пор она носит его имя. Другая исследованная
им константа – постоянная Эйлера-Маскерони.
Он делит с Лагранжем честь открытия вариационного исчисления, выписав уравнения Эйлера-Лагранжа для общей вариационной задачи. В 1744 году
Эйлер опубликовал первую книгу по вариационному исчислению («Метод нахождения кривых, обладающих свойствами максимума либо минимума»).
Эйлер значительно продвинул теорию рядов и распространил её на комплексную область, получив при этом знаменитую формулу Эйлера. Большое
впечатление на математический мир произвели ряды, впервые просуммированные Эйлером, в том числе не поддававшийся до него никому ряд обратных
квадратов:
1
1 ⎞ π2
⎛1 1
lim ⎜ 2 + 2 + 2 + … + 2 ⎟ =
.
n →∞ ⎝ 1
2
3
n ⎠ 6
Современное определение показательной, логарифмической и тригонометрических функций – тоже его заслуга, так же как их символика и обобщение
на комплексный случай. Формулы, часто именуемые в учебниках «условия
Коши-Римана»,
более
правильно
было
бы
назвать
«условиями
Даламбера-Эйлера».
164
Он первый развил систематическую
теорию интегрирования и используемые в
ней технические приёмы, нашёл важные
классы интегрируемых дифференциальных
уравнений. Открыл эйлеровы интегралы –
ценные классы специальных функций, возникающие при интегрировании: бетафункция и гамма-функция Эйлера. Одновременно с Клеро вывел условия интегрируемости линейных дифференциальных
форм от двух или трёх переменных (1739).
Первый ввёл двойные интегралы. Получил серьёзные результаты в теории эллиптических функций, в том числе первые теоремы сложения.
С современной точки зрения, действия
Эйлера с бесконечными рядами не всегда
могут считаться корректными (обоснование
Первая книга по
анализа было проведено лишь полвека спустя), но феноменальная математическая ин- вариационному исчислению
туиция практически всегда подсказывала
ему правильный результат.
В элементарной геометрии Эйлер обнаружил несколько фактов, не замеченных Евклидом:
● Три высоты треугольника пересекаются в одной точке (ортоцентре).
● В треугольнике ортоцентр, центр описанной окружности и центр тяжести лежат на одной прямой – «прямой Эйлера».
● Основания трёх высот произвольного треугольника, середины трёх его
сторон и середины трёх отрезков, соединяющих его вершины с ортоцентром,
лежат все на одной окружности (окружности Эйлера).
● Число вершин (В), граней (Г) и рёбер (Р) у любого выпуклого многогранника связаны простой формулой: B + Г = Р + 2 .
Второй том «Введения в анализ бесконечно малых» (1748) – это первый в
мире учебник по аналитической геометрии и основам дифференциальной геометрии. Термин «аффинные преобразования» впервые введён в этой книге вместе с теорией таких преобразований.
В 1760 году вышли фундаментальные «Исследования о кривизне поверхностей». Эйлер обнаружил, что в каждой точке гладкой поверхности имеются
два нормальных сечения с минимальным и максимальным радиусами кривизны
и плоскости их взаимно перпендикулярны. Вывел формулу связи кривизны сечения поверхности с главными кривизнами.
1771 год: опубликовано сочинение «О телах, поверхность которых можно
развернуть на плоскость». В этой работе введено понятие развёртывающейся
165
поверхности, то есть поверхности, которая может быть наложена на плоскость
без складок и разрывов. Эйлер, однако, даёт здесь вполне общую теорию метрики, от которой зависит вся внутренняя геометрия поверхности. Позже исследование метрики становится у него основным инструментом теории поверхностей.
Эйлер много внимания уделял
1 48 31 50 33 16 63 18
представлению натуральных чисел в
виде суммы специального вида и
30 51 46 3 62 19 14 35
сформулировал ряд теорем для подсчёта числа разбиений.
47 2 49 32 15 34 17 64
Он исследовал алгоритмы по52 29 4 45 20 61 36 13
строения магических квадратов методом непрерывного хода шахматного
5 44 25 56 9 40 21 60
коня (т.е. квадратов, у которых сумма
чисел в каждой строке и в каждом
28 53 8 41 24 57 12 37
столбце одинаковы и равны друг другу). Первые пять ходов на рис. 104
43 6 55 26 39 10 59 22
заштрихованы.
54 27 42 7 58 23 38 11
При решении комбинаторных
задач он глубоко изучил свойства сочетаний и перестановок, см. числа Рис. 104. Магический квадрат Эйлера
Эйлера I рода.
Теория графов началась с решения Эйлером задачи о семи мостах Кенигсберга.
Метод ломаных Эйлера, один из простейших методов приближённого
решения дифференциальных уравнений, широко применяется до наших дней.
Множество работ Эйлера посвящено математической физике: механике,
гидродинамике, акустике и др. В 1736 году вышел трактат «Механика, или наука о движении, в аналитическом изложении», знаменующий новый этап в развитии этой древней науки. 29-летний Эйлер отказался от традиционного геометрического подхода к механике и подвёл под неё строгий аналитический
фундамент. По существу с этого момента механика становится прикладной математической дисциплиной.
В 1755 году публикуются «Общие принципы движения жидкостей», в которых положено начало теоретической гидродинамике. Выведены основные
уравнения гидродинамики (уравнение Эйлера) для жидкости без вязкости. Разобраны решения системы для разных частных случаев.
В 1765 году в книге «Теория движения твёрдых тел» Эйлер математически описал кинематику твёрдого тела конечных размеров (до него исследовалось в основном движение точки). Его имя также носят кинематическая формула распределения скоростей в твёрдом теле, уравнения (Эйлера-Пуассона) динамики твёрдого тела, важный случай интегрируемости в динамике твёрдого
тела. Эйлер обобщил принцип наименьшего действия, довольно путано изло166
женный Мопертюи, и указал на его основополагающее значение в механике
К сожалению, он не раскрыл вариационный характер этого принципа, но
всё же привлёк к нему внимание физиков, которые позднее выяснили его фундаментальную роль в природе.
Эйлер много работал в области небесной механики. Он заложил основу
теории возмущений, позднее завершённой Лапласом, и разработал очень точную теорию движения Луны. Эта теория оказалась пригодной для решения насущной задачи определения долготы на море, и английское Адмиралтейство
выплатило за неё Эйлеру специальную премию.
Эйлер исследовал поле тяготения не только сферических, но и эллипсоидальных тел, что представляло собой существенный шаг вперёд.
В 1757 году Эйлер впервые в истории нашёл формулы для определения
критической нагрузки при сжатии упругого стержня. Однако в те годы эти
формулы не могли найти практического применения.
Почти сто лет спустя, когда во многих странах, и прежде всего в Англии,
стали строить железные дороги, потребовалось рассчитать прочность железнодорожных мостов. Модель Эйлера принесла практическую пользу в проведении
экспериментов.
Полное собрание сочинений Эйлера, издаваемое с 1909 года Швейцарским обществом естествоиспытателей, до сих пор не завершено; планируется
выпуск 75 томов, из них вышло 72. Восемь дополнительных томов будут посвящены научной переписке Эйлера (свыше 3000 писем).
В 1907 году российские и многие другие учёные отметили 200-летие великого математика. В канун его 300-летия (2007) в Петербурге состоялся Международный юбилейный форум и был снят кинофильм о жизни Эйлера. Центробанк РФ выпустил памятную монету в ознаменование этого события. Портрет Эйлера помещался на швейцарскую 10-франковую банкноту (6-я серия) и
на почтовые марки Швейцарии, России и Германии.
167
Предметный указатель
– геометрический, 12
– Давида, 24
– двудольный, 36
– додекаэдра, 71
– конечный, 8
– кубический, 35
– неориентированный, 9
– неразделимый, 62
– однородный, 34
– ориентированный, 9
– перенумерованный, 33
– Петерсена, 35
– планарный, 37
– плоский, 37
– полный, 31
– двудольный, 36
– помеченный, 33
– Понтрягина-Куратовского, 37, 38
– простой, 11
– пустой, 11
– регулярный, 34
– сепарабельный, 62
– смешанный, 11
– тривиальный, 11
– эйлеров, 68
Графы
– гомеоморфные, 38
– изоморфные, 17
Гуйя-Ури теорема, 72
А
Алгоритм
– ближайшего соседа, 85, 88, 90
– Дейкстры, 46
– Краскала, 85
– нахождения кратчайшего пути, 45
– правильной нумерации вершин, 96
– Прима, 85, 88
– Флери, 69
Б
Булева сумма, 28
В
Вершина, 7
– висячая, 14
– внутренняя, 39
– изолированная, 14
– источник, 56
– конечная, 9
– концевая, 10
– начальная, 9
– периферийная, 63
– промежуточная, 39
– типа K , 75
– центральная, 64
Вершины
– достижимые, 56
– смежные, 10
Вес
– вершины, 33
– ребра, 32
Ветвь дерева, 76, 77
Д
Дерево, 73
– звёздное, 73
– корневое, 75
– – ориентированное, 76
– – неориентированное, 75, 76
– покрывающее, 78
– последовательное, 73
– экстремальное, 85
Диаметр графа, 63
Г
Граф, 8
– абстрактный, 12
– бесконечный, 8
– взвешенный, 33
– гамильтонов, 71
168
Дирака теорема, 72
Длина пути, 46
Додекаэдр, 35, 70
Дополнение графа, 23
Дуга, 9
– заходящая в вершину, 9
– исходящая из вершины, 9
З
Задача
– о кенигсбергских мостах, 7, 13
– о коммивояжере, 72, 90
– о кратчайшем пути, 45
– об остове наименьшего веса, 85
Звено, 9
И
Изображение абстрактного графа, 13
Изоморфизм, 17
Икосаэдр, 35
Инцидентность, 10
– отрицательная, 10
– положительная, 10
Исток, 16
К
Кирхгофа теорема, 78
Компонента
– связности, 55
– орграфа сильная, 57
Контур, 40
– простой, 41
Корень дерева, 75
Кратность вершин, 14
Кратчайший путь, 45
Кэли теорема, 73
Л
Лес, 73
Лист, 76
М
Маршрут, 39
– заданной длины, 41
– замкнутый, 39
– незамкнутый, 39
– нетривиальный, 40
– остовный, 40
Матрица
– весов, 33
– достижимости, 57
– инцидентности, 18
– Кирхгофа, 78
– контрдостижимости, 57
– расстояний, 65
– связности, 57
– смежности, 20
Метка
– временная, 47
– постоянная, 47
Множество
– вершин, 8
– ребер, 8
Мост, 62
Мультиграф, 11
Н
Надграф, 23
Неорграф, 9
Носитель графа, 8
Нуль-граф, 11
Нуль-маршрут, 40
Нумерация вершин правильная, 94
О
Объединение графов, 24
Обходы
– вершин, 70
– рёбер, 68
Октаэдр, 35
169
Орграф, 9
– несвязный, 56
– односторонне связный, 56
– односторонний, 56
– полугамильтоновый, 72
– сильно связный, 56
– сильный, 56
– слабо связный, 56
– слабый, 56
Оре теорема, 72
Основание орграфа, 10
Остов
– несвязного графа, 82
– орграфа, 79
– фиктивная, 96
Радиус графа, 63
Разборка графа, 23
Расстояние в графе, 63
Реализация геометрическая графа, 17
Ребра, 8
– кратные, 9
– параллельные, 9
– смежные, 10
Резерв времени
– работы
– – полный, 100
– – свободный, 100, 101
– события, 99
П
С
Пара вершин
Свершение события, 99
– неупорядоченная, 8, 9
Связность графов
– упорядоченная, 8
– неориентированных, 55
Паросочетание, 34
– ориентированных, 55
Пересечение графов, 26
Сетевое планирование, 93
Петля, 9
Сетевой график, 93
Планарность графов, 37
Сеть, 33
Подграф, 23
– сборки, 77
– остовный, 23
Сигнатура графа, 8
Полупуть, 56
Симметрическая разность графов, 25
Полустепень
Смежность, 10
– захода вершины, 16
Событие, 93
– исхода вершины, 15
– завершающее, 93
Понтрягина-Куратовского теорема, 38 – исходное, 93
Порядок графа, 8
– критическое, 98
Прадерево, 76
Список ребер, 10
Простая кривая, 12
Срок
Псевдограф, 11
– критический, 98
Путь, 39
– поздний
– критический, 98
– – начала работ, 100
– полный, 96
– – окончания работ, 100
– простой, 39
– – свершения события, 99
– составной, 39
– ранний
– – начала работ, 100
– – окончания работ, 100
Р
– – свершения события, 99
Работа, 93
– критическая, 98
170
Ствол дерева, 76
Степень вершины, 14
Сток, 16
– сборки, 77
Суграф, 23
Цикл, 40
– гамильтонов, 71
– простой, 41
– эйлеров, 68
Ч
Т
Теорема
– Гуйя-Ури, 72
– Дирака, 72
– Кирхгофа, 78
– Кэли, 73
– Оре, 72
– Понтрягина-Куратовского, 38
– Эйлера, 68
– – о рукопожатиях, 15
Тетраэдр, 34
Точка
– конечная, 39
– начальная, 39
– сочленения, 61
Турнир, 31
Часть графа, 23
Число
– вершинной связности, 61
– рёберной связности, 61
– цикломатическое, 82
Э
Эйлера теорема, 15, 68
Эксцентриситет вершины, 63
У
Удаление
– вершины, 23
– ребра, 23
Укладка графа, 37
Х
Хорда, 77
Ц
Центр
– графа, 64
– дерева, 75
Цепь, 39
– гамильтонова, 71
– диаметральная, 63
– простая, 39
– составная, 39
– эйлерова, 68
171
Учебное издание
СЕРГЕЙ МИХАЙЛОВИЧ АЛЕЙНИКОВ
ВИТАЛИЙ ВАЛЕРЬЕВИЧ ГОРЯЙНОВ
ОСНОВЫ ТЕОРИИ ГРАФОВ
Учебное пособие
для студентов, обучающихся по специальности 270115
«Экспертиза и управление недвижимостью»
Редактор Аграновская Н.Н.
Компьютерный набор и верстка Горяйнова В.В.
Оформление обложки Алейникова С.М.,
Горяйнова В.В., Танкеева А.С.
Подписано в печать 29.06.2009. Формат 60 х 84 1/16. Уч.–изд. л. 10,8.
Усл. печ. л. 10,9.Бумага писчая. Тираж 230 экз. Заказ № 386.
Отпечатано: отдел оперативной полиграфии Воронежского
государственного архитектурно–строительного университета
394006 Воронеж, ул. 20-летия Октября, 84
172
Документ
Категория
Без категории
Просмотров
21
Размер файла
1 812 Кб
Теги
основы, 278, графов, теория, алейников
1/--страниц
Пожаловаться на содержимое документа