Вы находитесь на странице: 1из 63

МИНИСТЕРСТВО ТРАНСПОРТА РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ


ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

УЛЬЯНОВСКОЕ ВЫСШЕЕ АВИАЦИОННОЕ УЧИЛИЩЕ


ГРАЖДАНСКОЙ АВИАЦИИ (ИНСТИТУТ)

ТЕОРИЯ ГРАФОВ И СЕТЕЙ


ПРИ МОДЕЛИРОВАНИИ П Р О Ц Е С С О В УВД

Учебное пособие

Ульяновск 2009
ББК В176я7 + О580.3я7
Т 33

Теория графов и сетей при моделировании процессов УВД : учеб. пособие /


сост. В. А. Карнаухов. – Ульяновск : УВАУ ГА(И), 2009. − 63 с.

Содержит основные положения теории графов и сетей, перечислены спосо-


бы представления графов в памяти компьютера, необходимые для решения за-
дач методами теории графов при помощи компьютерных технологий.
Изложено понятие связности в графах, орграфах, представлен теоретиче-
ский материал о потоках в сетях, приведены алгоритмы нахождения кратчай-
ших путей, алгоритм нахождения максимального потока, используемые при
решении задач, которые находят свое практическое применение в ходе процес-
сов планирования воздушного движения.
Разработано в соответствии с программой учебной дисциплины «Теория УВД».
Предназначено для курсантов и студентов заочной формы обучения специа-
лизации 160505.65.01 – Управление воздушным движением.
Печатается по решению Редсовета училища.

© Ульяновск, УВАУ ГА(И), 2009


ОГЛАВЛЕНИЕ
Введение.........................................................................................................................4
Глава 1. Основные положения теории графов...........................................................6
1.1. Основное определение......................................................................................8
1.2. Орграфы, псевдографы, мультиграфы и гиперграфы..................................10
1.3. Смежность........................................................................................................11
1.4. Изоморфизм графов........................................................................................ 11
1.5. Элементы графов..............................................................................................12
1.6. Виды графов.....................................................................................................16
1.7. Графы и отношения.........................................................................................18
1.8. Способы представления графов в памяти компьютера............................. 20
Глава 2. Связность графов.........................................................................................27
2.1. Объединение графов и компоненты связности............................................27
2.2. Вершинная и реберная связность.................................................................. 28
2.3. Непересекающиеся цепи и разделяющие множества............................... 29
2.4. Теорема Менгера.............................................................................................30
2.5. Теорема Холла.................................................................................................33
2.6. Связность в орграфах......................................................................................34
2.7. Алгоритмы нахождения кратчайших путей................................................. 37
Глава 3. Транспортные сети.......................................................................................46
3.1. Моделирование процессов планирования воздушного движения............. 46
3.2. Потоки в сетях..................................................................................................52
Библиографический список.......................................................................................59
Приложение.................................................................................................................60
В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

ВВЕДЕНИЕ

Основная цель системы организации воздушного движения (ОВД) – наибо-


лее эффективное использование воздушного пространства. В поиске новых
условий функционирования систем, повышающих безопасность и экономич-
ность, широко исследуются процессы в системе ОВД. Поскольку она является
системой жизнеобеспечения и ее исследование существенно затруднено, при-
меняют моделирование – распространенный метод исследования процессов и
систем. Модели обладают подобием свойств реальных систем и процессов и
отражают определенные количественные соотношения, имеющиеся в реальных
системах.
Построение модели, отражающей совокупность всех свойств объекта-
оригинала, не имеет смысла, т. к. по сложности такая модель не будет уступать
реальной системе, а это значит, что исследование на ней также сложно. В этом
случае необходимы модели, отличающиеся уровнем абстрактного описания
процессов и полнотой используемых соотношений. При исследовании систем
применяют три вида моделей: блок-схемы или графы, математические и физи-
ческие модели. Блок-схемы и графы называют иконографическими моделями.
Их используют для представления структуры систем и соответствующих ей
функциональных взаимодействий. Например, блок-схема совокупности конту-
ров УВД: «диспетчер – радиолокатор, воздушное судно – пилот, радиоперего-
ворное устройство – диспетчер». На практике приходится исследовать процес-
сы в нескольких простейших контурах одновременно, в этом случае целесооб-
разно рассматривать процессы в системе ОВД не по отношению к отдельному
ВС, а по отношению к потокам.
Предметом исследования являются процессы, характеризующиеся степенью
полноты загруженности зоны, задержками ВС или степенью возможных отка-
зов. Они могут быть представлены в виде количественных характеристик, поз-

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 4


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

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


для исследования. При этом воздушное пространство (зону УВД) или отдель-
ные элементы, между которыми происходит движение ВС, удобно представить
в виде сети маршрутов или связей. Такие сети моделируются в виде графов
(или орграфов), где стрелки указывают направление потока сигналов, управля-
ющих процессами или несущих о них информацию.
С помощью таких графов моделируются, например, сети радиосвязи борт –
земля в системе УВД, когда требуется оценить их надежность. При сложной
структуре сети авиатрасс с помощью графов также решается задача определе-
ния предельной пропускной способности при минимальных затратах.
Данное учебное пособие состоит из трех глав.
Первая глава является вводной. В ней представлена информация об общих
положениях теории графов, которая знакомит читателя с понятием графа, его
разновидностями и свойствами. Также перечислены способы представления
графов в памяти компьютера, необходимые при решении методами теории гра-
фов задач с использованием компьютерных технологий.
Материал второй главы представляет собой подробное описание понятия
связности, призванное подвести обучающихся к пониманию алгоритмов реше-
ния задач о нахождении кратчайших путей в графе. Их использование может
легко найти практическое применение при моделировании процессов УВД.
Третья глава посвящена описанию потоков в сетях: дано понятие потока,
приведены задачи планирования потока на сетях, рассмотрен алгоритм нахож-
дения максимального потока. Данный алгоритм, применимый в графах, также
может быть использован при планировании воздушного движения.
Таким образом, в предложенном учебном пособии содержатся общие сведе-
ния по теории графов, а также изложения процессов УВД на основе построения
графов. Особое внимание сосредоточено на описании эффективных алгоритмов
анализа графов, что позволяет решать практические задачи.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 5


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

ГЛАВА 1

ОСНОВНЫЕ ПОЛОЖЕНИЯ ТЕОРИИ ГРАФОВ

Среди дисциплин и методов дискретной математики теория графов и осо-


бенно алгоритмы на графах находят наиболее широкое применение в програм-
мировании. Между понятием графа и понятием бинарного отношения имеется
глубокая связь – можно сказать, что это равнообъемные понятия. Тем не менее
графам оказывается заметное предпочтение при изучении дискретной матема-
тики и программирования, поскольку теория графов предоставляет очень удоб-
ный язык для описания моделей. Этот тезис можно пояснить следующей анало-
гией. Понятие отношения также можно полностью выразить через понятие
множества. Однако независимое определение понятия отношения удобнее.
Введение специальных терминов и обозначений упрощает изложение теории и
делает ее более понятной. То же относится и к теории графов. Система специ-
альных терминов и обозначений позволяет доступно описывать ее сложные
процессы и этапы функционирования.
Название «граф» подразумевает наличие графической интерпретации. Это
позволяет наглядно определить суть дела на интуитивном уровне, дополняя и
украшая утомительные текстовые доказательства и сложные формулы.
Разные авторы предлагают множество интерпретаций теории графов.
В частности, она служит для решения задач, рассмотренных ниже и подоб-
ных им.
1. Задача о трех домах и трех колодцах. Три дома и три колодца располо-
жены на плоскости. Требуется провести от каждого дома к каждому колодцу
дорожку так, чтобы они не пересекались (рис. 1).

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 6


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рис. 1. Задача о трех домах и трех колодцах

2. Задача о Кенигсбергских мостах. На рис. 2 представлена центральная


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

Рис. 2. Задача о Кенигсбергских мостах

3. Задача о четырех красках. Разделение плоскости на неперекрывающиеся


области называется картой. Области на карте называются соседними, если они
имеют общую границу. Задача состоит в раскрашивании карты таким образом,
чтобы никакие две соседние области не были закрашены одним цветом (рис. 3).

Рис. 3. Задача о четырех красках

С конца XIX века известна гипотеза, что для выполнения этой задачи доста-
точно четырех красок. В 1976 году К. Аппель и В. Хейкен опубликовали реше-
ние задачи о четырех красках, которое базировалось на переборе вариантов
с помощью компьютера. Проверить вручную полученное решение невозможно
– объем перебора выходит далеко за рамки человеческих возможностей.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 7


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Таким образом, граф позволяет обозначать любые объекты и любые связи


между ними. В простом случае подразумевается, что все ребра графа отражают
связи одной природы. Например, граф сети воздушных трасс в секторе района
УВД показывает связи между пунктами обязательного донесения участков ВТ.
В другом случае в виде графа можно изобразить информационные связи между
объектами, например, линии связи между аэродромными службами и диспет-
черскими пунктами. Граф может служить моделью отношения «часть – целое»
и показывать, из чего состоит тот или иной агрегат, отношения родственных
связей между объектами (генеалогическое дерево суть тот же граф) и др.
Важно учитывать, что граф не является масштабным изображением реальной
системы, то есть здесь не отображаются реальные расстояния между объектами.
Граф позволяет наглядно отобразить взаимосвязи объектов реальной систе-
мы, кроме этого с помощью графовых моделей в различных предметных обла-
стях решается множество задач.
Задачи планирования потока в транспортной сети относятся к одному из
возможных классов задач, решаемых с помощью графов.

1.1. Основное определение

Граф представляет собой модель системы объектов, связанных между собой


определенными отношениями. Графом G(X, V) называется совокупность двух
множеств – непустого множества X (множества вершин) и множества V двух-
элементных подмножеств множества X (V – множество ребер),
def
G ( X ,V )   X ,V , X  0 V  2 x & v  V ( v  2) .

Любое множество V двухэлементных подмножеств множества X определяет


симметричное бинарное отношение на множестве X. Поэтому можно считать, что

V  X  X , V  V 1,
и трактовать ребро не только как множество {x1, x2}, но и как пару (x1, x2).
Число вершин графа G обозначим p, а число ребер – q:
def def def def
p  p (G )  X , q  q (G )  V .

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 8


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Если необходимо явно упомянуть числовые характеристики графа, то сле-


дует сказать: (p, q) – граф.
В модели системы объектов им соответствуют вершины графа, связям – ре-
бра (дуги) графа. Изображается граф в виде множества точек (вершин), соеди-
ненных линиями (ребрами или дугами в ориентированном графе).
Математически граф G задается в следующем виде:
G (X, V),
где X = {х1, х2, …, хn} – множество вершин (n – количество вершин, нумерация,
как правило, произвольная);
V = {v1, v2, ..., vm} - множество ребер (m – количество ребер – может отли-
чаться от количества вершин, нумерация, как правило, произвольная).
Ребра можно записать и в таком виде: v(х1, х2) – ребро между вершинами х1
и х2 или вообще как пару (х1, х2). В данном пособии для упрощения записи ча-
сто будет использован первый вариант. Пример графа представлен на рис. 4.

Рис. 4. Пример графа

Обычно граф изображают диаграммой: вершины – точками (или кружками),


ребра – линиями.
На рис. 5 приведен пример диаграммы графа,
имеющего четыре вершины и пять ребер. В этом гра-
фе вершины x1 и x2, x2 и x3, x3 и x4, x2 и x4 смежны, а
вершины x1 и x3 не смежны. Смежные ребра: v1 и v2,
v2 и v3, v3 и v4, v4 и v1, v1 и v5, v2 и v5, v3 и v5, v4 и v5.
Несмежные ребра: v1 и v3, v2 и v4. Рис. 5. Диаграмма графа

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 9


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

1.2. Орграфы, псевдографы, мультиграфы и гиперграфы

