Алексеев В.Е., Таланов В.А. Графы и алгоритмы - файл n1.doc
приобрестиАлексеев В.Е., Таланов В.А. Графы и алгоритмыскачать (498 kb.)
Доступные файлы (1):
Смотрите также:- Алгоритмы решения некоторых теоретико-графовых задач (Лекция)
- Лекции по дискретной математике. Глава 2. Часть 2 (Лекция)
- Алексеев В.Б., Ложкин С.А. Элементы теории графов (Лекция)
- Алексеев В.Б., Ложкин С.А. Элементы теории графов, схем и автоматов (Документ)
- Носов В.А. Комбинаторика и теория графов (Документ)
- Степанов В.Н. Дискретная математика: графы и алгоритмы на графах (Документ)
- Асанов М.О., Баранский В.А., Расин В.В. Дискретная математика: графы, матроиды, алгоритмы (Документ)
- Хиценко В.П., Шапошникова Т.А. Практикум на ЭВМ. Алгоритмы (Документ)
- Бобцов А.А., Болтунов Г.И. и др. Управление непрерывными и дискретными процессами (Документ)
- Бобцов А.А., Болтунов Г.И. и др. Управление непрерывными и дискретными процессами (Документ)
- Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение (Документ)
- Лекции по теории графов (Лекция)
n1.doc
Графы и алгоритмы Авторы:
В.Е. Алексеев,
В.А. Таланов Содержание
Начальные понятия теории графов
Определение графа
Графы и бинарные отношения
Откуда берутся графы
Число графов
Смежность, инцидентность, степени
Некоторые специальные графы
Графы и матрицы
Взвешенные графы
Изоморфизм
Инварианты
Операции над графами
Локальные операции
Подграфы
Алгебраические операции
Начальные понятия теории графов
Графы являются существенным элементом математических моделей в самых разнообразных областях науки и практики. Они помогают наглядно представить взаимоотношения между объектами или событиями в сложных системах. Многие алгоритмические задачи дискретной математики могут быть сформулированы как задачи, так или иначе связанные с графами, например задачи, в которых требуется выяснить какие-либо особенности устройства графа, или найти в графе часть, удовлетворяющую некоторым требованиям, или построить граф с заданными свойствами.
Цель этой и двух следующих лекций - дать краткое введение в теорию графов. В них приводится минимум понятий, необходимый для того, чтобы можно было начать какую-либо содержательную работу с графами или приступить к более глубокому изучению теории графов. Доказательства приводятся только в тех случаях, когда их сложность не превышает некоторого интуитивно ощущаемого порога. Поэтому, например, такие важные факты, как теорема Кирхгофа или теорема Понтрягина-Куратовского, сообщаются без доказательств.
Определение графа
Для описания строения различных систем, состоящих из связанных между собой элементов, часто используют графические схемы, изображая элементы точками (кружками, прямоугольниками и т.д.), а связи между ними - линиями или стрелками, соединяющими элементы. При этом получаются диаграммы вроде тех, что показаны на
рис. 1.1.
Рис. 1.1. На таких диаграммах часто ни способ изображения элементов, ни форма или длина линий не имеют значения - важно лишь, какие именно пары элементов соединены линиями. Если посмотреть внимательно, то можно заметить, что
рисунки 1.1а и
1.1 б изображают одну и ту же структуру связей между элементами

,

,

,

,

,

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

,

,

,

,

,

,

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

и

различными. Если да, то говорят, что рассматриваются упорядоченные пары (порядок элементов в паре важен), если нет - неупорядоченные. Если ребро

соединяет вершину

с вершиной

и пара

считается упорядоченной, то это ребро называется
ориентированным, вершина

- его
началом, вершина

-
концом. Если же эта пара считается неупорядоченной, то ребро называется
неориентированным, а обе вершины - его
концами. Чаще всего рассматривают графы, в которых все ребра имеют один тип - либо ориентированные, либо неориентированные. Соответственно и весь граф называют ориентированным или неориентированным. На рисунках ориентацию ребра (направление от начала к концу) указывают стрелкой. На
рис. 1.1 показаны неориентированные графы, а на
рис. 1.2 - ориентированные.
Кратные ребра.
Следующий пункт, требующий уточнения, - могут ли разные ребра иметь одинаковые начала и концы? Если да, то говорят, что в графе допускаются
кратные ребра. Граф с кратными ребрами называют также
мультиграфом. На
рис. 1.2 изображены два графа, левый является ориентированным мультиграфом, а правый - ориентированным графом без кратных ребер.
Петли.
Ребро, которому поставлена в соответствие пара вида

