Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Определение связности графа



Неориентированный граф называется связным, если для любой пары вершин хijÎX существует хотя бы один маршрут, их соединяющий. В противном случае граф несвязан. Несвязный граф может быть единственным образом разбит на группы взаимосвязанных вершин (на связные компоненты) таким образом, что не существует маршрута, соединяющей какие-либо из вершин различных компонент.

Решим задачу определения связности графа с помощью элементов алгоритма Фаулкса.

Пусть дана матрица смежности R неориентированного графа G (матрица R симметрична относительно главной диагонали), имеющего n вершин. Необходимо определить, является ли этот граф связным. В случае, если граф несвязный, то требуется выделить из него все т связных подграфов G 1, G 2,…, G m таких, что, например, из любой вершины подграфа G 1 можно найти путь или маршрут, ведущий к любой другой вершине этого же подграфа, но нельзя найти путь или маршрут ни к одной вершине, не принадлежащей данному подграфу G 1. Требуется определить, какие вершины входят в каждый из подграфов.

На основании матрицы смежности R получим матрицу достижимости не более чем за один шаг R 1.

Затем, в соответствии с алгоритмом Фаулкса, найдем матрицу RN путем булевского перемножения матриц (RN = RN -1 Ä R 1 ) до тех пор, пока не достигнем RN = RN -1. Полученная матрица RN является матрицей достижимости графа G. Она позволяет выявить связные подграфы и номера вершин, входящих в связные подграфы. Для этого необходимо в некоторой i - строке матрицы RN найти элементы rNij = 1, i, j = 1,…, n. Номера столбцов j, где rij = 1, и будут номерами вершин, входящих в связный подграф, включающий в себя i -ю вершину. Рассматривая последовательно все несовпадающие строки матрицы можно выявить все т связных подграфов исходного графа G.

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

Пример.

Пусть задана матрица R 1 достижимости не более чем за один шаг неориентированного графа G, имеющего n = 8 вершин.

Необходимо проверить граф на связность и выявить все связные подграфы.

1. Зададим начальный номер цикла вычислений: N = 1.

2. N= N +1 =2.

3. Производим умножение R 1 Ä R 1 = R 2

.

4. Проверяем условие равенства R 2 и R 1. Они не равны. Переходим к п. 2.

2) N = 2 + 1 = 3.

3) Умножение R 2 Ä R 1 = R 3.

.

4) Проверяем условие равенства матриц R 2 и R 3. Так как они равны, то это означает, что путь длиной 2 - максимальный в данной графе, и дальнейшее перемножение матрицы не имеет смысла, так как мы будем получать одну и ту же матрицу. Найденная матрица R 3 есть матрица достижимости исходного графа. Наличие нулей в полученной матрице показывает, что между соответствующими элементами отсутствует путь любойдлины и,следовательно, данный граф — несвязный.

5. Выбираем начальную вершину для выявления связных подграфов: i =1.

6. В строке i =1 выбираем все элементы r 31 j , равные единице (j =1,…, n). r 311 = r 312 = r 317 = r 318 = 1. Номера столбцов, в которых r 3 ij = 1 - это номера вершин первого связного подграфа, входящего в данный граф. То есть вершины 1, 2, 7, 8 образуют связный подграф G 1 .

7. Определяем номер очередной вершины i = 1 + 1 = 2. Так как 2 ≤ 8, то на 8 (иначе на 9).

8. Проверим – входит ли данная вершина в найденные связные подграфы. Если среди вершин найденных связных подграфов есть данная вершина, то на 7, иначе на 6.

Так как среди вершин связного подграфа G 1 есть вершина j =2, то возвращаемся к п.7.

7) i = 2 + 1 = 3. Так как 3 ≤ 8, то на 8.

8) Среди вершин связного графа G 1 нет вершины j =3. Возвращаемся к п. 6.

6.) В строке 3 выбираем элементы, равные единице: r 333 = r 336 = 1. Следовательно, во второй связный подграф G 2 входят вершины 3, 6.

7) Определяем номер очередной вершины i = 3 + 1 = 4. Так как 4 ≤ 8, то на 8.

8.) Среди вершин связных подграфов G 1 и G 2 нет вершины j = 4. Возвращаемся к п. 6.

6.) В строке 4 выбираем элементы, равные единице. r 344 = r 345 = 1. Следовательно, в третий связный подграф G 3 входят вершины 4, 5.

7) i = 4 + 1 = 5. Так как 4 ≤ 8, то на 8.

8) Среди вершин связных графов G 1, G 2, G 3 есть вершина j = 5. Переходим к п.7.

Аналогично проверяются вершины j = 6, 7, 8. Они входят в уже полученные выше подграфы.

9. Если проверены все вершины, то все связные подграфы найдены. Конец.

Таким образом в результате работы алгоритма найдены три связных подграфа:

G 1 = {1, 2, 7, 8}; G 2 = {3, 6}; G 3 = {4, 5} (см. рисунок 4.2)


.

Рис 4. 2.





Дата публикования: 2015-04-07; Прочитано: 969 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...