Часто рассматриваются следующие родственные графам объекты:


1. Если элементами множества V являются упорядоченные пары (т. е.
V  X  X ), то граф называется ориентированным (или орграфом). В этом слу-
чае элементы множества X называются узлами, а элементы множества V – дугами.
2. Если элементом множества V может быть пара одинаковых (не различ-
ных) элементов X, то такой элемент множества V называется петлей, а граф
называется графом с петлями (или псевдографом).
3. Если V является не множеством, а мультимножеством, содержащим не-
которые элементы по несколько раз, то эти элементы называются кратными
ребрами, а граф называется мультиграфом.
4. Если элементами множества V являются не обязательно двухэлементные,
а любые (непустые) подмножества множества X, то такие элементы множества
V называются гипердугами, а граф называется гиперграфом.
Если задана функция F: X → М и/или F: V → М, то множество М называется
множеством пометок, а граф называется помеченным (или нагруженным). В
качестве множества пометок обычно используются буквы или целые числа. Ес-
ли функция F инъективна, то есть разные вершины (ребра) имеют разные по-
метки, то граф называется нумерованным.

1.3. Смежность

Пусть x1, x2 – вершины, v = (x1, x2) – соединяющее их ребро. Тогда вершина


x1 и ребро v инцидентны, ребро v и вершина x2 также инцидентны. Два ребра,
инцидентные одной вершине, называются смежными; две вершины, инцидент-
ные одному ребру, также называются смежными. Множество вершин, смеж-
ных с вершиной x, называется множеством смежности (или окрестностью)
вершины x и обозначается Г+(x):
def def
Г  ( x)  {u  X (u, x)  X } , Г * ( x)  Г  ( x)  x .
Если не оговорено противное, то символ Г без индекса подразумевает Г+, то
есть саму вершину в окрестность не включают.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 10


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Очевидно, что u  Г(x)  x  Г(u). Если A  X – множество вершин, то Г(А)


– множество всех вершин, смежных с вершинами из A:
def
Г( A)  {u  X  x  A(u  Г( x))}   Г( x ) .
xA

Отношение смежности является в некотором смысле определяющим для гра-


фов и подобных им объектов. При этом следует учитывать особенности каждого
типа объектов. В орграфе вершина x смежна с вершиной u, если существует дуга
(u, x). При этом вершина и может быть не смежна с вершиной x. Отношение
смежности в графе симметрично, а в орграфе оно вовсе не обязано быть симмет-
ричным. В графе обычно считают отношение смежности рефлексивным, то есть
полагают, что вершина смежна сама с собой. В псевдографе, напротив, вершину
не считают смежной с собой, если у нее нет петли. В гиперграфе две вершины
считаются смежными, если они принадлежат одному гиперребру. В гипероргра-
фе гипердуга обычно проводится из одного узла во множество узлов (возможно,
пустое). В таком случае отношение смежности оказывается уже не бинарным от-
ношением на X, а отношением из X в 2X. Эти и подобные естественные вариации
определений обычно считают ясными из контекста.
Выражение «граф G (X, V)» означает неориентированный непомеченный граф
без петель и кратных ребер с множеством вершин X и множеством ребер V.

1.4. Изоморфизм графов

Два графа, G1(X1, V1) и G2(X2, V2), изоморфны (обозначается G1 ~ G2, или
G1 = G2), если существует биекция h: X1 → X2, сохраняющая смежность

v1 = (u, x) V1  v2 = (h(u), h(x))  V2.


Изоморфизм графов – отношение эквивалентности – обладает всеми необ-
ходимыми свойствами:
Рефлексивность G ~ G, где требуемая биекция есть тождественная функция.
Симметричность, если G1 ~ G2 с биекцией h, то G2 ~ G1 с биекцией h-1.
Транзитивность, если G1 ~ G2 с биекцией h и G2 ~ G3 с биекцией g, то G1 ~ G3
с биекцией g o h.
Три внешне различные диаграммы, приведенные на рис. 6, являются диа-
граммами одного и того же графа K3,3.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 11


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рис. 6. Диаграммы изоморфных графов

Числовая характеристика, одинаковая для всех изоморфных графов, называ-


ется инвариантом графа. Так, p(G) и q(G) – инварианты графа G. Неизвестно ни
одного простого набора инвариантов, определяющих граф с точностью до изо-
морфизма.
Количество вершин, ребер и количество смежных вершин для каждой вер-
шины не определяют граф даже в простейших случаях. На рис. 7 представлены
диаграммы графов, у которых указанные инварианты совпадают, но графы при
этом не изоморфны.

Рис. 7. Диаграммы неизоморфных графов с совпадающими инвариантами

1.5. Элементы графов

Подграфы

Граф G' (X', V') называется подграфом (или частью) графа G (X, V) (обозна-
чается G'  G), если X'  X & V'  V. Если X' = X, то G' называется остовным
подграфом G. Если X'  X & V'  V & (X' ≠ X V' ≠ V), то граф G' называется
собственным подграфом графа G. Подграф G' (X', V') называется правильным
подграфом графа G (X, V), если G' содержит все возможные ребра G:
 u , x  X ' (( u , x)  V  (u , x)  V ' ) .

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 12


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Правильный подграф G' (X', V') графа G (X, V) определяется подмножеством


вершин X'.
Иногда подграфами называют только правильные подграфы, а неправиль-
ные подграфы называют иэграфами.

Валентность

Количество ребер, инцидентных вершине x, называется степенью (или ва-


лентностью) вершины x и обозначается d(x):

 x  X (0  d ( x)  p  1), d ( x)  Г  ( x) .

Таким образом, степень d(x) вершины x совпадает с количеством смежных с


ней вершин. Количество вершин, не смежных с x, обозначают d(x). Ясно, что

 x  X (d ( x)  d ( x)  p  1) .
Обозначим минимальную степень вершины графа G через δ(G), а макси-
мальную – через ∆(G):
def def
(G ( X , V ))  min d ( x) ,(G ( X , V ))  max d ( x) .
xX x X

Ясно, что δ(G) и ∆(G) являются инвариантами. Если степени всех вершин
равны k, то граф называется регулярным степени k:
(G )   (G )  k , x  X (d ( x )  k ) .
Степень регулярности обозначается, как r(G). Для нерегулярных графов r(G)
не определено.
На рис. 8 приведена диаграмма регулярного графа степени 3. На рис. 7 –
диаграммы двух регулярных, но неизоморфных графов степени 3.
Если степень вершины равна нулю (т. е. d(x) = 0), то вершина называется
изолированной. Если степень вершины равна
единице (т. е. d(x) = 1), то вершина называется
концевой, или висячей. Для орграфа число дуг,
исходящих из узла x, называется полустепенью
исхода, а число входящих – полустепенью за-
хода. Обозначаются эти числа, соответственно,
– + Рис. 8. Диаграмма регулярного
d (x) и d (x). графа степени 3

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 13


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Маршруты, цепи, циклы

Маршрутом в графе называется чередующаяся последовательность вершин


и ребер, начинающаяся и кончающаяся вершиной, (x0, v1, x1, v2, x2, ..., vk, xk), в
которой любые два соседних элемента инцидентны, причем однородные эле-
менты (вершины, ребра) через один смежны или совпадают.
Это определение подходит также для псевдо-, мульти- и орграфов. При этом
в графе (орграфе) достаточно указать только последовательность вершин (уз-
лов) или только последовательность ребер (дуг).
Если x0 = xk, то маршрут замкнут, иначе – открыт.
Если все ребра различны, то маршрут называется цепью. Если все вершины
(а значит, и ребра) различны, то маршрут называется простой цепью. В цепи
x0, v1, ..., vk, xk вершины x0 и xk называются концами цепи. Говорят, что цепь с
концами u и x соединяет вершины u и x. Цепь, соединяющая вершины u и x,
обозначается  u, x  . Если требуется указать граф G, которому принадлежит
цепь, то добавляют индекс:  u , x  G . Нетрудно показать, что если есть какая-
либо цепь, соединяющая вершины u и x, то есть и простая цепь, соединяющая
эти вершины.
Замкнутая цепь называется циклом; замкнутая простая цепь – простым цик-
лом. Число циклов в графе G обозначается z(G). Граф без циклов называется
ациклическим. Для псевдографов обычно особо оговаривается, считаются ли
петли циклами.
Для орграфов цепь называется путем, а цикл – контуром. Путь в орграфе из
узла и в узел x обозначается  u, x  .
Рассмотрим примеры маршрутов, цепей и циклов диаграммы графа, приве-
денной на рис. 9:
1) x1, x3, x1, x4 – маршрут, но не цепь;
2) x1, x3, x5, x2, x3, x4 – непростая цепь;
3) x1, x4, x3, x2, x5 – простая цепь;
4) x1, x3, x5, x2, x3, x4, x1 – непростой цикл;
Рис. 9. Маршруты, цепи, циклы 5) x1, x3, x4, x1 – простой цикл.
в графе

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 14


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Связность

Две вершины в графе связаны, если существует соединяющая их (простая)


цепь. Граф, в котором все вершины связаны, называется связным. Отношение
связанности вершин является эквивалентностью. Классы эквивалентности по
отношению связанности называются компонентами связности графа. Число
компонентов связности графа G обозначается k(G). Граф G является связным
тогда и только тогда, когда k(G) = 1. Если k(G) > 1, то G – несвязный граф. Граф,
состоящий только из изолированных вершин (в котором k(G) = p(G) и r(G) = 0),
называется вполне несвязным.

Длина маршрута, расстояние между вершинами,


ярусы и диаметр графа

Длиной маршрута называется количество ребер в нем (с учетом повторе-


ний). Если маршрут М = x0, v1, x1, v2, x2, ..., vk, xk, то длина М равна k (обознача-
ется М  k ).
Расстоянием между вершинами u и x (обозначается d(u, x)) называется дли-
на кратчайшей цепи  u, x  , а сама кратчайшая цепь называется геодезической:
def
d (u , x)  min  u , x  .
{u , x }

Если для любых двух вершин графа существует единственная геодезическая


цепь, то граф называется геодезическим.
Множество вершин, находящихся на заданном расстоянии n от вершины x
(обозначается D(x, n)), называется ярусом:
def
D( x, n)  {u  X d ( x, u )  n} .
Множество вершин X всякого связного графа однозначно разбивается на
ярусы относительно данной вершины.
Диаметром графа G называется длиннейшая геодезическая цепь. Длина
диаметра обозначается D(G):
def
D(G )  max d (u , x ) .
u , x X

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 15


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Эксцентриситет и центр

Эксцентриситетом v(x) вершины x в связном графе G(X, V) называется


максимальное расстояние от вершины x до других вершин графа G:
def
v( x)  max d ( х, и ) .
u X

Наиболее эксцентричные вершины – это концы диаметра.


Радиусом R(G) графа G называется наименьший из эксцентриситетов вершин:
def
R(G )  min v( х) .
x X

Вершина x называется центральной, если ее эксцентриситет совпадает с ра-


диусом графа, v(x) = R(G). Множество центральных вершин называется цен-
тром графа и обозначается C(G):
def
C (G )  {x  X v( x)  R(G )} .
На рис. 10 указаны эксцентриситеты вершин и центры двух графов. Верши-
ны, составляющие центр, выделены жирными точками.

Рис. 10. Эксцентриситеты вершин и центры графов

1.6. Виды графов

Тривиальный и полный графы

Граф, состоящий из одной вершины, называется тривиальным. Граф, состо-


ящий из простого цикла с k-вершинами, обозначается Ck.
Например, C3 – треугольник.
Граф, в котором любые две вершины смежны, называется полным. Полный
граф с p-вершинами обозначается Kp и имеет максимально возможное число
ребер:

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 16


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

p ( p  1)
q( K p )  .
2
Полный подграф (некоторого графа) называется кликой (этого графа).