, то есть ребро, соединяющее вершину

с нею же самой, называется
петлей. Если такие ребра не допускаются, то говорят, что рассматриваются
графы без петель.
Рис. 1.2. Комбинируя эти три признака, можно получить разные варианты определения понятия графа. Особенно часто встречаются неориентированные графы без петель и кратных ребер. Такие графы называют
обыкновенными. Если в графе нет кратных ребер, то можно просто отождествить ребра с соответствующими парами вершин - считать, что ребро это и есть пара вершин. Чтобы исключить петли, достаточно оговорить, что вершины, образующие ребро, должны быть различны. Это приводит к следующему определению обыкновенного графа.
Определение. Обыкновенным графом называется пара

, где

- конечное множество,

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

. Элементы множества

называются
вершинами графа, элементы множества

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

будем обозначать через

, множество ребер -

, число вершин -

, число ребер -

.
Из определения видно, что для задания обыкновенного графа достаточно перечислить его вершины и ребра, причем каждое ребро должно быть парой вершин. Положим, например,

,

. Тем самым задан граф

с

,

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

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

называется любое подмножество

множества

, состоящего из всевозможных упорядоченных пар элементов множества

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

называется
рефлексивным, если для любого

пара

принадлежит

, и
антирефлексивным, если ни одна такая пара не принадлежит

. Отношение называется
симметричным, если из

следует, что

. В графе антирефлексивного и симметричного отношения нет петель и для каждой пары вершин либо нет ни одного, либо есть два ребра, соединяющих эти вершины. Если в таком графе каждую пару ориентированных ребер, соединяющих одни и те же две вершины, заменить одним неориентированным ребром, то получится обыкновенный граф.
Откуда берутся графы
Легко найти примеры графов в самых разных областях науки и практики. Сеть дорог, трубопроводов, электрическая цепь, структурная формула химического соединения, блок-схема программы - в этих случаях графы возникают естественно и видны "невооруженным глазом". При желании графы можно обнаружить практически где угодно. Это наглядно показано в книге Д.Кнута [D.E.Knuth, "The Stanford GraphBase"] - графы извлекаются из романа "Анна Каренина", из картины Леонардо да Винчи, из материалов Бюро Экономического Анализа США и из других источников.
Немало поводов для появления графов и в самой математике. Наиболее очевидный пример - любой многогранник в трехмерном пространстве. Вершины и ребра многогранника можно рассматривать как вершины и ребра графа. При этом мы отвлекаемся от того, как расположены элементы многогранника в пространстве, оставляя лишь информацию о том, какие вершины соединены ребрами. На
рис. 1.4 показаны три способа изобразить один и тот же граф трехмерного куба.
Рис. 1.4. Еще один способ образования графов из геометрических объектов иллюстрирует
рис. 1.5. Слева показаны шесть кругов на плоскости, а справа - граф, в котором каждая вершина соответствует одному из этих кругов и две вершины соединены ребром в том и только том случае, когда соответствующие круги пересекаются. Такие графы называют графами пересечений. Можно построить граф пересечений семейства интервалов на прямой, или дуг окружности, или параллелепипедов. Вообще, для любого семейства множеств

можно построить граф пересечений с множеством вершин

, в котором ребро

имеется тогда и только тогда, когда

и

. Известно, что любой граф можно представить как граф пересечений некоторого семейства множеств.
Рис. 1.5. Число графов
Возьмем какое-нибудь множество

, состоящее из

элементов, и будем рассматривать всевозможные (обыкновенные!) графы с множеством вершин

. Обозначим число таких графов через

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

. В комбинаторике такие пары называются сочетаниями из

по 2, их число равно
Каждая пара может быть включена или не включена в множество ребер графа. Применяя правило произведения, приходим к следующему результату:
Теорема 1. 
.
Смежность, инцидентность, степени
Если в графе имеется ребро

, то говорят, что вершины

