О машинном представлении графов.
Очевидно, что наиболее понятный и полезный для человека способ представления графа - изображение графа на плоскости в виде точек и соединяющих их линий - будет совершенно бесполезным, если мы хотим решать с помощью ЭВМ задачи, связанные с графами. Выбор соответствующей структуры данных для представления графов оказывает принципиальное влияние на эффективность алгоритмов.
В теории графов классическим способом представления графа служит матрица инциденций. Для графа G=<V, E> - это матрица I(G) с n строками, соответствующими вершинам, |V| = n, и с m столбцами, |E| = m, соответствующими ребрам. Для ориентированного графа столбец, соответствующий ребру < x, y > содержит 1 в строке, соответствующей вершине x, 1 в строке, соответствующей вершине y, и нули во всех остальных строках (петлю <x, x> иногда представляют значением 2). В случае неориентированного графа столбец, соответствующий ребру {x, y}, содержит 1 в строках, соответствующих x и y, и нули в остальных строках.
Пример.
Рис. 3.2.
Для ориентированного графа, изображенного на рис. 3.2, матрица инциденций имеет вид:
<1,2> <1,3> <3,2> <3,4> <4,3>
С алгоритмической точки зрения матрица инциденций является, вероятно, самым худшим способом представления графа, который только можно представить. Во-первых, он требует mn ячеек памяти. Доступ неудобен. Ответ на элементарные вопросы типа “существует ли ребро <x,y>?”, “к каким вершинам ведут ребра из x?”, требует перебора всех столбцов матрицы.
Более удобным способом представление графа является матрица смежности (вершин), определяемая как матрица B = || bi j|| размера nn, где bi j = 1, если существует ребро, ведущее из вершины x в вершину y, bi j = 0 в противном случае. Здесь мы подразумеваем, что ребро {x, y} неориентированного графа идет как от x к y, так и от y к x, так что матрица смежности такого графа всегда является симметричной. Ответ на вопрос типа “{x,y}E ?” может быть получен за один шаг.
Недостаток такого способа представления графа - nn ячеек занятой памяти независимо от числа ребер.
Более экономным в отношении требуемого объема памяти (особенно для неплотных графов m << nn) является метод представления графа с помощью списка пар. Пара (x, y) соответствует ребру <x, y>, если граф ориентированный, и ребру {x, y}, если граф неориентированный. Очевидно, что объем памяти в этом случае составляет 2m ячеек. Неудобство - большое число шагов, порядка m в худшем случае, необходимое для получения множества вершин, к которым ведут ребра из данной вершины.
Для приведенного на рис. 3.2. графа список пар имеет следующий вид:
(1, 2), (3, 2), (4, 3),
(1,3), (3, 4) .
Ситуацию можно значительно улучшить, упорядочив множество пар лексикографически и применяя двоичный поиск, но лучшим решением во многих случаях оказывается структура данных, которая называется списками инцидентности.
Она содержит для каждой вершины vV список вершин u, таких что < v, u >E (или { v, u }E в случае неориентированного графа). Для графа. представленного на рис. 3.2, список инцидентности имеет следующий вид:
Вершина | Список инцидентности | |||||
1 | 1 | | 2 | | 3 | |
2 | 2 | |
|
|
|
|
3 | 3 | | 2 | | 4 | |
4 | 4 | | 3 | |
|
|
1 | |
где
- Журавлев ю.И., Флеров ю.А. Дискретный анализ
- Элементы комбинаторики.
- Введение
- Два принципа комбинаторики
- Функции и размещения
- Числа Стирлинга первого рода
- Циклическая структура перестановок
- Упорядоченные размещения.
- Сочетания и биномиальные коэффициенты.
- Производящие функции
- Биномиальные коэффициенты
- Исчисление конечных разностей
- Разложения
- Полиномиальные коэффициенты
- Разбиения
- Число разбиений
- 1. Формула 1.
- 2. Формула 2.
- Числа Белла.
- Принцип включений - исключений
- Задача о числе беспорядков (Задача о встречах)
- Количество сюръективных отображений
- Перестановки с ограничениями на местоположение
- Системы представителей множеств
- Системы различных представителей
- Системы общих представителей
- Функции алгебры логики
- Элементарные высказывания
- Элементарные логические операции (функции)
- Алгебраические свойства элементарных операций
- Разложение функций алгебры логики по переменным
- Функциональная полнота систем функций алгебры логики
- 1. Замена переменных.
- 2. Суперпозиция функций алгебры логики.
- Замкнутые классы.
- Критерий полноты
- Представление о результатах Поста
- Элементы теории графов
- Степени вершин
- О машинном представлении графов.
- Поиск в графе
- Поиск в глубину в графе
- Поиск в ширину в графе
- Пути и циклы
- Связность
- Деревья
- Остовное дерево (каркас)
- Эйлеровы пути и циклы
- Aлгоритм построения эйлерова цикла
- Гамильтоновы пути и циклы
- Нахождение кратчайших путей в графе
- Алгоритм нахождения расстояния от источника до всех остальных вершин в ориентированном графе с неотрицательными весами ребер
- Максимальный поток в сети
- Рекомендуемая литература.
- Оглавление