Двудольные графы

Граф G(X, V) называется двудольным (или биграфом, или четным графом),


если множество X может быть разбито на два непересекающихся множества: X1
и X2 (X1  X2 = X, X1  X2 = ), причем всякое ребро из V инцидентно вершине
из X1 и вершине из X2 (т. е. соединяет вершину из X1 с вершиной из X2). Множе-
ства X1 и X2 называются долями двудольного графа. Если двудольный граф со-
держит все ребра, соединяющие множества X1 и X2, то он называется полным
двудольным графом. Если |X1| = т и |X2| = n, то полный двудольный граф обо-
значается Km,n. Например, на рис. 6 приведена диаграмма графа К3,3.
Граф является двудольным тогда и только тогда, когда все его простые цик-
лы имеют четную длину.

Направленные орграфы и сети

Если в графе ориентировать все ребра, то получится орграф, который назы-


вается направленным (или антисимметричным).
В антисимметричном орграфе не может быть «встречных» дуг (u, x) и (x, u),
а в произвольном такое допустимо.
Направленный орграф, полученный из полного графа, называется турниром.
Объясним происхождение термина. Рассмотрим спортивное соревнование
для пар участников (или пар команд), где не предусматривается ничья. Поме-
тим вершины орграфа участниками и проведем дуги от победителей к побеж-
денным. В данном случае турнир в контексте теории графов – это как раз ре-
зультат однокругового турнира в спортивном смысле.
+
Если в орграфе полустепень захода некоторого узла равна нулю (т. е. d (x) = 0),
то такой узел называется источником; если нулю равна полустепень исхода

(т. е. d (x) = 0), то узел называется стоком. Направленный слабосвязный ор-
граф с одним источником и одним стоком называется сетью.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 17


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

1.7. Графы и отношения

Любой орграф G (X, V) с петлями, но без кратных дуг, задает бинарное от-
ношение V на множестве X и обратно. Пара элементов принадлежит отноше-
нию (a, b)  V X × X тогда и только тогда, когда в графе G есть дуга (a, b).
Полный граф соответствует универсальному отношению. Граф (неориентиро-
ванный) соответствует симметричному отношению. Дополнение графов есть
дополнение отношений. Изменение направления всех дуг соответствует обрат-
ному отношению и т. д.
Отступление. Таким образом, имеется полная аналогия между орграфами и
бинарными отношениями – фактически, это один и тот же класс объектов,
только описанный разными средствами. Отношения (в частности, функции) яв-
ляются базовым средством для построения подавляющего большинства мате-
матических моделей, используемых при решении практических задач. С другой
стороны, графы допускают наглядное представление в виде диаграмм. Этим
обстоятельством объясняется широкое использование диаграмм различного ви-
да (которые суть представления графов или родственных объектов) при коди-
ровании и особенно при проектировании в программировании.

Достижимость и частичное упорядочение

В качестве примера связи между орграфами и бинарными отношениями рас-


смотрим отношения частичного порядка с точки зрения теории графов. Узел и в
орграфе G (X, V) достижим из узла x, если существует путь из x в и. Путь из x в
и обозначим  x, u  . Отношение достижимости можно представить следую-
щей матрицей:
Т: array [1...p, 1...p] of 0...1,

где T[i, j] = 1, если узел xj достижим из узла xi, и T[i, j] = 0, если узел xj не до-
стижим из узла xi. Рассмотрим отношение строгого частичного порядка, кото-
рое характеризуется следующими аксиомами:
1. Антирефлексивность: x  X ( ( x  u )) .
2. Транзитивность:  u , x, w ( x  w & w  u  x  u ) .
3. Антисимметричность:  u , x ( (u  x & x  u )) .

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 18


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

С отношением строгого частичного порядка   X  X можно сопоставить


орграф G (X, V), в котором a  b  (a, b)  V .
Теорема 1. Если отношение V есть строгое частичное упорядочение, то ор-
граф G (X, V) не имеет контуров.
Доказательство (от противного). Пусть в G есть контур. Рассмотрим лю-
бую дугу (а, b) в этом контуре. Тогда имеем а > b, но b > а по транзитивности,
что противоречит антисимметричности упорядочения.
Теорема 2. Если орграф G (X, V) не имеет контуров, то отношение достижи-
мости есть строгое частичное упорядочение.
Доказательство.
– Антирефлексивность. Нет контуров, следовательно, нет петель.
– Транзитивность. Если существуют пути из x в w и из w в и, то существует
и путь из x в u.
– Антисимметричность (от противного). Пусть  u, x (u  x & x  u ) , т. е.
существует путь  x, u  из x в и и путь  u, x  из и в x. Следовательно, суще-
ствует контур вида  x, u  +  u, x  , что противоречит условию.
Теорема 3. Если орграф не имеет контуров, то в нем есть узел, полустепень
захода которого равна 0.
Доказательство (от противного). Пусть такого узла нет, тогда для любого
узла найдется узел, из которого есть дуга в данный узел. Следовательно, имеем
контур против направления стрелок.

Транзитивное замыкание

Если V – бинарное отношение на X, то транзитивным замыканием V+ на X


будет отношение достижимости на орграфе G (X, V).
Теорема. Пусть М – матрица смежности орграфа G (X, V). Тогда Mk[i, j] = 1 в
том и только в том случае, если существует путь длиной k из узла xi в узел xj.
Доказательство. Индукция по k. База: k = 1, М1 = М – пути длины 1. Пусть
М k-1 содержит пути длины k – 1. Тогда
p
M [i, j ]  V ( M k 1[i, l ] & M [l , j ] ,
k
l 1

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 19


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

т. Е. путь длины k из узла i в узел j существует тогда и только тогда, когда


найдется узел l, такой, что существует путь длины k – 1 из i в l и дуга (l, j), т. е.
  i, j   i, j   k   l (  i, l  (  i, l   k  1) & (l , j )  V ) .

Если T – матрица достижимости, то очевидно, что


p 1
Т V Mk.
k 1
Трудоемкость прямого вычисления по этой формуле составляет O(р4). Мат-
рица достижимости Т может быть вычислена по матрице смежности М алго-
ритмом Уоршалла за O(р3).

1.8. Способы представления графов в памяти компьютера

Требования к представлению графов

Любую рассматриваемую задачу для моделей реальных систем не всегда


возможно решать без автоматизации вычислений. Методы теории графов поз-
воляют для решения задач использовать ЭВМ. Однако при этом необходимо
представить граф в памяти компьютера.
Известны различные способы представления графов в памяти компьютера,
которые различаются объемом занимаемой памяти и скоростью выполнения
операций над графами. Представление выбирается, исходя из потребностей
конкретной задачи. Ниже приведены четыре наиболее часто используемых
представления с указанием характеристики n(p, q) – объема памяти для каждого
представления. В данном случае p – число вершин, a q – число ребер.
Значение характеристики n(p, q) указывается с помощью символа О, кото-
рый обозначает совпадение по порядку величины (или равенство с точностью
до мультипликативной константы с). Применительно к измерению занимаемой
памяти использование символа О связано с тем, что память может быть изме-
рена в битах, байтах, машинных словах или иных единицах. Коэффициент c
при этом меняется, а порядок величины остается.
Представления иллюстрируются на конкретных примерах графа G и оргра-
фа D, диаграммы которых представлены на рис. 11.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 20


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

а б
Рис. 11. Диаграммы графа (а) и орграфа (б),
используемых в качестве примеров представлений

Конструирование структур данных для представления в программе объектов


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

Матричные представления

Базовыми формами представления графов в памяти компьютера являются


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

1 2 3 4 5 6 7 1 2 3 4 5 6 7
1 1 1 1
2 1 2 1
3 1 1 1 1 3 1 1 1 1
4 1 4 1
5 1 1 1 5 1 1 1
6 1 1 1 6 1 1 1
7 1 7 1

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 21


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рис. 12. Пример графа

Матрица смежности. Представление графа с помощью квадратной булевой


матрицы
М: array [1...p, 1...p] of 0...1,

отражающей смежность вершин, называется матрицей смежности, где


1, если вершина xi смежна с вершиной x j ,
M [i, j ]  
0, если вершины xi и x j не смежны.
Для матрицы смежности n(p, q) = O(p 2 ).

0 1 0 1 0 1 0 0
1 0 1 1 0 0 1 1
Например, G : ; D: .
0 1 0 1 0 0 0 0
1 1 1 0 1 0 1 0

Матрица смежности графа симметрична относительно главной диагонали, по-


этому достаточно хранить только верхнюю (или нижнюю) треугольную матрицу.
Матрица инциденций. Представление графа с помощью матрицы:
H: array [1...p, 1...q] of 0...1,
для орграфа
H: array [1...p, 1...q] of 0...1,
отражающей инцидентность вершин и ребер, называется матрицей инциденций,
где для неориентированного графа
1, если вершина xi инцидентна ребру v j ,
H [i, j ]  
0, в противном случае,

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 22


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

а для ориентированного графа


1, если узел xi инцидентен дуге v j и является ее концом,

H [i, j ]  0, если узел xi и ребро v j не инцидентны,

 1, если узел xi инцидентен дуге v j и является ее началом.
Для матрицы инциденций n(p, q) = O(p, q).
1 0 0 1 0 1 0 0 1 0
1 1 0 0 1 1 1 0 0 1
Например, G : ; D: .
0 1 1 0 0 0 1 1 0 0
0 0 1 1 1 0 0 1 1 1
Для связных графов q > p, поэтому матрица смежности несколько компакт-
нее матрицы инциденций.

Списки смежности

Представление графа с помощью списочной структуры, отражающей смеж-


ность вершин и состоящей из массива указателей
Г: array [1...p] of ↑ N
на списки смежных вершин, где элемент списка представлен структурой
N = record x: 1...p, n: ↑ N end record,
называется списком смежности (рис. 13). В случае представления неориенти-
рованных графов списками смежности n(p, q) = O(p + 2q), а в случае ориенти-
рованных графов n(p, q) = O(p + q). Массив Г также можно представить спис-
ком.

а б
Рис. 13. Списки смежности для графа G (а) и орграфа D (б)

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 23


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Массив ребер

Представление графа с помощью массива структур


V: array [1...q] of record b, v: 1...p end record,
отражающего список пар смежных вершин (или, для орграфов, узлов), называет-
ся массивом ребер (массивом дуг). Для массива ребер (или дуг) n(p, q) = O(2q).
Для представления графов с изолированными вершинами может понадо-
биться хранить еще и число p, если только система программирования не поз-
воляет извлечь это число из массива структур V.
Представление графов с помощью массива ребер (дуг) выглядит следующим
образом (для графа G слева, а для орграфа D справа):
b v b v
1 2 1 2
1 4 2 3
2 3 2 4
2 4 4 1
3 4 4 3

Указанные представления пригодны для графов и орграфов, а после некото-


рой модификации – и для псевдографов, мультиграфов и гиперграфов.

Обходы графов

Обход графа – некоторое систематическое перечисление его вершин (и/или


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

АЛГОРИТМ ПОИСКА В ШИРИНУ И В ГЛУБИНУ

Вход: граф G (X, V), представленный списками смежности Г.


Выход: последовательность вершин обхода.
For x  X do
γ[x] := 0 {вначале все вершины не отмечены}
End for

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 24


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Select x  X {начало обхода – произвольная вершина}


x→Т {помещаем x в структуру данных Т...}
γ[x] := 1 {... и отмечаем вершину x}
Repeat
u←Т {извлекаем вершину из структуры данных Т...}
Yield u {... и возвращаем ее в качестве очередной пройденной вершины}
For w  Г(u) do
If x[w] = 0 then
w→T {помещаем w в структуру данных Т...}
γ[w] := 1 {... и отмечаем вершину w}
End if
End for
Until T = .

Если в данном алгоритме структуры данных T – это стек (LIFO – Last In First
Out), то обход называется поиском в глубину. Если Т – это очередь (FIFO – First
In First Out), то обход называется поиском в ширину.
Протоколы поиска в глубину и в ширину для графа, диаграмма которого
приведена на рис. 14, выглядzт следующим образом:
u T u T
1 2,4 1 2,4
4 2,3 2 4,3
3 2 4 3
2  3 

Предполагается, что начальной является вершина 1. Слева представлен про-


токол поиска в глубину, справа – в ширину. На рис. 14 сплошные стрелки с но-
мерами рядом с ребрами показывают движение
по графу при поиске в глубину, а пунктирные –
в ширину.
Если граф G связен (и конечен), то при поис-
ке в ширину и в глубину обходят все вершины
по одному разу. Рис. 14. Диаграмма графа обхода
в ширину и в глубину

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 25


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Следствие 1. Пусть (u1, ..., ui, ..., uj, ..., uр) – обход (т. е. последовательность
вершин) при поиске в ширину. Тогда

 i  j (d (u1 , u i )  (u1 , u j )) .
Другими словами, расстояние текущей вершины от начальной является мо-
нотонно возрастающей функцией времени поиска в ширину, вершины обходят-
ся в порядке возрастания расстояния от начальной вершины.

Следствие 2. Пусть (u1, ..., ui, ..., uр) – обход при поиске в глубину. Тогда

 i  i (d (u1 , u i )  i  p ) .
Другими словами, время поиска в глубину любой вершины не менее рассто-
яния от начальной вершины и не более общего числа вершин, причем в худшем
случае время поиска в глубину может быть максимальным, независимо от рас-
стояния до начальной вершины.

Следствие 3. Пусть (u1, ..., ui, ..., uр) – обход при поиске в ширину, a D(u1, 1),
D(u1, 2), ... – ярусы графа относительно вершины u1. Тогда

 d ( u1 , ui )1 d ( u1 , ui )

 i  1   D(u1 , j )  i   D(u1 , j )  .
 j 0 j 0 
Другими словами, время поиска в ширину ограничено снизу количеством
вершин во всех ярусах, находящихся на расстоянии меньшем, чем расстояние
от начальной вершины до текущей, и ограничено сверху количеством вершин в
ярусах, начиная с яруса текущей вершины и включая все меньшие ярусы.

Следствие 4. Пусть (u1, ..., ui, ..., uр) – обход при поиске в ширину, a
(x1, ..., xj, ..., xp) – обход при поиске в глубину, где ui = xj. Тогда в среднем i = 2j.
Другими словами, поиск в глубину в среднем вдвое быстрее, чем поиск в
ширину.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 26


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

ГЛАВА 2

СВЯЗНОСТЬ ГРАФОВ

Связность является одним из немногих понятий, которые не распространя-


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

2.1. Объединение графов и компоненты связности

Связный граф – граф, содержащий ровно одну компоненту связности. Это


означает, что между любой парой вершин этого графа существует по крайней
мере один путь.
Теорема. Граф связен тогда и только тогда, когда его нельзя представить в
виде объединения двух графов.
Несвязный граф всегда можно представить как объединение связных ком-
понент. Их можно рассматривать независимо. Поэтому во многих случаях
можно без ограничения общности предполагать, что рассматриваемый граф
связен.

Точки сочленения, мосты и блоки

Вершина графа называется точкой сочленения, или разделяющей вершиной,


если ее удаление увеличивает число компонент связности. Мостом называется
ребро, удаление которого увеличивает число компонент связности. Блоком
называется связный граф, не имеющий точек сочленения.
В графе, диаграмма которого представлена на рис.15:
1) вершины u, x – точки сочленения, других точек сочленения нет;
2) ребро γ – мост, других мостов нет;

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 27


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