и
смежны в этом графе, ребро
инцидентно каждой из вершин

,

, а каждая из них
инцидентна этому ребру.
Множество всех вершин графа, смежных с данной вершиной

, называется
окрестностью этой вершины и обозначается через

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

перечисляются все смежные с ней вершины, т.е. элементы множества

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

, называется
степенью вершины

и обозначается через

.
Если сложить степени всех вершин некоторого графа, то каждое ребро внесет в эту сумму вклад, равный 2, поэтому справедливо следующее утверждение:
Теорема 2. 
.
Это равенство известно как "лемма о рукопожатиях". Из него следует, что число вершин нечетной степени в любом графе четно.
Вершину степени

называют
изолированной.
Граф называют
регулярным степени

, если степень каждой его вершины равна

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

обозначается через

.
Полный граф - граф, в котором каждые две вершины смежны. Полный граф с множеством вершин

обозначается через

.
Граф

, в частности, имеет одну вершину и ни одного ребра. Очевидно,

. Будем считать также, что существует граф

, у которого

.
Цепь(
путь)

- граф с множеством вершин

и множеством ребер

.
Цикл 
- граф, который получается из графа

добавлением ребра

.
Все эти графы при

показаны на
рис. 1.6
Рис. 1.6. Графы и матрицы
Пусть

- граф с

вершинами, причем

. Построим квадратную матрицу

порядка

, в которой элемент

, стоящий на пересечении строки с номером

и столбца с номером

, определяется следующим образом:
Она называется
матрицей смежности графа. Матрицу смежности можно построить и для ориентированного графа, и для неориентированного, и для графа с петлями. Для обыкновенного графа она обладает двумя особенностями: из-за отсутствия петель на главной диагонали стоят нули, а так как граф неориентированный, то матрица симметрична относительно главной диагонали. Обратно, каждой квадратной матрице порядка

, составленной из нулей и единиц и обладающей двумя указанными свойствами, соответствует обыкновенный граф с множеством вершин

.
Другая матрица, ассоциированная с графом - это
матрица инцидентности. Для ее построения занумеруем вершины графа числами от 1 до

, а ребра - числами от 1 до

. Матрица инцидентности

имеет

строк и

столбцов, а ее элемент

равен 1, если вершина с номером

инцидентна ребру с номером

, в противном случае он равен нулю. На
рис. 1.7 показан граф с занумерованными вершинами и ребрами и его матрицы смежности и инцидентности.
Рис. 1.7. Для ориентированного графа матрица инцидентности определяется несколько иначе: ее элемент

равен 1, если вершина

является началом ребра

, и равен

, если она является концом этого ребра, и он равен

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

или ребер -
взвешенным графом.
Изоморфизм
На
рис. 1.8 изображены два графа с одним и тем же множеством вершин

. При внимательном рассмотрении можно обнаружить, что это разные графы - в левом имеется ребро

, в правом же такого нет. В то же время, если не обращать внимания на наименования вершин, то эти графы явно одинаково устроены: каждый из них - цикл из четырех вершин. Во многих случаях при исследовании строения графов имена или номера вершин не играют роли, и такие графы, один из которых получается из другого переименованием вершин, удобнее было бы считать одинаковыми. Для того чтобы это можно было делать "на законном основании", вводится понятие изоморфизма графов.
Рис. 1.8. Определение. Графы

и

называются
изоморфными, если существует такая биекция

множества

на множество

, что

тогда и только тогда, когда

. Отображение

в этом случае называется
изоморфизмом графа

на граф

.
Тот факт, что графы

и

изоморфны, записывается так:

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

вершин имеется

! биекций и эта работа становится практически невыполнимой уже для не очень больших

(например,

). Однако во многих случаях бывает довольно легко установить, что два данных графа неизоморфны. Рассмотрим, например, графы, изображенные на
рис. 1.9.
Так как при изоморфизме пара смежных вершин переходит в пару смежных, а пара несмежных - в пару несмежных, то ясно, что число ребер у двух изоморфных графов должно быть одинаковым. Поэтому сразу можно сказать, что графы

и

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

и

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

и

эти наборы различны. С графами

и

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

есть цикл длины 3, а в графе

