Вятский государственный университет
Опубликован: 07.04.2008 | Доступ: свободный | Студентов: 3264 / 854 | Оценка: 4.31 / 3.94 | Длительность: 06:04:00
Специальности: Программист, Математик
Лекция 2:

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

< Лекция 1 || Лекция 2 || Лекция 3 >
Аннотация: Приводятся основные операции над графами такие как объединение, пересечение, кольцевая сумма, удаление вершины, удаление ребра, замыкание и стягивание. Эти операции рассматриваются для представления графов матрицами смежности. Цель лекции: Дать представление об операциях над графами и возможных способах их представления в матричных структурах.

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

Объединение графов G1 и G2 , обозначаемое как G_{1} \cup  G_{2}, представляет такой граф G_{3} = (Х_{1} \cup  Х_{2}, A_{1} \cup  A_{2}), что множество его вершин является объединением Х1 и Х2 , а множество ребер – объединением A1 и A2 . Граф G3 , полученный операцией объединения графов G1 и G2 , показан на рис. 2.1,д, а его матрица смежности – на рис. 2.1,е. Матрица смежности результирующего графа получается операцией поэлементного логического сложения матриц смежности исходных графов G1 и G2 .


Рис. 2.1.

Пересечение графов G1 и G2 , обозначаемое как G_{1} \cap  G_{2}, представляет собой граф G_{4} = (Х_{1} \cap  Х_{2}, A_{1} \cap  A_{2}). Таким образом, множество вершин графа G4 состоит из вершин, присутствующих одновременно в G1 и G2 . Операция пересечения графов G_{1} \cap  G_{2} показана на рис. 2.2,в, а результирующая матрица смежности получается операцией поэлементного логического умножения матриц смежности исходных графов G1 и G2 . показана на рис. 2.2.г.


Рис. 2.2.

Рис.2.2. Операция пересечения и кольцевой суммы: а – граф G1 ; б – граф G2 ; в – граф G_{1} \cap  G_{2} ; г – матрица смежности графа G_{1} \cap  G_{2} ; д – граф G_{1} \oplus  G_{2 } ; е – матрица смежности графа G_{1} \oplus  G_{2 }

Кольцевая сумма двух графов G1 и G2 , обозначаемая как G_{1} \oplus  G_{2}, представляет собой граф G5 , порожденный на множестве ребер A_{1} \oplus  A_{2}. Другими словами, граф G5 не имеет изолированных вершин и состоит только из ребер, присутствующих либо в G1 , либо в G2 , но не в обоих одновременно. Кольцевая сумма графов G1 и G2 показана на рис. 2.2,д, а результирующая матрица смежности получается операцией поэлементного логического сложения по mod 2 матриц смежности исходных графов G1 и G2 . показана на рис. 2.2.е.

Легко убедиться в том, что три рассмотренные операции коммутативны т. е. G_{1} \cup  G_{2} = G_{2} \cup  G_{1}, G_{1} \cap  G_{2} = G_{2} \cap  G_{1}, G_{1} \oplus  G_{2} = G_{2} \oplus  G_{1}, и многоместны, т. е. G_{1} \cup  G_{2} \cup  G_{3} \cup  G_{4} \cup  \dots , G_{1} \cap  G_{2} \cap  G_{3} \cap  G_{4} \cap ... и так далее.

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

Удаление вершины. Если хi -вершина графа G = (X, A), то G–хi -порожденный подграф графа G на множестве вершин X–хi , т. е. G–хi является графом, получившимся после удаления из графа G вершины хi и всех ребер, инцидентных этой вершине. Удаление вершины х3 показано на рис. 2.3,б (для исходного графа, изображенного на рис. 2.3,а). Матрица смежности исходного графа представлена на таблице 2.1а). Результирующая матрица смежности графа после выполнения операции удаления вершины хi получается путем удаления соответствующего i - го столбца и i -ой строки из исходной матрицы и "сжимания" матрицы по вертикали и горизонтали начиная с (i+1) - го столбца и (i+1) -ой строки ( таблица 2.1б). В дальнейшем элементы графа могут быть переобозначены.


Рис. 2.3.

Удаление ребра или удаление дуги. Если ai - дуга графа G = (X, A), то G-ai – подграф графа G, получающийся после удаления из G дуги ai . Заметим, что концевые вершины дуги ai не удаляются. Удаление из графа множества вершин или дуг определяется как последовательное удаление определенных вершин или дуг. Удаление дуг a4 и a7 показано на рис. 2.3,в. Результирующая матрица смежности графа после выполнения операции удаления дуги ai получается путем удаления соответствующих элементов из исходной матрицы ( таблица 2.1в).

Таблица 2.1a.
X1 X2 X3 X4 X5
X1 1
X2 1 1
X3 1 1
X4 1
X5 1 1
Таблица 2.1б.
X1 X2 X4 X5
X1 1
X2 1
X4
X5 1 1
Таблица 2.1в.
X1 X2 X3 X4 X5
X1 1
X2 1
X3 1 1
X4
X5 1 1
Таблица 2.1г.
X1-2 X3 X4 X5
X1-2 1 1 1
X3 1 1
X4 1
X5 1 1
Таблица 2.1д.
X1-2 X3 X4 X5
X1-2 1 1
X3 1 1
X4 1
X5 1 1
Таблица 2.1е.
X1-2 X3-4 X5
X1-2 1 1
X3 1
X5 1 1

Замыкание или отождествление. Говорят, что пара вершин хi и xj в графе G замыкается (или отождествляется), если они заменяются такой новой вершиной, что все дуги в графе G, инцидентные хi и xj , становятся инцидентными новой вершине. Например, результат замыкания вершины х1 и х2 показан на рис. 2.3,г для графа G ( рис. 2.3,а). Матрица смежности графа после выполнения операции замыкания вершин хi и xj получается путем поэлементного логического сложения i - го и j - го столбцов и i -ой и j - строк в исходной матрице и "сжимания" матрицы по вертикали и горизонтали ( таблица 2.1г).

Стягивание. Под стягиванием подразумевают операцию удаления дуги или ребра и отождествление его концевых вершин. Граф, изображенный на рис. 2.3,д получен стягиванием дуги a1 , а на рис. 2.3,е – стягиванием дуг a1 , a6 и a7 . Соответствующие результирующие матрицы смежности показаны в таблицах 2.1д и 2.1е.

< Лекция 1 || Лекция 2 || Лекция 3 >
Dmitry Schelkov
Dmitry Schelkov

В лекции 3 часть номер 2 приведён пример нахождения транзитивного замыкания по матрице смежности. Из примера для обратного транзитивного замыкания видно, что путь для достижения вершины х6 в вершину х3 равен 3, а не 2, как показано в табличном примере. Мне кажется, что в лекции ошибка.

Вячеслав Коваленко
Вячеслав Коваленко

В курсе "Введение в теорию графов" в лекции 4 "Достижимость в графарх" дано выражение для нахождения множетсва вершин, входящих в путь из одной вершины графа в другую и по рис.4.2. показан пример нахождения такого множества для пути из вершины х2 в вершину х4 - это множетсво (х2, х3, х4, х5). По рисунку видно что путь не оптимален и для того, чтобы он проходил через все вершины этого множества, через х4 нужно пройти два раза. Правильно ли я понимаю, что данное определение пути дает не всегда оптимальный путь и что определение оптимально (кратчайшего) пути - отдельная задача? Или в примере ошибка?