3) правильные подграфы {а, b, w}, {b, u, w}, {a, b, u, w}, {с, d, x}, {v, f, x} –
блоки, других блоков нет.

Рис. 15. Точки сочленения, мосты и блоки

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


которые не являются точками сочленения.

2.2. Вершинная и реберная связность

Если сравнить рис. 6 и 15, то возникает естественное впечатление, что связ-


ный граф может быть «более» или «менее» связен. Вершинной связностью гра-
фа G (обозначается (G)) называется наименьшее число вершин, удаление ко-
торых приводит к несвязному или тривиальному графу.
Например, (G) = 0, если G несвязен;
(G) = 1, если G имеет точку сочленения;
(Кp) = p – 1, если Кp – полный граф.
Граф G называется п-связным, если (G) = п.
Реберной связностью графа G (обозначается (G)) называется наименьшее
число ребер, удаление которых приводит к несвязному или тривиальному графу.
Например, (G) = 0, если G несвязен;
(G) = 1, если G имеет мост;
(Кр) = р – 1, если Кр – полный граф.
Граф тем более связен (при использовании различных мер связности), чем
больше существует различных цепей, соединяющих одну вершину с другой, и
тем менее связен, чем меньше нужно удалить промежуточных вершин, чтобы
отделить одну вершину от другой.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 28


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

2.3. Непересекающиеся цепи и разделяющие множества

Пусть G (X, V) – связный граф, u и x – две его несмежные вершины. Две цепи
 u, x  называются вершинно-непересекающимися, если у них нет общих вершин,
отличных от u и x. Две цепи  u, x  называются реберно-непересекающимися,
если у них нет общих ребер. Если две цепи вершинно не пересекаются, то они
также не пересекаются реберно. Обозначим через P(u, x) множество вершинно-
непересекающихся цепей  u, x  .
Множество S вершин (и/или ребер) графа G разделяет две вершины u и x,
если они принадлежат разным компонентам связности графа G–S. Разделяющее
множество ребер называется разрезом. Разделяющее множество вершин для и и
x обозначим S(u, x).
Для заданных вершин и и x множества Р(u, x) и S(u, x) можно выбирать раз-
личным образом.
Из определений следует, что любое множество P(u, x) вершинно-непересе-
кающихся цепей обладает тем свойством, что
  u, x   {u , x} ,
(u , x ) P (u , x )

а любое разделяющее множество вершин S(u, x) обладает тем свойством, что


G  S  G1  G2 & x  G1 & u  G2 .
Если u и x принадлежат разным компонентам связности графа G, то |P(u, x)| = 0
и |S(u, x)| = 0. Поэтому без ограничения общности можно считать, что G – связ-
ный граф.
В графе, диаграмма которого представлена на рис. 16, можно выбрать мно-
жества вершинно-непересекающихся путей:
P1  { u, a, d , x ,  u, b, v, x } и P2  { u, b, d , x ,  u, c, v, x } .
Заметим, что путь  u , c, b, d , x  образует множество Р3 вершинно-непере-
секающихся путей, состоящее из одного элемента.
Множества вершин S1 = {а, b, с} и S2 = {d, v} являются разделяющими для
вершин u и x.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 29


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рис.16. Вершинно-непересекающиеся пути и разделяющие множества вершин

2.4. Теорема Менгера

Теорема Менгера представляет собой весьма общий факт, который в разных


формулировках встречается в различных областях математики.

Теорема Менгера в «вершинной форме»

Пусть u и x – несмежные вершины в графе G. Наименьшее число вершин


во множестве, разделяющем u и x, равно наибольшему числу вершинно-
непересекающихся простых  u, x  -цепей:

max |P(u, x)| = min |S(u, x)|.


Пусть G – связный граф, и вершины u и v не смежны. Обозначим P := P(u, x),
S := S(u, x). Из этого следует, что |P|  |S|. Действительно, любая  u, x  -цепь
проходит через S. Если бы |P| > |S|, то S включало бы вершину, принадлежащую
более чем одной цепи из P, что противоречит выбору Р. Таким образом,
 P ( S ( P  S )) .
Следовательно, max |P|  min |S|. Утверждение теоремы состоит в том, что в
любом графе существуют такие P и S, при которых достигается равенство |P| = |S|.
Доказательство. Пусть G – связный граф, u и x – несмежные вершины.
Совместная индукция по р и q. База: наименьший граф, удовлетворяющий
условиям теоремы, состоит из трех вершин: u, w, x – и двух ребер: (u, w) и (w,
x). В таком графе P(u, x) = {  u , w, x  } и S(u, x) = {w}.
Таким образом, |P(u, x)| = |S(u, x)| = 1.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 30


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Пусть утверждение теоремы верно для всех графов с числом вершин


меньше р и/или числом ребер меньше q. Рассмотрим граф G с р-вершинами и
q-ребрами. Пусть (u, x)  X, причем u, x – не смежны, а S – некоторое наимень-
шее множество вершин, разделяющее u и x.
Обозначим n := |S|. Рассмотрим три случая:
1. Пусть в S есть вершины, не смежные с u и не смежные с x. Тогда граф G–S
состоит из двух нетривиальных графов G1 и G2. Образуем два новых графа Gu и
Gx, стягивая нетривиальные графы G1 и G2 к вершинам u и x соответственно
(рис. 17):
Gu := G/G1, Gx := G/G2.

Рис. 17. К доказательству теоремы Менгера, случай 1

S по-прежнему является наименьшим разделяющим множеством для u и x


как в Gu, так и в Gx. Так как G1 и G2 нетривиальны, то Gu и Gx имеют меньше
вершин и/или ребер, чем G. Следовательно, по индукционному предположению
в Gu и в Gx имеется n вершинно-непересекающихся простых цепей. Комбини-
руя отрезки этих цепей от u до S и от S до x, получаем n вершинно-
непересекающихся простых цепей в G.
2. Пусть все вершины S смежны с u или с x (для определенности условимся
считать, что с u), и среди них есть вершина w, смежная одновременно с u и с x
(рис. 18).

Рис. 18. К доказательству теоремы Менгера, случай 2

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 31


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рассмотрим граф G ' : = G – w. В нем S – w – разделяющее множество для и и


x, причем наименьшее. По индукционному предположению в G ' имеется
S  w  n  1 вершинно-непересекающихся простых цепей. Добавим к ним
цепь  u , w, x  , которая является простой и вершинно не пересекается с
остальными. Таким образом, G содержит n вершинно-непересекающихся про-
стых цепей.
3. Пусть все вершины S смежны с и или с x (для определенности условимся
считать, что с и), и среди вершин S нет вершин, смежных одновременно с верши-
ной u и с вершиной x. Рассмотрим кратчайшую  u, x  -цепь  u , w1 , w2 , ..., x  ,
w1  S, w2 = x (рис. 19):

Рис. 19. К доказательству теоремы Менгера, случай 3

Рассмотрим граф G ' := G/{w1, w2}, полученный из G склейкой вершин w1 и


w2 в вершину w1. Имеем w2  S, в противном случае цепь  u , w2 , ..., x  была
бы еще более короткой. Следовательно, в графе G ' множество S по-прежнему
является наименьшим, разделяющим и и x, и граф G ' имеет по крайней мере на
одно ребро меньше. По индукционному предположению в G ' существуют n
вершинно-непересекающихся простых цепей. Но цепи, которые не пересекают-
ся в G', не пересекаются и в G. Таким образом, получаем n вершинно-
непересекающихся простых цепей в G.

Варианты теоремы Менгера

Комбинируя вершинно- и реберно-непересекающиеся цепи, разделяя не от-


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

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 32


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Теорема 1. Для любых двух несмежных вершин и и x графа G наибольшее


число реберно-непересекающихся  u, x  -цепей равно наименьшему числу
ребер в (u, x)-разрезе.
Теорема 2. Чтобы граф G был n-связным, необходимо и достаточно, чтобы
любые две несмежные вершины были соединены не менее чем n вершинно-
непересекающимися простыми цепями.
Другими словами, в любом графе G любые две несмежные вершины соеди-
нены не менее чем (G) вершинно-непересекающимися простыми цепями. До-
казательство подобных утверждений требует места, и мы оставляем их за пре-
делами книги. В последующих разделах пособия приведены также некоторые
другие результаты, в которых проявляется теорема Менгера.

