Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Матричные представления графов




Информация о структуре графа может быть задана матрицей смежности. Матрицей смежности графа G=(X,V), | X|=n называется квадратная матрица , элементы которой определяются следующим образом:

Замечание. Матрица смежности неориентированного графа симметрична. В случае кратных ребер aij есть количество ребер, соединяющих вершины xi и xj. Для орграфа аij определяется как количество дуг, направленных от вершины xi к вершине xj.

Теорема 4.3.1. Графы изоморфны тогда и только тогда, когда их матрицы смежности получаются друг из друга одновременными перестановками строк и столбцов (т.е. одновременно с перестановкой i -й и j -й строк переставляются i -й и j -й столбцы).

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

Матрицей инцидентности графа G=(X,V), |Х|=п,|V|=m называется матрица , элементы которой определяются следующим образом:

 
 

если G – ориентированный граф, то

 

если G - неориентированный граф, то

 

Замечание. Для ориентированного графа петлю, т. е. дугу вида (хi, хi) удобно представлять иным значением в строке хi, например, 2.

 

Пример. Матричные представления графов проиллюстрированы на рис. 4.13, 4.14.

    (1,2) (1,3) (3,2) (3,4) (5,4) (5,6) (6,5)  
                     
      -1   -1          
В =       -1            
            -1 -1      
                  -1  
              -1    

 

      (1,2) (1,3) (1,5) (2,3) (2,5) (3,4) (4,5) (4,6) (5,6)  
                         
                         
В =                        
                         
                         
                         

 

Рис. 4.13:

а) ориентированный граф и его матрица инцидентности,

б) неориентированный граф и его матрица инцидентности

 

Рис. 4.14. Матрицы смежности для графов на рис. 4.13

Представление графов в ЭВМ

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

В теории графов классическим способом представления графа служит матрица инцидентности. Это матрица В с n строками, соответствующими вершинам, и т столбцами, соответствующими ребрам. С алгоритмической точки зрения матрица инцидентности является, вероятно, самым худшим способом представления графа, который только можно себе представить. Во-первых, он требует п´т ячеек памяти, причем большинство этих ячеек вообще занято нулями. Неудобен также доступ к информации. Ответ наэлементарные вопросы типа «существует ли дуга (xi, xj)?», «к каким вершинам ведут ребра из хi ?»требует в худшем случае перебора всех столбцов матрицы, а следовательно, т шагов.

Лучшим способомпредставления графа является матрица смежности,определяемая как матрица А =(аij)размера n n. Здесь подразумевается, что ребро (xi, xj) неориентированного графа идет как от xi к xj, так и от xj к хi, так что матрица смежности такого графа всегда является симметричной. Это проиллюстрировано на рис. 4.14б.

Основным преимуществом матрицы смежности является тот факт, что за один шаг можно получить ответ на вопрос «существует ли ребро из хi в xj?». Недостатком жеявляется тот факт, что независимо от числа ребер объем занятой памяти составляет n2. На практике этонеудобство можно иногда уменьшить, храня целую строку (столбец) матрицы в одном машинном слове – это возможно для малых n.

Более экономным в отношении памяти (особенно в случае неплотных графов, когда т гораздо меньше n2)является метод представления графа с помощью списка пар, соответствующих его ребрам. Пара (xi, xj) соответствует дуге (xi, xj),если граф ориентированный, и ребру (xi, xj) в случае неориентированного графа (рис. 4.15). Очевидно, что объем памяти в этом случае составляет 2 m. Неудобством является большое число шагов – порядка т в худшем случае, – необходимое для получения множества вершин, к которым ведут ребра из данной вершины.

Рис. 4.15. Списки ребер, соответствующие графам на рис 4.13

 

Ситуацию можно значительно улучшить, упорядочив множество пар лексикографически и применяя двоичный поиск, но лучшимрешением во многих случаях оказывается структура данных, которую называют списками инцидентности. Она содержит для каждой вершины список вершин xj, таких что (или xixj в случае неориентированного графа). Точнее, каждый элемент такого списка является записью r, содержащей вершину r.строка и указатель r.след на следующую запись в списке (r.след=nil для последней записи в списке). Начало каждого списка хранится в таблице НАЧАЛО; точнее, НАЧАЛО[xi] является указателем на начало списка, содержащего вершины из множества (xj: )((xj: xixj)для неориентированного графа). Весь такой список обычно неформально будем обозначать ЗАПИСЬ[xi], а цикл, выполняющий определенную операцию для каждого элемента xj из этого списка в произвольной, но четко установленной последовательности, соответствующей очередности элементов в списке, будем записывать «fоr xj ЗАПИСЬ[xi] do ...».

