Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Нахождение компонент связности графа ⇐ ПредыдущаяСтр 2 из 2
Первый метод базируется на основе матрицы достижимости. Мы уже говорили об отношении достижимости, которое можем, как любое бинарное отношение, задать с помощью матрицы. Каждый элемент этой матрицы
Очевидно, что
Если граф у нас неориентированный то матрица достижимости будет у нас одновременно и матрицей связности.
Пример
3 4 7 Матрица достижимости
Если граф у нас ориентированный, то мы должны построить матрицу котрдостижимости.
Рассмотрим матрицу S=C В бикомпоненту связности вершины
Пример
5 4
Возьмем вершину 2 и по матрице S получаем
Мы показали, как с помощью матрицы достижимости выделяются бикомпоненты. Найти в орграфе компоненты слабой связности также можно на основе матрицы достижимости. Однако процесс достаточно сложен, но он существует. Найти компоненты связности графа можно, естественно, и алгоритмическим путем. Рассмотрим рекурсивный алгоритм выделения компонент связности неориентированного графа, а также их числа. В основу алгоритма положена техника поиска в глубину. Задача состоит в построении массива меток вершин графа, назовем его у. Вершине графа v присваивается номер ой компоненты, которой она принадлежит, count – счетчик числа компонент.
Вход: граф G, заданный списками смежностей: Г(v). Выход: массив меток у, счетчик числа компонент count. For v y(v): =0 count: =0 for v if y(v)=0 then begin count: =count+1 component (v, count) end
procedure component (v, count) y(v): =count for w if y(w)=0 then component (w, count)
Пример
3 4 7 Результат работы алгоритма:
|