2.5. Теорема Холла

Пусть G (X1, X2, V) – двудольный граф. Совершенное паросочетание из X1 в


X2 существует тогда и только тогда, когда
 A  X 1 ( A  Г( A) ) .
Паросочетанием называется множество ребер, в котором никакие два ребра
не смежны. Паросочетание называется максимальным, если никакое его
надмножество не является независимым. Пусть G (X1, X2, V) – двудольный граф.
Совершенным паросочетанием из X1 в X2 называется паросочетание, покрыва-
ющее вершины X1.
Доказательство.
[  ] Пусть существует совершенное паросочетание из X1 в X2. Тогда в Г(А)
входит A вершин из X2, парных к вершинам из множества А. Таким образом,
A  Г ( A) .
[  ] Добавим в G две новые вершины u и x, так, что вершина и смежна со
всеми вершинами из X1, а вершина x – со всеми вершинами из X2. Совершен-
ное паросочетание из X1 в X2 существует тогда и только тогда, когда суще-
ствует |X1| вершинно-непересекающихся простых  u, x  -цепей (рис. 20). Яс-
но, что P(u, x)  X 1 (так как X1 разделяет вершины u и x).

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 33


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рис. 20. К доказательству теоремы Холла

По теореме Менгера
max |P(u, x)| = min |S(u, x)| = |S|,
где S – наименьшее множество, разделяющее вершины и и x.
Имеем |S| < |X1|. Покажем, что S  X 1 .
Пусть S  A  B, A  X 1 , B  X 2 .
Тогда Г(X1 \ А)  В. Действительно, если бы Г(X1 \ А)  В, то существовал
бы «обходной» путь  u, x1 , x 2 , x  (см. рис. 20) и S не было бы разделяющим
множеством для и и x. Имеем |X1 \ А|  |Г(X1 \ А)|  |В|.
Следовательно,
|S| = |А| + |В|  |А| + |X1 \ А| = |X1|.

2.6. Связность в орграфах

Сильная, односторонняя и слабая связность

В неориентированном графе две вершины либо связаны (если существует


соединяющая их цепь), либо не связаны. В ориентированном графе отношение
связанности узлов несимметрично, а потому определение связности отличается.
Пусть G (X, V) – орграф, x1 и x2 – его узлы. Два узла – x1 и x2 – сильно связа-
ны в орграфе G, если существует путь (ориентированная цепь) как из x1 в x2, так
и из x2 в x1. Два узла – x1 и x2 – односторонне связаны в орграфе G, если суще-
ствует путь либо из x1 в x2, либо из x2 в x1. Два узла – x1 и x2 – слабо связаны в
орграфе G, если они связаны в графе G ', полученном из G забыванием ориента-
ции дуг.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 34


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Если все вершины в орграфе сильно (односторонне, слабо) связаны, то ор-


граф называется сильно (односторонне, слабо) связным. Сильная связность
влечет за собой одностороннюю, которая влечет слабую связность. Обратное,
разумеется, неверно.
На рис. 21 показаны диаграммы сильно, односторонне и слабо связных ор-
графов.

а б в
Рис. 21. Сильная (а), односторонняя (б) и слабая (в) связность

Компоненты сильной связности

Компонента сильной связности (КСС) орграфа G – это его максимальный


сильно связный подграф.
Каждый узел орграфа принадлежит только одной КСС. Если узел не связан
сильно с другими, то считается, что он сам образует КСС. Конденсацией G* ор-
графа G (графом Герца, фактор-графом) называется орграф, который получает-
ся стягиванием в один узел каждой КСС орграфа G (рис. 22).
Фактор-граф не содержит контуров.

а б
Рис. 22. Диаграммы орграфа (а) и его конденсации (б)

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 35


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

АЛГОРИТМ ВЫДЕЛЕНИЯ КОМПОНЕНТ СИЛЬНОЙ СВЯЗНОСТИ

Данный алгоритм, основанный на методе поиска в глубину, находит все


компоненты сильной связности орграфа.
Вход: орграф G (X, V), заданный списками смежности Г(x).
Выход: список С компонент сильной связности, каждый элемент которого
есть список узлов, входящих в компоненту сильной связности.
С := Ø
for x  X do
M[x] := {x} {M[x] – список узлов, входящих в ту же КСС, что и x}
v[x] := 0 {все узлы не рассмотрены}
end for
while X ≠ Ø do
select x  X {взять x из X}
xT {положить x в стек}
v[x] := 1 {отметить узел x}
КСС {вызов процедуры КСС}
end while

Основная работа выполняется рекурсивной процедурой без параметров


КСС, которая использует стек Т для хранения просматриваемых узлов. Проце-
дура КСС выделяет все компоненты сильной связности, достижимые из узла,
выбранного в основном алгоритме.
if T = Ø then
return {негде выделять}
end if
x := top Т {x – верхний элемент стека}
if Г[x]  X = Ø then
C := C  M[x] {это КСС}
X := X – x {удалить узел}
xТ {снять узел x со стека}
КСС {возврат из тупика}
else
for u  Г[x] do
if v[u] = 0 then

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 36


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

uT {положить узел и в стек}


v[u] := 1 {отметить узел и}
else
repeat
wТ {w – склеиваемый узел}
X := X – w {удалить узел}
Г[u] := Г[u]  Г[w] {запомнить смежность}
М[u] := М[u]  M[u] {склеивание узлов}
until u = w
wТ {чтобы не убрать тот узел}
X := X + w {с которого начали}
end if
КСС {поиск в глубину}
end for
end if

Обоснование. Достаточно заметить, что любой контур принадлежит ровно


одной КСС, и, более того, если в КСС входит несколько узлов, то они обяза-
тельно принадлежат некоторым контурам. Поэтому, если при обходе в глубину
мы попадаем в уже отмеченный узел u, то это означает, что обнаружен контур.
Причем предшествующие узлы найденного контура находятся на стеке, начи-
ная от его вершины и до рассматриваемого отмеченного узла u, который также
присутствует в стеке. Все узлы найденного контура можно «склеить». При
склеивании узла w его список смежности и список уже найденных узлов той
КСС, которой принадлежит узел w, объединяются с соответствующими спис-
ками узла u. После этого можно продолжить поиск в глубину от узла и, кото-
рый для этой цели следует оставить в стеке.

2.7. Алгоритмы нахождения кратчайших путей

Задача нахождения кратчайшего пути в графе имеет столько практических


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

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 37


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Алгоритм Уоршалла (длина дуг)

Алгоритм Уоршалла позволяет ответить на вопрос, достижима ли вершина x


из вершины u, т. е. существует ли цепь  u, x  . Очень часто бывает необходи-
мо не только определить, существует ли цепь, но и найти эту цепь.
Если задан орграф G (X, V), в котором дуги нагружены числами (эти числа
обычно называют весами или длинами дуг), то этот орграф можно представить
в виде матрицы весов (длин) C:
0, для i  j;

С[i, j ]  cij , конечная величина, если есть дуга из узла i в узел j;

, если нет дуги из узла i в узел j.
Длиной пути называется сумма длин дуг, входящих в этот путь.
Данное представление, равно как и последующие алгоритмы, применимы
как к графам, так и к орграфам.

Алгоритм Флойда

Алгоритм Флойда находит кратчайшие пути между всеми парами вершин


(узлов) в (ор)графе. В этом алгоритме для хранения информации о путях ис-
пользуется матрица Н: array [1...p, 1...p] of 1...p, где

k , если k  первая вершина, достигаемая на кратчайшем пути из i в j;


H [i, j ]  
0, если из вершины i в вершину j нет пути.
Вход: матрица С[1...р, 1...р] длин дуг.
Выход: матрица Т[1...р, 1...р] длин путей и матрица H[1...р, 1...р] самих путей.
for i from 1 to p do
for j from 1 to p do
T[i, j] := C[i, j] {инициализация}
if C[i, j] =  then
H[i, j] := 0 {нет дуги из i в j}
else
H[i, j] := j {есть дуга из i в j}
end if
end for
end for

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 38


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

for i from 1 to p do
for j from 1 to p do
for k from 1 to p do
if i ≠ j & T[j, i]   & i ≠ k & T[i, k]   & (T[j, k] =   T[j, к] > T[j, i] + Т[i, k]) then
H[j, k] := H[j, i] {запомнить новый путь}
T[j, k] := T[j, i] + Т[i, k] {и его длину}
end if
end for
end for
for j from 1 to p do
if T[j, i] < 0 then
stop {нет решения: вершина j входит в цикл отрицательной длины}
end if
end for
end for

Отступление. Матрица H размера О(р2) хранит информацию обо всех


(кратчайших) путях в графе. Заметим, что всего в графе О(р2) путей, состоящих
из О(р) вершин. Таким образом, непосредственное представление всех путей
потребовало бы памяти объема О(р3). Экономия памяти достигается за счет ин-
терпретации представления, т. е. динамического вычисления некоторой части
информации вместо ее хранения в памяти. В данном случае любой конкретный
путь  u, x  легко извлекается из матрицы с помощью следующего алгоритма.

w := u; yield w {первая вершина}


while w ≠ x do
w := H[w, x]; yield w {следующая вершина}
end while

Если в G есть цикл с отрицательным весом, то решения поставленной зада-


чи не существует, т. к. на этом цикле можно «накручивать» сколь угодно ко-
роткий путь.
Обоснование. Алгоритм Флойда имеет много общего с алгоритмом Уор-
шалла. Покажем по индукции, что после выполнения i-го шага основного цикла
по i элементы матриц T[j, k] и H[j, k] содержат, соответственно, длину кратчай-
шего пути и первую вершину на кратчайшем пути из вершины j в вершину k,
проходящем через промежуточные вершины из диапазона 1…i.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 39


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

База: i = 0, т. е. до начала цикла элементы матриц T и H содержат информа-


цию о кратчайших путях (если таковые есть), не проходящих ни через какие
промежуточные вершины. Пусть теперь перед началом выполнения тела цикла
на i-м шаге T[j, k] содержит длину кратчайшего пути от j к k, а H[j, k] содержит
первую вершину на кратчайшем пути из вершины j в вершину k (если таковой
есть). В случае, если в результате добавления вершины i к диапазону промежу-
точных вершин находится более короткий путь (в частности, если это вообще
первый найденный путь), то он записывается. Таким образом, после окончания
цикла, когда i = р, матрицы содержат кратчайшие пути, проходящие через про-
межуточные вершины 1...р, т. е. искомые кратчайшие пути. Алгоритм не всегда
выдает решение, поскольку оно не всегда существует. Дополнительный цикл по
j служит для прекращения работы в случае обнаружения в графе цикла с отри-
цательным весом.

Алгоритм Дейкстры

Алгоритм Дейкстры находит кратчайший путь между двумя данными вер-


шинами (узлами) в (ор)графе, если длины дуг неотрицательны.

Вход: орграф G (X, V), заданный матрицей длин дуг С: array [1...p, 1...p] of real;
s и t – вершины графа.
Выход: векторы Т: array [1...p] of real и H: array [1...p] of 0...p. Если вершина v
лежит на кратчайшем пути от s к t, то T[x] – длина кратчайшего пути от s к v;
H[x] – вершина, непосредственно предшествующая v на кратчайшем пути.
For x from 1 to р do
T[x] :=  {кратчайший путь неизвестен}
γ[x] := 0 {все вершины не отмечены}
end for
H[s] := 0 {s ничего не предшествует}
Т[s] := 0 {кратчайший путь имеет длину 0...}
γ[s] := 1 {... и он известен}
x := s {текущая вершина}
М: {обновление пометок}

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 40


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