Отметим, что для неориентированных графов каждое, ребро (xj, xi) представлено дважды: через вершину xi в списке ЗАПИСЬ[xj] и через вершину xj в списке ЗАПИСЬ[xi]. Во многих алгоритмах структура графа динамически модифицируется добавлением и удалением ребер. Каждый элемент списка может содержать указатель не только к следующему элементу, но и к предыдущему. Аналогичным способом определяем для каждой вершины xi неориентированного графа список ПРЕДШ[xi], содержащий вершины из множества (xj: xixj).

Число ячеек памяти, необходимое для представления графа с помощью списков инцидентности, будет, очевидно, иметь порядок т+n. На рис. 4.16 представлены списки инцидентности, соответствующие графам на рис. 4.13.

 

Рис. 4.16. Списки инцидентности ЗАПИСЬ,

соответствующие графам на рис. 4.13

Операции над графами

 

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

I. Бинарные операции.

1. Объединение графов. Рассмотрим графы и . Объединение графов и , обозначаемое как , представляет собой такой граф , что множество его вершин является объединением и , а множество ребер – объединением и .

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

3. Кольцевой суммой графов G1 и G2 называется граф , где .

Замечание. Объединение, пересечение и другие операции над ориентированными графами определяются точно также, как и в случае неориентированных графов.

Пример. Для графов G1 =({ x 1, x 2, x 3}, {(x 1, x 2), (x 2, x 3)}) и G2 =({ x 1, x 2, x 4}, {(x 1, x 2), (x 4, x 1)}) (рис. 4.17) найдем , , . По определению имеем

=({ x 1, x 2, x 3, x 4},{(x 1, x 2), (x 2, x 3),(x 4, x 1)}),

=({ x 1, x 2}, {(x 1, x 2)}),

=({ x 1, x 2, x 3, x 4}, {(x 2, x 3), (x 4, x 1)}).

4. Соединением графов G1 + G2 называется граф {(xi, xj) | xi Î X 1, xj Î X 2, xi ¹ xj }).

Пример. Для графов G1 и G2, показанных на рис. 4.18 а, соединением G1+G2 является граф, представленным на рис. 4.18 б.

5. Произведением графов G 1 и G 2 называется граф , в котором ((x 1, y 1), (x 2, y 2))Î V тогда и только тогда, когда x 1= x 2 и (y 1, y 2V 2, или y 1= y 2 и (x 1, x 2V 1.

 
 

Пример. На рис. 4.19 изображено произведение графов G 1=({1, 2}, {(1, 1), (2, 1)}) и G 2 = ({ a, b, c },{(a, b), (b, a), (b, c)}).

 
 

 


II. Унарные операции.

1. Удаление вершины. При удалении вершины из графа удаляются и все инцидентные ей ребра (дуги).Пусть – граф и . Удалить вершину x из графа G – это значит построить новый граф , в котором и получается из V удалением всех ребер, инцидентных вершине x. Пример удаления вершины x из графа:

 
 

До удаления вершины x После удаления вершины x

 

 
 

2. Удаление ребра (дуги). Пусть – граф и . Удалить ребро (дугу) v – это значит построить новый граф , в котором и . Вот иллюстрация удаления ребра графа:

 

До удаления ребра v. Послеудаления ребра v

При удалении ребра (дуги) его концевые вершины не удаляются. Операцией, являющейся обратной к удалению ребра, является добавление ребра.

3. Слияние или отождествление вершин. Говорят, что вершины и в графе G отождествляются (сливаются), если они заменяются такой новой вершиной , что все ребра (дуги) графа, инцидентные и , становятся инцидентными новой вершине .

4. Стягивание ребра (дуги). Эта операция означает удаление ребра и отождествление его концевых вершин. Граф G 1 называется стягиваемым к графу G 2, если граф G 2 может быть получен из G 1 в результате некоторой последовательности стягиваний ребер.

Пример. Из графа G, показанного на рис. 4.20, добавлением вершины 5 образуется граф G1, добавлением дуги (3,1) – граф G2, удалением дуги (3,2) – граф G3, удалением вершины 2 – граф G4, отождествлением вершин 1 и 4 – граф G5, стягиванием дуги (2,3) – граф G6.

 

 

5. Подразбиение ребра. Пусть – граф и . Выполнить подразбиение ребра v – это значит построить новый граф , в котором (т.е. z – некая новая вершина) и . С графической точки зрения эта операция означает «внесение в ребро новой вершины». Вот графическая иллюстрация:

 

xx

z

 

yy

До внесения вершины z После внесения вершины z

Граф называется дополнением простого графа, если ребро (xi, xj) входит в в том и только в том случае, если оно не входит в V. Другими словами, две вершины смежны в тогда и только тогда, когда они не смежны в G.

Пусть G’ =(X’, V’) является подграфом графа G =(X, V). Подграф G’’ =(X, V \ V’) графа G называется дополнением графа G’ в графе G.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...