- •Введение
- •Неориентированные графы
- •Основные определения
- •Маршруты, циклы и связность
- •Ориентированные графы
- •Основные определения
- •Маршруты и связность в ориентированных графах
- •Структуры данных для представления графа
- •Матричное представление графов
- •Матрица инциденций
- •Матрица циклов
- •Матрица разрезов
- •Матрица смежности вершин
- •Матрица путей
- •Представление графов в виде списков
- •Упорядоченные графы
- •Задачи нахождения путей в графах
- •Алгоритм вычисления стоимости прохождения между узлами
- •Алгоритм
- •Алгоритм нахождения кратчайшего пути
- •Задачи с одним источником
- •Алгоритм Дейкстры
- •Метод поиска в глубину
- •Алгоритм поиска в глубину на неориентированном графе
- •Поиск в глубину в ориентированном графе
- •Вычислительная сложность алгоритмов
- •Библиографический список
- •Оглавление
Структуры данных для представления графа
Существует много способов представления графов в машинной памяти. Выбор той или иной структуры данных для представления графа зависит от многих причин. Одной из них является специфика задачи, которая должна решаться при помощи теории графов.
Матричное представление графов
С помощью различных матриц можно описывать ориентированные и неориентированные графы, используя алгебраический аппарат. Эти матрицы задают отношения инциденций между вершинами и ребрами и, в более общем случае, между циклами, разрезами, цепями и соответствующими ребрами. Они являются удобной формой представления структурных свойств графа.
При описании неориентированных графов элементами матрицы инциденций могут быть только нули и единицы. Сложение чисел всегда будет производиться по модулю 2. В этом случае 1+1 = 0 (по модулю 2), 1 + 0 = 0 + 1 = 1 и 0 + 0 = 0. Таким образом, для выполнения операции сложения по модулю 2 необходимо просто сложить соответствующие элементы, затем разделить результат на 2 и остаток записать как результат сложения по модулю 2. Такой выбор элементов матриц позволяет определить наличие некоторого свойства между двумя элементами (тогда соответствующий элемент равен 1) или его отсутствие (тогда элемент равен 0).
Матрицы перемножаются и складываются как обычно, однако результат всегда записывается по модулю 2.
При описании ориентированных графов элементов 0 и 1 оказывается недостаточно, так как дуга может быть инцидентна данной вершине и направлена к ней, инцидентна и направлена от нее, или не инцидентна вершине. Поэтому для обозначения ориентированной инцидентности или ее отсутствия воспользуемся символами 1, -1, 0. Здесь мы уже не можем пользоваться приведением по модулю 2 и должны рассматривать матрицы с целочисленными элементами.
Конечно, с такими матрицами работать гораздо труднее. Однако принципиально к матрицам ориентированных графов применима теория, аналогичная теории для неориентированных графов.
Матрица инциденций
Пусть G - граф, имеющий п вершин и m ребер. Графу G можно сопоставить матрицу инциденций размером п т, строки и столбцы которой соответствуют вершинам и ребрам графа соответственно. Элемент матрицы ai принимает значение 1 или 0 в зависимости от того, инцидентно j-e ребро i-й вершине или нет. Для петли все элементы столбца считаются равными 0. Например, двухкомпонентный граф, показанный на рис. 6, имеет следующую матрицу инциденций.
![]()
![]()

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

Здесь Ai - матрица инциденций, соответствующая i-й компоненте графа.
Блочно-диагональное представление такого типа всегда можно получить последовательной нумерацией ребер и вершин внутри каждой компоненты и между компонентами, как показано в примере, или непосредственно с помощью перестановки строк и столбцов матрицы инциденций. Таким образом, матрица инциденций обеспечивает полное описание.
Элементы
матрицы инциденций ориентированного
графа принимают значения 0, 1, -1. Элемент
равен нулю, если вершина не инцидентна
дуге, +1, если дуга ориентирована от
вершины, и -1 в противном случае. На рис.
7 показан граф, матрица инциденций
которого приведена ниже.![]()


Рис. 7. Ориентированный граф