for u  Г(x) do
if γ[u] = 0 & Т[u] > T[x] + C[x, u] then
Т[u] := T[x] + C [x, u] {найден более короткий путь из s в и через v}
H[u] := x {запоминаем его}
end if
end for
m := ; x := 0 {поиск конца кратчайшего пути}
for u from 1 to p do
if X[u] = 0 & T[u] < m then
x := u; m := T[u] {вершина x заканчивает кратчайший путь из s}
end if
end for
if x = 0 then
stop {нет пути из s в t}
end if
if x = t then
stop {найден кратчайший путь из s в t}
end if
γ[x] := 1 {найден кратчайший путь из s в x}
goto M

Для применимости алгоритма Дейкстры достаточно выполнения неравен-


ства треугольника:
 ( u , x, w)  X (d (u, x)  d (u , w)  d ( w, x)) ,
которое, очевидно, выполняется, если длины дуг неотрицательны. Если же
допускаются отрицательные длины дуг, то алгоритм Дейкстры может оказать-
ся неприменимым. Например, в графе с тремя узлами s, t и и, если C[s, t] = 2,
C[s, u] = 3 и C[u, t] = –2, алгоритм не найдет кратчайшего пути длиной 1 и вы-
даст путь длиной 2.
Обоснование. Для доказательства корректности алгоритма Дейкстры до-
статочно заметить, что при каждом выполнении тела цикла, начинающегося
меткой М, в качестве x используется вершина, для которой известен кратчай-
ший путь из вершины s. Другими словами, если X[x] = 1, то T[x] = d(s, x), и все
вершины на пути  s, x  , определяемом вектором H, обладают тем же свой-
ством, т. е.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 41


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

 u ( X [u ]  1  T [u ]  d ( s, u ) & X [ H [u ]]  1.
Действительно (по индукции), первый раз в качестве x используется верши-
на s, для которой кратчайший путь пустой и имеет длину 0 (непустые пути не
могут быть короче, потому что длины дуг неотрицательны).
Пусть Т[и] = d(s, и) для всех ранее помеченных вершин u. Рассмотрим вновь
помеченную вершину x, которая выбрана из условия:
T [ x ]  min T [u ] .
[ u ]  0

Заметим, что если известен путь, проходящий через помеченные вершины,


то тем самым известен кратчайший путь. Допустим (от противного), что
T[x] > d(s, x),
т. е. найденный путь, ведущий из s в x, не является кратчайшим. Тогда на этом
пути должны быть непомеченные вершины. Рассмотрим первую вершину w на
этом пути, такую, что γ[w] = 0. Имеем:
T[w] = d(s, w)  d(s, x) < T[x],
что противоречит выбору вершины x.
Известно, что применение алгоритма Флойда в среднем примерно вдвое ме-
нее трудоемко, чем применение алгоритма Дейкстры для всех пар вершин.

Дерево кратчайших путей

Алгоритм Дейкстры можно использовать и в том случае, когда необходимо


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

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 42


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

АЛГОРИТМ ДЕЙКСТРЫ
ДЛЯ ВЫЧИСЛЕНИЯ ДЕРЕВА КРАТЧАЙШИХ ПУТЕЙ

Вход: орграф G (X, V), заданный матрицей длин дуг С: array [1...p, 1...p] of real
и списками смежности Г; s – исходная вершина графа.
Выход: вектор Т: array [1...p] of real длин кратчайших путей от s.
for u  X do
Т[u] := C[s, u] {начальное приближение определяется матрицей}
γ[u] := 0 {все вершины не отмечены}
end for
for i from 1 to p do
m :=  {поиск конца нового кратчайшего пути}
for u  X do
if γ[u] = 0 & Т[u] < m then
x := u, m := Т[u] {вершина и заканчивает новый кратчайший путь из s}
end if
end for
for u  Г(x) do
T[u] := min(T[u], T[x] + C[x, u]) {пересчет оценки длины пути из s в u через v}
end for
γ[x] := 1 {найден кратчайший путь из s в v}
end for

Обоснование. Приведенный вариант алгоритма основан на той же идее, что


и предшествующий: на очередном шаге необходимо выбрать вершину x, до ко-
торой точно известен кратчайший путь от s, и пересчитать оценки путей для
вершин, смежных с x. Такой вершиной на первом шаге окажется вершина s (для
нее T[s] = 0). На следующих шагах новой вершиной x является вершина, кото-
рая еще не рассмотрена (Х[и] = 0) и для которой оценка пути минимальна. Дей-
ствительно, даже если в будущем обнаружится другой путь, ведущий в x, его
длина будет больше.
Таким образом, грубая оценка трудоемкости алгоритма Дейкстры составля-
ет O(р2), поскольку вложенные циклы выполняются О(р) раз. Заметим, что во
внутреннем цикле явно совершается излишняя работа: вершины, далекие от s,

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 43


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

не могут повлиять на выбор x на ранних шагах, и их не стоит рассматривать


раньше времени. Известно, что, подбирая структуры данных для представления
графа более тщательно, можно уменьшить трудоемкость алгоритма Дейкстры
до O{q log2p}.
Совокупность путей от вершины s к другим вершинам образует корневое
дерево. Действительно, никакой кратчайший путь, очевидно, не содержит кон-
туров (напомним, что длины дуг положительны). Всякий узел достижим из
корня по построению. Более того, этот путь единственный, поскольку даже ес-
ли в вершину ведет несколько кратчайших путей одинаковой длины, алгоритм
выберет только один из них.

Кратчайшие пути в бесконтурном орграфе

Алгоритм Дейкстры применим, если длины дуг неотрицательны. Существу-


ет эффективный алгоритм, который позволяет найти дерево кратчайших путей
в орграфе, даже если длины дуг отрицательны, но известно, что орграф не со-
держит контуров.
Лeммa. В произвольном бесконтурном орграфе G (X, V) узлы можно пере-
нумеровать так, что  ( xi , x j )  V (i  j ) .
Доказательство. Отношение достижимости в бесконтурном графе есть
строгое частичное упорядочение на конечном множестве. Применяя алгоритм
топологической сортировки, получаем требуемую нумерацию слов.
Допустим, что узлы в бесконтурном орграфе перенумерованы так, что каж-
дая дуга ведет из узла с меньшим номером в узел с большим номером, а источ-
ник орграфа, из которого нужно построить дерево кратчайших путей, имеет
номер 1. Тогда алгоритм находит кратчайшие пути от узла 1 до всех достижи-
мых узлов.

АЛГОРИТМ ОПРЕДЕЛЕНИЯ
РАССТОЯНИЙ ОТ ИСТОЧНИКА В БЕСКОНТУРНОМ ГРАФЕ

Вход: орграф G (X, V), заданный матрицей длин дуг С: array [1...p, 1...p] of real
и списками предшествующих узлов Г–1; источник имеет номер 1.
Выход: вектор Т: array [1...p] of real длин кратчайших путей от источника.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 44


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

For i from 1 to р do
T[i] := С[1, i] {начальное приближение определяется матрицей}
end for
for i from 2 to p do
for j  Г–1(i) do
T[i] := min(T[i], T[j] + C[j, i]) {пересчет оценки длины пути}
end for
end for

Обоснование. Докажем индукцией по i, что основной цикл имеет инвариант


 j  1...i (T [ j ]  d (1, j )) . База: если j = 1, то T[1] = 0 = d(1, 1). Пусть теперь
 j  i (T [ j ]  d (1, j)) . В кратчайшем пути  1, i  все промежуточные узлы име-
ют номера больше 1 и меньше i по построению орграфа, в частности, вершина j,
предшествующая i на кратчайшем пути, будет выбрана во внутреннем цикле, для
нее по индукционному предположению T[j] = d(1, j), и значит, T[i] = d(1, i).
В алгоритме используется множество «предшествования»
def
Г 1 ( x)  {u x  Г(u )} ,
которое совпадает со списками смежности Г(x) для графов и не пересекается с
Г(x) для направленных орграфов.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 45


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

ГЛАВА 3

ТРАНСПОРТНЫЕ СЕТИ

3.1. Моделирование процессов планирования


воздушного движения

Основной целью процесса планирования воздушного движения (ПВД) явля-


ется приведение интенсивности воздушного движения (ВД), планируемой или
фактической, в соответствие с возможностью обслуживания органами управле-
ния воздушным движением (УВД). Как правило, на всех этапах ПВД отслежи-
вается баланс между интенсивностью ВД и пропускными способностями сек-
торов УВД, участков воздушных трасс, точек их пересечения. Решить проблему
перегрузок работы диспетчерского состава во многом можно на этапе планиро-
вания ВД, но это затрудняется тем, что необходимо обработать огромный объ-
ем информации, после чего выполнить множество логических и вычислитель-
ных операций. Только автоматизация процессов ПВД позволит найти выход из
данной ситуации, но автоматизация любых процессов невозможна без создания
их моделей, которые позволят решить возникающие задачи с минимальными
затратами в установленное время.
Для достижения основной цели ПВД необходимо уже на этапе составления
плана полета каждого ВС разработать набор альтернативных планов, которые
могут отличаться друг от друга временем вылета, скоростями по отдельным
участкам воздушных трасс (МВЛ), эшелонами полета или маршрутами. В этом
случае процедура ПВД заключается в выборе из перечня альтернативных пла-
нов каждого рейса конкретного варианта, который в совокупности с остальны-
ми обеспечивает баланс между потребностями в авиаперевозках и возможно-
стью системы обслуживания воздушного движения.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 46


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Критерием качества плана перевозок воздушным транспортом, естественно,


являются финансовые затраты на его осуществление. Каждая авиакомпания
стремится их уменьшить, а органы обслуживания воздушного движения – по-
лучить максимальное количество сборов за обслуживание. Последнее, есте-
ственно, прямо пропорционально зависит от количества полетов, которое огра-
ничивается пропускными способностями системы УВД. Компромисс может
быть достигнут только при комплексном рассмотрении задачи ПВД, для чего
необходимо получить модель процесса ПВД.
Совершенствование методов планирования и организации потоков воздуш-
ного движения на сегодняшний день представляется одним из основных
направлений повышения эффективности функционирования системы УВД по
всем основным показателям и, прежде всего, по экономии авиатоплива. При
этом перечень задач оптимизации процессов планирования и непосредственно-
го УВД по критерию экономичности не исчерпывается выбором рациональных
маршрутов, эшелонов и режимов полета. Так, одной из задач, качество решения
которой в значительной степени определяет безопасность и экономичность
воздушного движения, является задача назначения запасных аэродромов.
Необходимость рассмотрения указанной задачи как оптимизационной по
критерию экономии авиатоплива подтверждается анализом эффективности ис-
пользования запасных аэродромов, выбранных в соответствии с существующей
технологией только по критерию безопасности. Такой анализ показывает, что,
как правило, в реальных ситуациях при массовых сбоях воздушного движения
из-за прекращения приема ВС на аэродроме назначения имеется возможность
его перенацеливания на запасные аэродромы и, соответственно, снижения за
счет этого перерасхода топлива на 25–30 % по сравнению с фактическим. В
связи с этим представляется целесообразным обоснование методов и разработ-
ка алгоритмов решения задачи рационального назначения запасных аэродромов
в смысле рассматриваемого показателя эффективности с целью обеспечения
информацией как экипажей ВС на этапе предполетной подготовки, так и орга-
нов УВД при перенацеливании ВС на запасные аэродромы в процессе текущего
планирования.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 47


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Целью постановки и решения задачи оптимального назначения запасных


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

Задачи планирования потока на транспортных сетях

К классу потоковых задач (задач планирования потока на сетях) можно от-


нести следующую задачу:
Имеется система, модель которой может быть представлена в виде ори-
ентированного графа. На вход системы поступает поток с некоторой интен-
сивностью . Пропускная способность элементов системы ограничена. Требу-
ется так спланировать поток в системе, чтобы не нарушались ограничения
пропускной способности элементов систем, и интенсивность потока была
максимальной (или равной требуемой величине).
В данном случае можно провести аналогии с рассмотренными ранее харак-
теристиками процессов в системе УВД, такими, как интенсивность воздушного
движения и пропускная способность, например, воздушных трасс. При этом за-
дача формулируется как задача распределения потока воздушного движения из
некоторого пункта s в пункт t по сети трасс, имеющих ограниченную пропуск-
ную способность (могут быть добавлены и другие условия, и критерии распре-
деления потока).
Для решения подобных задач используются алгоритмы решения потоковых
задач на транспортных сетях.
Под моделью транспортной сети (сетью) понимается ориентированный
граф, в котором выделяются две вершины: s – исток (источник) и t – сток, а ду-
гам присвоен вес, означающий пропускную способность. Пропускную способ-
ность дуги u обозначим как (u). Пропускная способность пути, предположим,
из s в t Р(s, t) равна наименьшей из пропускных способностей дуг, в него вхо-
дящих:
[Р(s, t)] = min [(u1), (u2), (u3), ...].

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 48


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Интенсивность потока в сети (далее – поток) обозначим (s, t), поток в дуге –
(u). На рис. 23 показан пример простой сети. Цифрами обозначена текущая
интенсивность потока в дуге, а в скобках указаны пропускные способности дуг
(u). Заметим, что на изображенной сети распределен поток с интенсивностью
(u) = 2, причем все объекты потока перемещаются по одному пути.

Рис. 23. Пример транспортной сети

Поток представляет собой совокупность объектов, транспортируемых по се-


ти из s в t, причем эти объекты могут быть распределены по дугам сети различ-
ным образом. Допустимый поток должен удовлетворять следующим условиям:
1) весь поток, поступающий на вход, достигает выхода сети, т. е.
(s, xi) = (xj, t) = 0,

