|
Структуры данных для представления графа
Существует много способов представления графов в машинной памяти. Выбор той или иной структуры данных для представления графа зависит от многих причин. Одной из них является специфика задачи, которая должна решаться при помощи теории графов.
Матричное представление графов
С помощью различных матриц можно описывать ориентированные и неориентированные графы, используя алгебраический аппарат. Эти матрицы задают отношения инциденций между вершинами и ребрами и, в более общем случае, между циклами, разрезами, цепями и соответствующими ребрами. Они являются удобной формой представления структурных свойств графа.
При описании неориентированных графов элементами матрицы инциденций могут быть только нули и единицы. Сложение чисел всегда будет производиться по модулю 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. Ориентированный граф
Матрица циклов
Циклы Ci графа, изображенного на рис. 8, (перенумерованные, как показано на рис. 9), можно представить матрицей, каждая строка которой характеризует один из циклов:
Рис. 8. Несвязный циклический граф
Рис. 9. Нумерация циклов в графе
Матрица разрезов
Если задан связный граф G = (V, E) и множество его вершин разбито на два непустых подмножества W и W’, то множество ребер, соединяющих W с W’, называется разрезом. То есть, разрез (и в частности, простой разрез) является множеством ребер, соединяющих W и W’ , где {W, W’} является разбиением вершин связного графа на два непересекающихся непустых множества. Удаление разреза приводит к тому, что граф распадается на две или более компоненты. Удаление простого разреза разделяет граф точно на две компоненты.
В ориентированном графе дуги разреза могут быть разделены на два множества: дуги, направленные из W в W’, и дуги, направленные из W’ в W. Удаление первого множества разрывает все пути из W к W’, в то время как удаление последнего разрывает все пути из W’ к W.
Опишем теперь простые разрезы графа, изображенного на рис. 10, с помощью матрицы разрезов, каждая строка которой характеризует один простой разрез. В данном случае мы имеем следующие простые разрезы:
K1 = {e2}, K2 = {e3, e7}, K3 = {e4, e5},
K4 = {e3, e4, e5}, K5 = {e3, e5, e6}, K6 = {e4, e6, e7}, K7 = {e5, e6, e7}.
При этом матрица разрезов будет иметь вид:
Рис. 10. Простые разрезы графа
Матрица смежности вершин
Для ориентированных и неориентированных графов можно определить матрицу смежности вершин (или просто матрицу смежности). Элемент на пересечении i-й строки и j-го столбца этой матрицы равен числу ребер, инцидентных одновременно i-й и j-й вершинам (или направленных от вершины i к вершине j в случае ориентированного графа). Таким образом, для ориентированного графа, изображенного на рис. 8, можно построить матрицу смежности следующего вида:
В общем случае имеет место следующая теорема, касающаяся матрицысмежности V графа.
Теорема. Матрица Vn дает число ориентированных маршрутов длины п между любыми двумя вершинами ориентированного графа.
Доказательство. Если аik – число дуг, соединяющих vi с vk, а аkj – число дуг, соединяющих vk с vj, то аikаkj есть число различных ориентированных маршрутов, каждый из которых состоит из двух дуг, соединяющих vi с vj, и проходящих через vk. Если это произведение просуммировать по всем k, т. е. по всем промежуточным вершинам, то получим число ориентированных маршрутов длины 2 между вершинами vi и vj. Используем теперь аij для получения аijаjm. В результате найдем число различных ориентированных маршрутов длины 3 между вершинами vi и vm проходящих через vj, и так далее. Таким образом, если предположить, что теорема верна для , то элементы матрицы дадут число ориентированных маршрутов длины п между соответствующими вершинами.
Матрица вершин, как в случае ориентированных, так и в случае неориентированных графов имеет неотрицательные элементы. Нулевой элемент означает, что вершина, соответствующая строке рассматриваемого элемента, не связана ребром с вершиной, соответствующей столбцу. Однако эти вершины могут быть связаны путем (или цепью) определенной длины. Может оказаться, что Vm>0 для некоторого целого m ³ 1 , т. е. после возведения V в степень m все ее элементы становятся положительными.
В этом случае каждая вершина достижима из любой другой вершины ориентированным маршрутом, состоящим из т дуг, и граф, соответствующий Vm, является полным (действительно, он имеет дугу, направленную от любой другой) и имеет петли у каждой вершины.
Матрица путей
Для связного графа, вершины которого перенумерованы, можно построить матрицу путей (или цепей) Р следующим образом: строки матрицы должны соответствовать путям из первой вершины в последнюю, а столбцы – ребрам графа. Следовательно, элемент матрицы принимает значение 1 или 0 в зависимости от того, принадлежит ли данное ребро данному пути или нет. Например, граф, изображенный на рис. 11, имеет матрицу путей между вершинами v1 и v5:
Рис.11. Граф для иллюстрации матрицы путей
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|