Вершинная и реберная связность
В связном графе любые две вершины соединены простой цепью. Однако, например, графы на рис. 1 связны по-разному. Поэтому вводят понятие компоненты связности графа.
Компонентой связности графаназывается максимальный связный подграф.
Связный граф состоит из одной компоненты связности.
Рис. 1. Пример графов для иллюстрации понятия связности
Вершинную связность графа k(G)определяют как наименьшее количество вершин, удаление которых нарушает связность графа. Для полных графов k(Кn )= n – 1, для несвязных графов - k(G) = 0 .
Вершину графа называют точкой сочленения, если ее удаление (имеете с инцидентными ей дугами) приводит к увеличению числа компонент связности.
Блок - это связный граф, не имеющий точек сочленения.
Реберную связность λ(G) определяют как наименьшее число ребер, удаление которых нарушает связность. Несвязный граф имеет λ(G) = 0 , для полных графов λ(Кп) = п – 1.
Мост - это ребро, удаление которого приводит к увеличению числа компонент связности. Для графа, имеющего мост λ(G) = 1.
Граф G называют k-связным, если k(G) > k, и реберно k-связным, если λ(G)>k.
Теорема 1.Для любого графа G верны неравенства k(G) < λ(G) < d(G), где d(G) - минимальное значение степени вершин графа.
Например, на рис. 2 приведены граф и его блоки.
Рис. 2. Пример графа и его блоков
Таким образом, точками сочленения являются вершины с номерами 4, 5 и 7. Последние два блока являются полными графами К2. Это единственные блоки, не являющиеся 2-связными. Заметим, что точка сочленения входит во все блоки, с которыми она связана.
Пути и маршруты в графах
Существует большое разнообразие задач, связанных с путями и маршрутами в графе, начиная от стандартных задач на существование, пересчет и перечисление и кончая задачами поиска путей, отвечающих определенным требованиям. Такими требованиями могут быть максимальность или минимальность длины, пропускной способности или надежности пути требования к множеству вершин, принадлежащих или не принадлежащих пути, и т.п. Кроме того, сами графы могут иметь определенные свойства, например быть или не быть ориентированными, циклическими, взвешенными и т.д. Наконец один и тот же граф может быть описан по-разному.
Рассмотрим задачу пересчета путей и маршрутов.
Следует отметить, что задача определения числа путей (маршрутов) длины 2 между всеми парами вершин графа может быть решена простым возведением в квадрат его матрицы смежности. Аналогично, количество маршрутов длины 3 может быть получено из матрицы A3 и вообще количество маршрутов длины l между вершинами vi и vj равно соответствующему элементу матриц Al. Наконец количество маршрутов длиной не более p между всеми парами вершин определяется как сумма
Пример. В качестве примера приведем решение задачи пересчета маршрутов графа, приведенного ниже при l=1,2,3,4.
Рис. 1.
Информацию о путях в одну дугу для графа изображенного на рис. 1 несет матрица смежности А, остальные матрица получаем простым умножением:
Непосредственной проверкой по изображению графа убеждаемся, что, например, между cиe есть
1 маршрут (путь) длины 2: c→b→e;
1 маршрут длины 3: c→e→c→e;
4 маршрута длины 4: c→b→e→c→e, c→b→d→c→e, e→a→b→e→c,
e→c→b→d→c.
К сожалению, таким образом определяется число маршрутов связывающих пару вершин, а не число путей, которые представляют наибольший интерес Количество путей можно определить если найти все маршруты и отбросить те из них, где есть повторяющиеся фрагменты, т.е. необходимо решать задачу перечисления маршрутов. Прежде чем перейти к этой задаче, отметим два факта касающихся задачи пересчета:
1. Отличные от нуля диагональные элементы матриц указывают на присутствие в графе соответствующего количества циклов длины l. Например, в матрице A3 диагональный элемент . Это значит, что в графе есть три цикла длины 3, включающие вершину b. Непосредственно по рисунку находим: b→d→c→b, b→e→c→b и b→e→a→b.
2. Поскольку длина пути в графе не может превышать
n—1,не имеет смысла возводить A в более высокую степень
Перечисление маршрутов и путей
Матричный подход, использованный в предыдущих разделах, легко адаптируется к задаче о перечислении маршрутов
Пусть - матрица всех маршрутов с l промежуточными вершинами (длины l+1), элементы которой определяются как
где vkl это l-япо порядку промежуточная вершина маршрута связывающего vi и vj, a q - количество таких маршрутов. Если маршрутов длины l+1 между vi и vj нет, то . Слагаемые vk1 vk2 … vkl представляют собой "произведения" вершин, лежащих на некотором маршруте между vi и vj. Их можно рассматривать как размещения без повторений или с повторениями из n элементов по l в зависимости от того, является маршрут путем или нет
Например, для графа на рис. 4. и значит из vi в vj есть три маршрута: c→b→e→a→d, c→e→a→b→d и c→e→c→b→d, два из которых являются путями, так как не содержат повторяющихся вершин. В наличии указанных маршрутов легко убедиться непосредственно по графу, а их количество равно значению элемента в матриц A4. Кроме P(l), используем вспомогательную матриц , в которой элемент равен vj, если в графе есть дуга vivj, и 0, еcли дуга отсутствует. Поскольку j-столбец P(l-1) отражает все маршруты длины l, с началом в vk (k=1,2,…,n)и концом в vj, а i-строка - концы всех дуг вида vivk (k=1,2,…,n), то сумма
,
отражает все маршруты из vi в vj длины l+1. Следовательно, матрица маршрутов P(l)может быть получена как х P(l-1), при этом сомножители в произведениях не переупорядочиваются и не используется степенная запись повторяющихся сомножителей, чтобы не потерять информацию о порядке следования вершин. Таким образом, может быть сформирован ряд матриц P(1), P(2), P(3), ..., P(q-1), в совокупности определяющих все маршруты длины не больше q для любой пары вершин.
В качестве примера выполним расчеты для графа, представленного на рис. 1 используя соотношения:
P(1)= P(0), P(2)= P(1), P(3) = P(2).
За матрицу P(0) (пути без промежуточных вершин), необходимую для получения P(1), примем матрицу смежности.
Наконец для P(3) = P(2) матрица принимает вид
a | b | c | d | e | |
a | dce | bea+bdc+bec | dce | bea+dcb | dcb+bdc+bec |
b | dce+ece | 0 | ead+dce+ece | eab+dcb+ecb | eab+dcb+ecb |
c | ece | bea+bdc+bec | ead+ece | bea+eab+ecb | eab+ecb+ +bdc+bec |
d | cbe | cea+cec | cbd+cbe | cea | cec |
e | abe+cbe | cea+adc+cec | abd+cbd+ +abe+cbe | cea | adc+cec |
К видно из примера, уже при небольших значениях l матрицы могут быть весьма громоздкими. Однако, если цель поиска - пути, объем вычислений можно существенно уменьшить, отбрасывая произведения с повторяющимися вершинами. Очевидно также, что в этом случае l ≤ (n—2), так как путь в графе не может содержать более чем n—2 промежуточных вершин. Кроме того, с увеличением длины количество путей в общем случае должно сокращаться.
Задача Гамильтона
В 1859 году Гамильтон предложил владельцу фабрики игрушек в Дублине необычную головоломку, основной частью которой был деревянный додекаэдр (правильный двенадцатигранник, имеющий 20 вершин и тридцать ребер. Каждая грань представляет собой правильный пятиугольник.). В каждую вершину додекаэдра, помеченную названием одного из известных городов (Брюссель, Дели, Франкфурт и т. д.), был вбит гвоздик и к одному из них была привязана нить. Требовалось соединить вершины додекаэдра этой нитью так, чтобы она проходила вдоль его ребер, обвивая каждый гвоздик ровно один раз, и чтобы полученный в результате ниточный маршрут был замкнутым (циклом).
Владелец фабрики принял предложение Гамильтона и выплатил ему 25 гиней.
Гамильтон рассматривал задачу, в которой нужно было, проходя по ребрам додекаэдра, посетить все его вершины.
Ясно, что минимальное число вершин додекаэдра, которые нужно посетить, проходя по его ребрам с тем, чтобы пройти все, не меньше числа его вершин.
Гамильтон показал, что для додекаэдра эти числа равны. Однако описать все множество графов, допускающих существование путей, перемещаясь по которым можно обойти все узлы, побывав в каждом ровно один раз, не удалось до сих пор. Нет и эффективного алгоритма.
Конечно, задача может быть решена перебором, так как обычно речь идет о графах с конечным числом вершин, но объем вычислений в подавляющем большинстве случаев слишком велик.
С этой задачей тесно связана проблема моряка, часто называемая также задачей о странствующем торговце (коммивояжере), который должен посетить определенный набор городов и вернуться домой как можно скорее. Довольно большой пример определения замкнутой воздушной линии, соединяющей столицы 48 штатов США и имеющей наименьшую возможную длину, был просчитан до конца.
Интересно отметить, что обе эти разделенные более чем столетием задачи являются оптимизационными.
Отдавая дань уважения Эйлеру и Гамильтону, всякий граф, у которого есть замкнутый путь, проходящий через каждое его ребро в точности по одному разу, стали называть эйлеровым, а всякий граф, у которого есть замкнутый путь, проходящий через каждую его вершину в точности один раз, гамильтоновым.
Примеры приложений теории графов
Приведем ряд примеров приложений теории графов (более подробное описание перечисляемых и других задач приводится ниже и в литературе, указанной в соответствующих ссылках).
1. «Транспортные» задачи, в которых вершинами графа являются пункты, а ребрами – дороги (автомобильные, железные и др.) и/или другие транспортные (например, авиационные) маршруты. Другой пример – сети снабжения (энергоснабжения, газоснабжения, снабжения товарами и т.д.), в которых вершинами являются пункты производства и потребления, а ребрами – возможные маршруты перемещения (линии электропередач, газопроводы, дороги и т.д.). Соответствующий класс задач оптимизации потоков грузов, размещения пунктов производства и потребления и т.д., иногда называется задачами обеспечения или задачами о размещении. Их подклассом являются задачи о грузоперевозках [5, 8, 20].
2. Задача о спросе и предложении. Оптовый торговец в каждый из N последовательных интервалов может покупать, продавать и хранить (чтобы продать позже) некоторый товар. Причем в каждый i период задаются: верхняя граница аi- количества товара, больше которого торговец купить не может: верхняя граница Сj-количества товара, которое он может хранить, и нижняя граница bi количества товара, которое он может продать. Заданы стоимости покупки, продажи и храпения is каждый 1-й период. Требуется определить оптимальную стратегию торговца, при которой он получит максимальную прибыль за N периодов.
3. Задача об оптимальном использовании дорог. Из различных городов Xi (i= 1, 2, ..., n) в пункт назначения у отправляются машины (при заданном начальном количестве ai- машин в пункте xi). Заданы продолжительности tijдвижения автомобплей по дорогам между пунктами xiи хj, максимальное количество машин Cij, которое может пропустить эта дорога; максимальное количеств) машин Сii, которое может находиться в пункте хi. Требуется составить оптимальный план движения автомобилей таким образом, чтобы в течение времен Т в пункт назначения у прибыло максимальное число автомашин.
4. Задача о кратчайшем пути. Пусть задана транспортная сеть, в которой имеются исток и сток. Дли каждой дуги указаны стоимости проезда (может быть указан километраж или время проезда).
Требуется найти путь, соединяющий начальною и конечную точки, суммарная стоимость проезда, по которому была бы минимальна.
5. Задача об оптимальной па значении. Требуемся распределить п рабочих по m машинам при известной производительности труда каждого рабочего на каждой машине таким образом, чтобы общая производительность труда была максимальной.
6. Задача о складе. Пусть задана емкость склада: количество товара, помещенное вначале; цены на товары, покупаемые и продаваемые в каждый i-й период времени, и расходы в этот период, связанные с храпением единицы товара. Требуется определить оптимальные количества товара, которые должны быть куп-лены и проданы в разные периоды времени таким образом, чтобы суммарная прибыль за N периодов была максимальна. Причем считается, что количества товара па складе в начале и в конце процесса купли — продажи равны между собой.
7. Задача о поставщике. Поставщик салфеток точно знает, сколько ему потребуется свежих салфеток на каждый из последующих дней. Он может выбрать одну из двух или обе следующие стратегии: покупать новые салфетки или пользовался салфетками, выстиранными в прачечной. В прачечной бывает срочное обслуживание и обычное, причем последнее при большей длительности стирки стоит меньше, чем первое. Зная цену новых салфеток и стоимость стирки, требуется при каком-то начальном количестве салфеток определить оптимальную стратегию, при которой поставщик будет обеспечивать потребителей необходимым числом салфеток при минимальных издержках в течение N дней.
8. Задача об оптимальном по стоимости сетевом графике. Задай сетевой график работы с общей продолжительностью tn. Считаем, что для каждой работы, которая представляется дугой, зависимость ее стоимости от продолжительности линейна. Требуется минимизировать полную стоимость проекта при заданной общей продолжительности работ.
9. «Технологические задачи», в которых вершины отражают производственные элементы (заводы, цеха, станки и т.д.), а дуги – потоки сырья, материалов и продукции между ними, заключаются в определении оптимальной загрузки производственных элементов и обеспечивающих эту загрузку потоков [15, 20, 24].
10. Обменные схемы, являющиеся моделями таких явлений как бартер, взаимозачеты и т.д. Вершины графа при этом описывают участников обменной схемы (цепочки), а дуги – потоки материальных и финансовых ресурсов между ними. Задача заключается в определении цепочки обменов, оптимальной с точки зрения, например, организатора обмена и согласованной с интересами участников цепочки и существующими ограничениями [7, 12, 18].
11. Управление проектамиУправление проектами – раздел теории управления, изучающий методы и механизмы управления изменениями (проектом называется целенаправленное изменение некоторой системы, осуществляемое в рамках ограничений на время и используемые ресурсы; характерной чертой любого проекта является его уникальность, то есть нерегулярность соответствующих изменений). С точки зрения теории графов проект – совокупность операций и зависимостей между ними (сетевой график - см. ниже). Хрестоматийным примером является проект строительства некоторого объекта. Совокупность моделей и методов, использующих язык и результаты теории графов и ориентированных на решение задач управления проектами, получила название календарно-сетевого планирования и управления (КСПУ). В рамках КСПУ решаются задачи определения последовательности выполнения операций и распределения ресурсов между ними, оптимальных с точки зрения тех или иных критериев (времени выполнения проекта, затрат, риска и др.).
12. Модели коллективов и групп, используемые в социологии, основываются на представлении людей или их групп в виде вершин, а отношений между ними (например, отношений знакомства, доверия, симпатии и т.д.) – в виде ребер или дуг. В рамках подобного описания решаются задачи исследования структуры социальных групп, их сравнения, определения агрегированных показателей, отражающих степень напряженности, согласованности взаимодействия, и др.
Задача почтальона.Пусть G связный граф, имеющий k вершин нечетной степени и заданный матрицей весов ребер. Требуется найти кратчайший замкнутый маршрут проходящий по всем ребрам графа. В качестве приложений где может потребоваться решение этой или сходной задачи, можно указать контроль различных коммуникационных сетей (дорожных, электрических, газовых и т.п.), когда необходимо проверять все протяженные компоненты сети В литературе по теории графов сформулированная выше задача называется задачей почтальона. Последнему далеко не безразлично знание наиболее короткого замкнутого маршрута обхода всех улиц своего участка (или некоторого их подмножества). Аналогичная задача стоит и перед курьером большого учреждения, доставляющим документы от одного источника к различным получателям.
Понятие дерева
Важный класс графов составляют графы, называемые деревьями. Дерево — это связный граф, который вовсе не имеет замкнутых путей (рис. 7).
Этот граф обладает следующим оптимальным свойством: среди всех связных графов с данным числом вершин дерево имеет наименьшее число ребер, а именно: число n вершин дерева и число m его ребер различаются на единицу
m = n - 1. (3)
Рис. 7
Если граф — конечный и связный, то легко построить дерево (и, как правило, не одно), множество вершин которого совпадало бы с множеством всех вершин заданного графа, а все ребра дерева одновременно были бы ребрами этого графа.
Это можно сделать, например, так. Пометим произвольную вершину графа, выберем какое-нибудь исходящее из нее ребро графа и пометим вершину, в которую это выбранное ребро входит. Если пара помеченных вершин не исчерпывает множества всех вершин графа, выбираем ребро графа, выходящее из одной из двух этих вершин в какую-нибудь третью непомеченную вершину этого графа, и помечаем ее. В случае если полученная тройка помеченных вершин не исчерпывает множества всех вершин графа, выбираем ребро графа, выходящее из одной из трех этих вершин в какую-нибудь четвертую непомеченную вершину этого графа, и помечаем ее. Продолжая описанную процедуру далее, мы неизбежно придем к ситуации, когда все вершины заданного графа окажутся помеченными. Напомним, что число вершин графа конечно, и если оно равно п, то потребуется ровно п — 1 шаг, на каждом из которых (кроме первого) помечается ровно одна новая (непомеченная) вершина графа. Множество выбранных ребер и помеченных вершин будет искомым деревом.
Всякое такое дерево называют деревом, порождающим граф, или порождающим деревом графа, или остовом графа, или его стягивающим остовом.
На рис. 8 последовательно (шаг за шагом) показано построение порождающего дерева для графа с семью вершинами.
Рис.8
Ясно, что порождающих деревьев у конечного связного графа может быть много. В частности, если граф — полный (любые две вершины соединены ребром), то число порождающих деревьев равно пn-2, где n—число его вершин.
Часто приходится рассматривать задачи, в которых каждому ребру заданного графа приписано некоторое положительное (неотрицательное) число (его вес). Обычно граф, нагруженный подобным образом, называют сетью, его вершины узлами, а ребра дугами.
В зависимости от приложений описанная числовая нагрузка дуги графа может иметь разный смысл и обозначать длину, стоимость, пропускную способность, временную протяженность и т. д.