где хj  Х +(t), хi  Х (s);
2) интенсивность потока в любой дуге сети удовлетворяет соотношению:
0  (u)  (u);
3) для любой вершины все объекты, входящие в нее, также выходят, т. е.
(xj, хk) – (xk, хi) = 0,

где хj  Х +(xk), хi  Х (xk).
Введем величину d, которая будет характеризовать возможное приращение
потока. Для дуги d(u) = (u) – (u), если поток пропускаем в направлении ори-
ентации дуги, и d = (u), если речь идет о встречном потоке (т. е. условно пред-
полагается, что имеющийся поток величиной (u) можно уменьшить для того,
чтобы пропустить во встречном направлении некоторое количество единиц по-
тока). Для некоторого пути из s в t Р(s, t) приращение определяется как
наименьшее из приращений дуг, в него входящих:
d[Р(s, t)] = min [d(u1), d(u2), d(u3) ...].

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 49


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Задача поиска максимального допустимого потока в сети решается с помо-


щью алгоритма последовательного увеличения некоторого начального потока с
распределением приращения потока по дугам так, чтобы соблюдались условия
допустимого потока. Вариант такого алгоритма основан на использовании ор-
графа приращений.
Рассмотрим, что такое орграф приращений. Этот граф строится из исходной
сети при данном значении потока в сети и обозначается как I(Н, i). Напомним,
что символом Н ранее мы обозначали любой орграф, в данном случае это обо-
значение исходной сети; i – поток в сети на i-м цикле работы алгоритма (i =
(s, t)). Рассмотрим правила построения орграфа приращений.
1. Каждой дуге сети ставятся в соответствие две дуги орграфа приращений –
сонаправленная и противонаправленная. Обозначим их w1 и w2 соответственно.
2. Каждой дуге орграфа приращений присваивается вес по следующим пра-
вилам:
– (w1) = 0, если в соответствующей дуге сети Н выполняется (u) < (u);
– (w1) = , если (u)  (u);
– (w2) = 0, если (u) = 0;
– (w2) = , если (u) = 0.
Таким образом, вес дуги орграфа приращений равен нулю, если в соответ-
ствующей дуге сети можно изменить (увеличить или уменьшить) поток. На рис.
24 приведен пример орграфа приращений I(Н, 2) для сети с потоком, равным 2
(см. рис. 23). Цифрами 1 и 2 показаны номера вершин.

Рис. 24. Орграф приращений I(Н, 2) для сети, изображенной на рис. 23

Запишем алгоритм решения задачи поиска максимального допустимого по-


тока в транспортной сети.
1) i = 1, произвольно выбирается и распределяется по дугам в соответствии
с требованиями допустимости начальный поток i(s, t) (он может быть нулевым);

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 50


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

2) строится орграф приращений I(Н, i);


3) на I(Н, i) выбирается путь Р(s, t), длина которого равна 0. Если такого
пути нет, – конец работы алгоритма и i – максимальный допустимый поток;
4) на исходной сети определяется последовательность дуг, соответствую-
щая выбранному пути на I(Н, i) и по их приращениям находится d[Р(s, t)] по
формуле, приведенной выше;
5) определяется новый поток i+1 = i + d[Р(s, t)], для каждой дуги, соответ-
ствующей пути Р(s, t). Дополнительные единицы потока распределяются по
этим дугам (здесь целесообразно перерисовать сеть заново с вновь полученным
потоком);
6) i = i + 1, далее следует перейти на шаг 2.
Пример. Первый цикл работы алгоритма, i = 1.
Шаг 1. Рассмотрим сеть, изображенную на рис. 25. Выберем путь, это путь
Р1(s, t). Начальный поток равен 2.
Шаг 2. Строим орграф приращений I(Н, 2) (см. рис. 25).
Шаг 3. На орграфе приращений выберем путь нулевой длины Р(s, 2, t).
Шаг 4. Находим приращение d[Р(s, 2, t)] = min [5, 4] = 4.
Шаг 5. Новый поток 2 = 1 + 4 = 2 + 4 = 6. Получаем сеть с распределенным
новым потоком (см. рис. 24).

Рис. 25. Сеть с полученным потоком (s, t) = 6 после первого цикла работы алгоритма

Второй цикл работы алгоритма, i = 2.


Шаг 2. Строим орграф приращений I(Н, 6) (рис. 26).
Шаг 3. На I(Н, 6) находим единственный путь нулевой длины Р(s, 2, 1, t).
Шаг 4. Находим приращение d[Р(s, 2, 1, t)] = min [1, 2, 4] = 1.
Шаг 5. Новый поток 1 = 2 + 1 = 6 + 1 = 7. Получаем сеть с распределен-
ным новым потоком (рис. 27).

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 51


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Рис. 27. Сеть с полученным потоком (s, t) = 7


Рис. 26. Орграф приращений I(Н, 6) для сети после второго цикла работы алгоритма

Полученный поток является искомым максимальным допустимым потоком,


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

3.2. Потоки в сетях

Рассмотрим некоторые примеры практических задач о потоках в сетях.


1. Существует некая сеть автомобильных дорог, по которым можно проехать
из пункта A в пункт В. Дороги могут пересекаться в промежуточных пунктах.
Количество автомобилей, которые могут проехать по каждому отрезку дороги за
единицу времени, небезгранично: оно определяется такими факторами, как ши-
рина проезжей части, качество дорожного покрытия, действующие ограничения
скорости движения и т. д. (обычно это называют пропускной способностью до-
роги). Каково максимальное количество автомобилей, которые могут проехать
из пункта A в пункт В за единицу времени без образования пробок на дорогах
(обычно это называют автомобильным потоком)? Можно поставить и другой во-
прос: какие дороги и насколько необходимо расширить или улучшить, чтобы
увеличить максимальный автомобильный поток на заданную величину?
2. Пусть существует сеть трубопроводов, соединяющих пункт А (скажем,
нефтепромысел) с пунктом В (скажем, нефтеперерабатывающим заводом).

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 52


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Трубопроводы могут соединяться и разветвляться в промежуточных пунктах.


Количество нефти, которое может быть перекачано по каждому отрезку трубо-
провода в единицу времени, также небезгранично и определяется такими фак-
торами, как диаметр трубы, мощность нагнетающего насоса и т. д. (обычно это
называют пропускной способностью или максимальным расходом трубопрово-
да). Сколько нефти можно прокачать через такую сеть за единицу времени?
3. Пусть существует система машин для производства готовых изделий из
сырья и последовательность технологических операций может быть различной
(т. е. операции могут выполняться на разном оборудовании или в разной после-
довательности), но все допустимые варианты заранее строго определены. Мак-
симальная производительность каждой единицы оборудования, естественно,
также заранее известна и постоянна. Какова максимально возможная произво-
дительность всей системы в целом? Как нужно организовать производство для
достижения максимальной производительности?
Изучение этих и подобных им многочисленных практических задач приво-
дит к теории потоков в сетях. В данном разделе рассматривается решение толь-
ко одной (но самой существенной) задачи этой теории, а именно: задачи опре-
деления максимального потока. Описание других родственных задач, напри-
мер, задачи определения критического пути, можно найти в библиографиче-
ском списке.

Определение потока

Пусть G (X, V) – сеть, s и t – источник и сток сети соответственно. Дуги сети


нагружены неотрицательными вещественными числами, с: V  R+. Если u и x –
узлы сети, то число с(и, x) называется пропускной способностью дуги (u, x).
Матрица пропускных способностей С: array [1...p, 1...p] of real является пред-
ставлением сети, аналогичным матрице смежности. Нулевое значение элемента
С[и, x] соответствует дуге с нулевой пропускной способностью, т. е. отсутствию
дуги, а положительное значение элемента С[и, x] соответствует дуге с ненуле-
вой пропускной способностью, т. е. дуга присутствует.
Пусть задана функция f: V  R. Дивергенцией функции f в узле x называется
число div(f, x), которое определяется следующим образом:

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 53


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

def
div( f , u )   f (u, x)   f ( x, u ) .
{ x (u , x ) V } { x ( x , u ) V }

В физике дивергенция обычно определяется наоборот: то, что пришло, ми-


нус то, что ушло. Но в данном случае удобнее, чтобы дивергенция источника
была положительна.
Функция f: V  R называется потоком в сети G, если:
1)  u, x  V (0  f (u, x)  c(u, x)) , т. е. поток через дугу не отрицателен и
не превосходит ее пропускной способности;
2)  u  X \ {s, t} (div( f , u )  0) , т. е. дивергенция потока равна нулю во
всех узлах, кроме источника и стока.
def
Число w( f )  div( f , s) называется величиной потока f. Если f(u, x) = c(u, x),
то дуга (и, x) называется насыщенной.

Разрезы

Пусть Р – (s, t)-разрез, Р  V. Всякий разрез определяется разбиением мно-


жества вершин X на два подмножества S и Т так, что S  X, Т  X, S Т = X, S
 T = , s  S, t  Т, а в Р попадают все дуги, соединяющие S и Т. Тогда Р = Р+
 Р–, где Р+ – дуги от S к Т, Р– – дуги от T к S. Сумма потоков через дуги разре-
за Р обозначается F(P). Сумма пропускных способностей дуг разреза P называ-
ется пропускной способностью разреза и обозначается С(Р):
def def
F ( P)   f (v), C ( P)   c(v).
v P v P

Аналогично, F(P+) и F(P ) – суммы потоков через соответствующие части
разрезов.

Теорема Форда – Фалкерсона

В данном подразделе устанавливается количественная связь между величи-


ной максимального потока и пропускными способностями дуг сети.

Лемма 1. w(f) = F(P+) – F(P ).
Доказательство. Рассмотрим сумму W   div( f , x) .
xS

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 54


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Пусть дуга (и, x)  V. Если (u, x)  S, то в сумму W попадают два слагаемых