таких циклов нет. Ясно, что при изоморфизме каждый цикл длины 3 переходит в цикл длины 3.
Рис. 1.9. Характеристики графов, которые сохраняются при изоморфизме, называются
инвариантами. В этом примере мы видели некоторые простые инварианты - число ребер, набор степеней, число циклов заданной длины, в дальнейшем будут введены еще некоторые другие. Если удается установить, что для двух исследуемых графов некоторый инвариант принимает разные значения, то эти графы неизоморфны. Для того чтобы доказать, что два графа изоморфны, необходимо предъявить соответствующую биекцию.
Операции над графами
Для получения новых графов можно использовать разнообразные операции над графами. Здесь мы рассмотрим два вида операций -
локальные, при которых заменяются, удаляются или добавляются отдельные элементы графа, и
алгебраические, когда новый граф строится по определенным правилам из нескольких имеющихся.
Локальные операции
Простейшая операция -
удаление ребра. При удалении ребра сохраняются все вершины графа и все его ребра, кроме удаляемого. Обратная операция -
добавление ребра.
При
удалении вершины вместе с вершиной удаляются и все инцидентные ей ребра. Граф, получаемый из графа

удалением вершины

, обозначают

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

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

и

удаляются из графа, к нему добавляется новая вершина

и она соединяется ребром с каждой вершиной, с которой была смежна хотя бы одна из вершин

.
Операция
подразбиения ребра 
действует следующим образом. Из графа удаляется это ребро, к нему добавляется новая вершина

и два новых ребра

и

. На
рис. 1.10 изображены исходный граф

, граф

, полученный из него стягиванием ребра

и

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

.
Рис. 1.10. Подграфы
Граф

называется
подграфом графа

, если

,

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

и его подграфы

,

,

,

.
Рис. 1.11. Подграф

графа

называется
остовным, если

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

, а

,

и

не являются остовными подграфами.
Другая важная разновидность подграфов -
порожденные подграфы. Пусть задан граф

и в нем выбрано множество вершин

. Рассмотрим подграф

, где

состоит из всех тех ребер графа

, у которых оба конца принадлежат

. Говорят, что этот подграф
порожден множеством вершин 
. Он обозначается через

. Порожденный подграф может быть получен из графа удалением "лишних" вершин, т.е. вершин, не принадлежащих

.
Можно определить также подграф,
порожденный множеством ребер 
. Это подграф

, где

состоит из всех вершин, инцидентных ребрам из

.
На
рис. 1.11 
- подграф графа

, порожденный множеством вершин

, т.е.

, он же порождается множеством ребер

; подграф

не порождается множеством вершин, но порождается множеством ребер

; подграф

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

и

определяется как граф

, у которого

,

, а
пересечение - как граф

, у которого

,

. Обе операции иллюстрирует
рис. 1.12.
Рис. 1.12. Дополнением (
дополнительным графом) к графу

называется граф

, у которого множество вершин то же, что у

, а множество ребер является дополнением множества

до множества всех неупорядоченных пар вершин. Иначе говоря, две различные вершины смежны в графе

тогда и только тогда, когда они несмежны в графе

. Например,

. Другой пример показан на
рис. 1.13. Очевидно, что всегда

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

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

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

, то полученный граф обозначается через

. Например,

. На
рис. 1.14 изображен граф

.
Рис. 1.14.
Рис. 1.15. Соединением двух графов

и

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

. На
рис. 1.15 представлен граф

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

вершин, в другом

, и две вершины в нем смежны тогда и только тогда, если они принадлежат разным подмножествам. Второй -
колесо 
. На
рис. 1.16 показаны графы

и

.
Рис. 1.16. Произведение 
графов

и

определяется следующим образом. Множеством вершин графа

является декартово произведение множеств

и

, то есть вершины этого графа - упорядоченные пары

, где

- вершина первого сомножителя,

- вершина второго. Вершины

и

в

смежны тогда и только тогда, если

и

смежна с

в графе

, или

и

смежна с

в графе

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

- мерный куб

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

. Всего, таким образом, в этом графе

вершин. Вершины

и

смежны в нем тогда и только тогда, когда наборы

и

различаются точно в одной координате. С помощью операции произведения граф

можно определить рекурсивно:
На
рис. 1.18 показано, как получается

из

.
Рис. 1.18.
Графы и алгоритмы