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

Лекция 7: Методы разбиения графа на максимальные сильно связные подграфы

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Аннотация: Рассматриваются методы разбиения графов на сильно связные подграфы: метод Мальгранжа и матричный метод. Цель лекции: Дать представление о методах разбиения графов на сильно связные подграфы.

Метод Мальгранжа

Пусть дан граф G=(X, A), где X={ хi }, i =1, 2, ... , n – множество вершин, а A={ ai }, i =1, 2, ..., m – где множество дуг, описанных матрицей смежности. Алгоритм разбиения заключается в следующем [4].

  1. Для произвольной вершины х_{i}  \in   X находим прямое T+i) и обратное T-i) транзитивные замыкания.
  2. Находим T^{+}(х_{i})  \cap   T^{-}(х_{i}). Множество вершин этого пересечения составляют вершины максимального сильно связного подграфа G1 = (Х1, A1).
  3. Из исходного графа вычитаем подграф G1:G '=G\G1, Х'=X\Х1 .
  4. Граф G ' принимаем за исходный граф и пока X ' \ne   \varnothing пункты 1, 2, 3 алгоритма повторяются.

Рассмотрим этот алгоритм более подробно на примере разбиения графа, представленного на рис. 7.1,a, матрица смежности которого показана на рис. 7.1,б.


Рис. 7.1.

РАЗБИЕНИЕ – 1 .

Таблица 7.1.
X1 X7 X11
X1 1
A7= X7 1
X11 1 1
  1. Начальной вершиной первого разбиения выберем х1 . Построим прямое и обратное транзитивные замыкания. T+1) – столбец, показанный справа от матрицы А, а T-1) – строка, находящаяся ниже матрицы смежности.

    T+1) = {х1, х4, х5, х6, х7, х8, х11 },

    T-1) = {х1, х2, х3, х7, х9, х10, х11}.

  2. Находим T^{+}(х_{1})  \cap   T^{-}(х_{1}) = \{ х_{1}, х_{7}, х_{11}\}. Эти вершины и составляют первый выделенный, максимальный сильно связный подграф G1 = (Х1, A1), где Х1 = {х1, х7, х11}, а матрица смежности A1 подграфа G1 показана на таблица 7.1.
  3. Из исходного графа G вычитаем подграф G1 G ' = G \G1 ;

    G ' = (X ', A'), X ' = { х2, х3, х4, х5, х6, х8, х9, х10 }.

  4. Так как X ' не пустое множество, то G' принимаем за G и переходим ко второму разбиению.

РАЗБИЕНИЕ – 2

Таблица 7.2.
X2 X3 X4 X5 X6 X8 X9 X10   T+(x2)
X2 1 1 0
X3 1 1 1 1
X4 1 1
X5 1
A= X6 1 1
X8 1
X9 1
X10 1 1 1
 
T-(x2) 0
  1. Выбираем любую вершину, принадлежащую X, например, х2 , и находим T+2) и T-2). Это показано в таблице 7.2. T+2) = { х2, х8 } ; T-2) = { х2 }.
  2. T^{+}(х_{2})  \cap   T^{-}(х_{2}) = \{  х_{2} \}. Следовательно, второй выделенный подграф G2 состоит из одной вершины х2 .
  3. G ' = G \G2; G ' = (X ', A'); X ' = { х3, х4, х5, х6, х8, х9, х10 }.
  4. Так как X ' не пустое множество, то G ' принимаем за G и процесс разбиения продолжается.
< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Dmitry Schelkov
Dmitry Schelkov

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

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

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