для этой дуги: +f(u, x) при вычислении div(f, и) и –f(u, x) при вычислении div(f, x),
итого 0. Если u  S, x  T, то в сумму W попадает одно слагаемое +f(u, x), все та-
кие слагаемые дают F(Р+). Если и  Т, x  S, то в сумму W попадает одно слагае-
– –
мое – f(u, x), все такие слагаемые дают F(P ). Таким образом, W = F(Р+) – F(P ).
С другой стороны,
W :   div( f , x)  div( f , s)  w( f ) .
xS

Лемма 2. div(f, s) = –div(f, t).


Доказательство. Рассмотрим разрез P := (S, T), где S := X – t, a T := {t}.
Имеем:
 f ( x, t )  div( f , t ) .

div(f, s) = w(f) = F(P+) – F(P ) = F(P+) =
x

Лемма 3. w(f)  F(P).



Доказательство. w(f) = F(P+) – F(P )  F(P+)  F(P).
Лемма 4. max w( f )  min C ( P) .
f P

Доказательство. По предыдущей лемме w(f)  F(P), следовательно,


max w( f )  min F ( P ) .
f P

По определению: F(P)  C(P), следовательно, min F ( f )  min C ( P) .


P P

Имеем: max w( f )  min C ( P) .


f P

Теорема (Форда – Фалкерсона). Максимальный поток в сети равен мини-


мальной пропускной способности разреза, то есть существует поток f*, такой, что
w( f * )  max w( f )  min C ( P) .
f P

Доказательство. Пусть f – некоторый максимальный поток. Покажем, что


существует разрез P, такой, что w(f) = С(Р).
Рассмотрим граф G', полученный из сети G забыванием ориентации дуг. По-
строим множество вершин S следующим образом:
def
S  {u  X   s, u  G ' (ui , u i 1 )  s, u  G '
((u i , u i 1 )  V  f (ui , ui 1 )  C (ui , ui 1 ) & (u i , ui 1 )  V  (ui , ui 1 )  0)},

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 55


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

т. е. вдоль пути  s, u  дуги в направлении пути не насыщены, а дуги против


направления пути имеют положительный поток. Такая цепь  s, u  называет-
ся аугментальной. Имеем s  S по построению. Следовательно, S  . Поло-
жим T := X \ S. Покажем, что t  Т. Пусть t  S. Тогда существует аугменталь-
ная цепь  s, t  , обозначим ее R. Можно найти число  > 0:
  min (v) ,
vR

c(v)  f (v)  0, если v ориентировать вдоль R,


где (v)  
 f (v)  0, если v ориентировать против R.
В этом случае можно увеличить величину потока на , изменив поток для
всех дуг аугментальной цепи:
 f (v)  , если v ориентировать вдоль R,
f (v )  
 f (v)  , если v ориентировать против R.
При этом условия потока выполняются: 0  f (v)  C (v), div( x)  0 .
Таким образом, поток f увеличен на величину , что противоречит макси-
мальности потока f. Имеем t  Т и Т  . Следовательно, S и Т определяют раз-
– –
рез Р = Р+  P . В этом разрезе все дуги v+ насыщены (f(v+) = c(v+)), а все дуги v

не нагружены (f(v ) = 0), иначе S можно было бы расширить.

Имеем: w(f) = F(P+) – F(P ) = С(Р+), таким образом, Р+ – искомый разрез.

Алгоритм нахождения максимального потока

Следующий алгоритм определяет максимальный поток в сети, заданной


матрицей пропускных способностей дуг. Этот алгоритм использует идею дока-
зательства теоремы Форда – Фалкерсона: задавшись начальным приближением
потока, определяем множество вершин S, которые соединены аугментальными
цепями с источником s. Если оказывается, что t  S, то это означает, что поток
не максимальный и его можно увеличить на величину . Для определения ауг-
ментальных цепей и одновременного подсчета величины  в алгоритме исполь-
зована вспомогательная структура данных:
Р: array [1...p] of record
s: enum (–, +) {«знак», т. е. направление дуги}

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 56


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

n: 1..р {предшествующая вершина в аугментальной цепи}


: real {величина возможного увеличения потока}
end record
N: array [1...p] of 0...1 {отметка узла}
S: array [1...p] of 0...1 {признак принадлежности вершины множеству S}

Вход: сеть G (X, V) с источником s и стоком t, заданная матрица пропускных


способностей С: array [1...p, 1...p] of real.
Выход: матрица максимального потока F: array [1...p, 1...p] of real.
for u, x  X do
F[u, x] := 0 {вначале поток нулевой}
end for
M: {итерация увеличения потока}
for x  X do
S[x] := 0; N[x] := 0; P[x] := (+, nil, 0) {инициализация}
end for
S[s] := 1; P[s] := (+, nil, ) {так как s  S}
repeat
а := 0 {признак расширения S}
for x  X do
if S[x] = 1 & N[x] = 0 then
for u  Г(x) do
if S[u] = 0 & F[x, u] < C[x, u] then
S[u] := 1; P[u] := (+, x, min (P[x]., C[x, u] – F[x, u])); а := 1
end if
end for
for u  Г-1(x) do
if S[u] = 0 & F[u, x] > 0 then
S[u] := 1; P[u] := (–, u, min (P[x]. F[u, x])); a := 1
end if
end for
N[x] := 1 {узел x отмечен}
end if
end for
if S[t] then
x := t {текущий узел аугментальной цепи}

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 57


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

 := P[t]. {величина изменения потока}


while х ≠ s do
if P[x].s = + then
F[P[x].n, x] := F[P[x].n, x] +  {увеличение потока }
else
F[x, P[x].n] := F[x, P[x].n] –  {увеличение потока}
end if
x := P[x].n {предыдущий узел аугментальной цепи}
end while
goto M
end if
until a = 0

Обоснование. В качестве первого приближения берется нулевой поток, ко-


торый по определению является допустимым. В основном цикле, помеченном
меткой М, делается попытка увеличить поток. Для этого в цикле repeat расши-
ряется, насколько это возможно, множество S-узлов, достижимых из источника
s по аугментальным цепям. При этом если во множество S попадает сток t, то
поток вдоль найденной аугментальной цепи (s, t) немедленно увеличивается на
величину , и начинается новая итерация с целью увеличить поток. Процесс
расширения множества S в цикле repeat заканчивается, потому что множество
узлов конечно, а отмеченные в массиве N узлы повторно не рассматриваются.
Если процесс расширения множества S заканчивается и при этом сток t не по-
падает во множество S, то по теореме Форда – Фалкерсона найденный поток F
является максимальным и работа алгоритма завершается.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 58


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Берж, К. Теория графов и ее применения / К. Берж. – М. : Иностр. лит.,


1962. – 320 с.
2. Глухих, И. Н. Основы теории УВД : учеб.-метод. пособие / И. Н. Глухих.
– Ульяновск : УВАУ ГА, 1998. – 29 с.
3. Евстигнеев, В. А. Применение теории графов в программировании /
В. А. Евстигнеев. – М. : Наука, 1985. – 352 с.
4. Емеличев, В. А. Лекции по теории графов / В. А. Емеличев, О. И. Мель-
ников и др. – М. : Наука, 1990. – 384 с.
5. Зыков, А. А. Основы теории графов / А. А. Зыков. – М. : Наука, 1987. –
382 с.
6. Кристофидес, Н. Теория графов, алгоритмический подход / Н. Кристофи-
дес. – М. : Мир, 1978. – 432 с.
7. Новиков, Ф. А. Дискретная математика для программистов : учеб. для ву-
зов / Ф. А. Новиков. – 3-е изд. – СПб. : Питер, 2009. – 364 с.
8. Уилсон, Р. Введение в теорию графов / Р. Уилсон. – М. : Мир, 1977. – 207 с.
9. Харари, Ф. Теория графов / Ф. Харари. – М. : Мир, 1973. – 300 с.

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 59


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Приложение

Основные обозначения
1. Метаобозначения

Обозначение Смысл Пример


def def
По определению есть
 0

:= Положим равным с : (a  b)/2

= Равно 1 = 2,2 × 2 = 4

2. Числовые множества

Обозначение Название Пример


N Натуральные числа 1, 2, 3
Z Целые числа 0, 1, –1, 2, –2

1 1 553
Q Рациональные числа , , , 2,718281828
2 3 113
R Вещественные числа 1, 1,5, 2, , e

3. Совокупности

Обозначение Применение Пример


{a1, …, an} Неупорядоченное множество различных элементов {1, 2, 3}
Упорядоченная последовательность однородных
(a1, …, an) (0, 1, 0, 1)
элементов
Упорядоченная последовательность разнородных
 A, B, C   R, , * 
элементов
Упорядоченная последовательность составных эле-
 a1, ..., a n   a  01, b  10 
ментов

4. Операции с множествами

Обозначение Прочтение Пример


аА Элемент а принадлежит множеству А 1  {1, 2, 3}
аА Элемент а не принадлежит множеству A 4  {1, 2, 3}, 2  Q
AB Множество A является подмножеством мно-
{2, 3}  {1, 2, 3}
жества В
AB Объединение множеств A и В {1, 2}  {2, 3} = {1, 2, 3}

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 60


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Обозначение Прочтение Пример


AB Пересечение множеств A и В {1, 2}  {2, 3} = {2}
A\B Разность множеств A и В {1, 2} \ {2, 3} = {1}
AB Симметрическая разность множеств A и В {1, 2}  {2, 3} = {1, 3}
{1, 2} × {2, 3} =
AB Прямое произведение множеств A и В
= {(1, 2), (1, 3), (2, 2), (2, 3)}
 Пустое множество { }

A Мощность множества A {1, 2}  2

5. Логические обозначения

Обозначение Название Прочтение


P Отрицание Не P
PQ Дизъюнкция P или Q
P&Q Конъюнкция PиQ
PQ Импликация Если Р, то Q

 x (P(x)) Квантор всеобщности Для всех x выполнено P(x)

 x (P(x)) Квантор существования Существует x такой, что выполнено


P(x)

6. Отношения

Обозначение Название
RS Композиция отношений
Rn Степень отношения

Матрица отношений

Отношение эквивалентности
Отношение порядка
< Отношение строгого линейного порядка
 Отношение нестрогого линейного порядка

7. Функции

Обозначение Прочтение Примечание


f: A  B Функция f из A в B fAB
b = f (a ) b является значением функции f
для аргумента а

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 61


В. А. Карнаухов Теория графов и сетей при моделировании
процессов УВД. Учебное пособие.

Обозначение Прочтение Примечание


f g Суперпозиция функций f и g (f  g )( x )  f ( g ( x ))

f –1 Обратная функция к f f –1 : B  A
Множество определения функции
Dom f  a  Dom f (  b  B( b  f (a )))
f: A  B
Множество значений функции
Im f  b  Im f (  a  A ( b  f (a )))
f:

8. Групповые операции

Обозначение Прочтение Примечание


n n
 ai Сумма элементов a1, …, an a i
 a1  ...  a n
i 1 i 1

n n

a
i 1
i Произведение элементов a1, …, an a i
 a1  ...  a n
i 1

min(a1 , ..., a n ) Минимальный из элементов a1, …, an min(a , b )  a & min (a, b )  b

max(a1 , ..., a n ) Максимальный из элементов a1, …, an max (a , b )  a & max (a, b )  b

© НИЛ НОТ НИО УВАУ ГА(и), 2012 г 62


Учебное пособие

ТЕОРИЯ ГРАФОВ И СЕТЕЙ


ПРИ МОДЕЛИРОВАНИИ ПРОЦЕССОВ УВД

Составитель КАРНАУХОВ
ВЛАДИМИР АНАТОЛЬЕВИЧ

Редактор Е. А. Сиротина
Компьютерная верстка И. А. Ерёмина

Подписано в печать 2010. Формат 6090/16. Бумага офсетная.


Печать офсетная. Усл. печ. л. 4,0. Уч.-изд. л. 3,19.
Тираж Заказ
РИО и типография УВАУ ГА(И). 432071, г. Ульяновск, ул. Можайского, 8/8