Как найти матрицу связности для графа

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

Ориентированный
граф называется сильно
связным
,
если для любых двух его вершин


и


существует
хотя бы один путь, соединяющий


с

.
Ориентированный граф называется
односторонне
связным
,
если для любых двух его вершин, по крайней
мере, одна достижима из другой.

Компонентой
связности неориентированного графа

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

Компонентой
сильной связности ориентированного
графа

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

Компонентой
односторонней связности ориентированного
графа
называется
его односторонне связный подграф, не
являющийся собственным подграфом
никакого другого односторонне связного
подграфа данного графа (максимально
односторонне связный подграф).

Пусть

неориентированный граф с множеством
вершин

.
Квадратная матрица


порядка

,
у которой


называется
матрицей
связности
графа

.

Для ориентированного
графа квадратная матрица

порядка

,
у которой

называется
матрицей
односторонней связности (достижимости)
.

Квадратная матрица

порядка

,
у которой

называется матрицей
сильной связности
.

Пример. У
неориентированного графа, изображенного
на рис. 22 две компоненты связности.
Первая компонента связности включает
вершины

,
а вторая
состоит из одной вершины

.

Рис. 22. Компоненты
связанности неориентированного графа

Матрица связности
этого графа имеет вид:

.

Мы видим, что 1-ая,
2-ая, 4-ая и 5-ая строки матрицы

одинаковы.

Пример. У
ориентированного графа, изображенного
на рис. 23 две компоненты сильной связности.
Первая компонента связности включает
вершины

,
а вторая
состоит из одной вершины

.
Действительно, для любой пары вершин
из множества


существует
хотя бы один путь, соединяющий эти
вершины. Например, путь

соединяет все эти вершины. Из вершины

нет пути ни в одну вершину графа.

Рис. 23. Компоненты
сильной связанности ориентированного
графа

Матрица сильной
связности этого графа имеет вид:


.

Заметим, что 1-ая,
2-ая, 3-ая и 5-ая строки матрицы

одинаковы.

Для того, чтобы
выделить компоненты сильной связности,
необходимо сначала найти матрицу
достижимости

ориентированного графа, затем находим
матрицу сильной связности

ориентированного графа (она должна быть
симметрической).

Алгоритм выделения
компонента сильной связности:

1. Присваиваем

(

− количество компонент связности),


.

2. Включаем в
множество вершин


компоненты
сильной связности

вершины, соответствующие единицам
первой строки матрицы

.
В качестве матрицы смежности

возьмем подматрицу матрицы

,
состоящую из элементов матрицы

,
находящихся на пересечении строк и
столбцов, соответствующих вершинам из

.

3. Вычеркиваем из

строки и столбцы, соответствующие
вершинам из

.
Если не остается ни одной строки (и
столбца), то


количество компонент сильной связности.
В противном случае обозначим оставшуюся
после вычеркивания срок и столбцов
матрицу как

,
присваиваем

и переходим к п. 2.

Пример. Выделим
компоненты связности ориентированного
графа, изображенного на рис. 25. Количество
вершин

.

Рис. 25.

Значит, для данного
ориентированного графа матрица смежности
будет иметь размерность

и будет выглядеть следующим образом


.

Найдем матрицу
достижимости и матрицу сильной связности
для данного ориентированного графа:


,


.

Присваиваем

,

и составляем множество вершин первой
компоненты сильной связности

:
это те вершины, которым соответствуют
единицы в первой строке матрицы

.
Таким образом, первая компонента сильной
связности состоит из одной вершины

.

Вычеркиваем из
матрицы

строку и столбец, соответствующие
вершине

,
чтобы получить матрицу

.

Присваиваем

.
Множество вершин второй компоненты
связности составят те вершины, которым
соответствуют единицы в первой строке
матрицы

,
то есть

.
Составляем матрицу смежности для
компоненты сильной связности

исходного графа


− в ее
качестве возьмем подматрицу матрицы

,
состоящую из элементов матрицы

,
находящихся на пересечении строк и
столбцов, соответствующих вершинам из

:


.

Вычеркиваем из
матрицы

строки и столбцы, соответствующие
вершинам из

,чтобы
получить матрицу

,
которая состоит из одного элемента

,
присваиваем

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

.

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

:

:


:


:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 6 апреля 2020 года; проверки требуют 11 правок.

Матрица достижимости простого ориентированного графа {displaystyle G=(V,A)} — бинарная матрица замыкания по транзитивности отношения A (оно задаётся матрицей смежности графа). Таким образом, в матрице достижимости хранится информация о существовании путей между вершинами орграфа.

Способы построения матрицы достижимости[править | править код]

Перемножение матриц[править | править код]

Пусть дан простой граф {displaystyle G=(V,A)}, матрица смежности которого есть {displaystyle mathbf {A} =(a_{ij})_{ntimes n}}, где {displaystyle a_{ij}=1Leftrightarrow (i,j)in A}. Матрица смежности даёт информацию о всех путях длины 1 (то есть дугах) в орграфе. Для поиска путей длины 2 можно найти композицию отношения A с самим собой:

{displaystyle Acirc A={bigl {}(a,c):exists bin V:(a,b), (b,c)in A{bigr }}}.

По определению, матрица композиции отношений {displaystyle Acirc A} есть {displaystyle mathbf {A^{2}} =({a^{2}}_{ij})_{ntimes n}={Bigl (}sum _{k}a_{ik}a_{kj}{Bigr )}={Bigl (}(a_{i1}land a_{1j})lor (a_{i2}land a_{2j})lor ldots lor (a_{in}land a_{nj}){Bigr )}}, где land  — конъюнкция, а lor  — дизъюнкция.

После нахождения матриц {displaystyle mathbf {A} ^{k}} композиций {displaystyle underbrace {Acirc ldots circ A} _{k}} для всех k, {displaystyle 1leq kleq n-1} будет получена информация о всех путях длины от 1 до n-1. Таким образом, матрица {displaystyle mathbf {R(G)} =mathbf {E} lor mathbf {A} lor mathbf {A^{2}} lor ldots lor mathbf {A^{n-1}} =({a^{*}}_{ij})_{ntimes n}=({a}_{ij}lor {a^{2}}_{ij}lor ldots lor {a^{n-1}}_{ij})} есть искомая матрица достижимости, где mathbf {E} — единичная матрица.

{displaystyle mathbf {E} ={begin{pmatrix}1&0&0&0\0&1&0&0\0&0&1&0\0&0&0&1end{pmatrix}}}

Случай нескольких путей[править | править код]

Если булевы операции lor ,land дизъюнкции и конъюнкции заменить обычными алгебраическими операциями +,times сложения и умножения соответственно, нахождение матрицы достижимости {displaystyle mathbf {R(G)} } сведётся к обычному пошаговому перемножению матриц с последующим сложением результатов каждого шага. Тогда получившаяся матрица {displaystyle mathbf {R(G)} } будет состоять не только из 0 и 1 и будет характеризовать не только наличие путей между вершинами, но уже и количество таких путей. В таком случае можно разрешить наличие кратных рёбер в графе.

Пример[править | править код]

Граф {displaystyle G=(V,A)}

Рассмотрим простой связный ориентированный граф {displaystyle G=(V={1,2,3,4},A={(1,2),(1,3),(3,2),(3,4),(4,3)})}.
Он имеет матрицу смежности {mathbf  A} вида:

{displaystyle mathbf {A} ={begin{pmatrix}0&1&1&0\0&0&0&0\0&1&0&1\0&0&1&0end{pmatrix}}}

Найдём булевы степени этой матрицы {displaystyle mathbf {A^{2}} }, {displaystyle mathbf {A^{3}} }:

{displaystyle mathbf {A^{2}} ={begin{pmatrix}0&1&0&1\0&0&0&0\0&0&1&0\0&1&0&1end{pmatrix}}},
{displaystyle mathbf {A^{3}} ={begin{pmatrix}0&0&1&0\0&0&0&0\0&1&0&1\0&0&1&0end{pmatrix}}},

Получим матрицу достижимости

{displaystyle mathbf {R(G)} =mathbf {Elor Alor A^{2}lor A^{3}} ={begin{pmatrix}1&1&1&1\0&1&0&0\0&1&1&1\0&1&1&1end{pmatrix}}}

Таким образом, из вершины 1 можно добраться в любую другую.

При использовании же алгебраических операций получится матрица

{displaystyle mathbf {R(G)} =mathbf {E+A+A^{2}+A^{3}} ={begin{pmatrix}1&2&2&1\0&1&0&0\0&2&2&2\0&1&2&2end{pmatrix}}}

Она показывает количество путей длины от 0 до 3 между вершинами орграфа.

Алгоритм Уоршелла[править | править код]

Существует другой алгоритм, позволяющий найти матрицу достижимости в точности за 2n^{3} шагов — алгоритм Уоршелла.

Связанные понятия[править | править код]

Матрица сильной связности[править | править код]

Матрица сильной связности простого орграфа — бинарная матрица, содержащая информацию обо всех сильно связанных вершинах в орграфе. Матрица сильной связности симметрична. У сильно связного графа такая матрица заполнена единицами.

Построение матрицы сильной связности[править | править код]

Матрица сильной связности может быть построена из матрицы достижимости. Пусть mathbf {E} ^{*} — матрица достижимости орграфа G=(V,E). Тогда матрица сильной связности mathbf {C} состоит из элементов (c_{ij})=left((e_{ij})land (e_{ji})right).

Пример[править | править код]

Рассмотрим тот же граф, что и ранее.

Его матрица достижимости:

{displaystyle mathbf {E^{*}} ={begin{pmatrix}1&1&1&1\0&1&0&0\0&1&1&1\0&1&1&1end{pmatrix}}}

Из неё получаем матрицу сильной связности:

{displaystyle mathbf {C} ={begin{pmatrix}1&0&0&0\0&1&0&0\0&0&1&1\0&0&1&1end{pmatrix}}}

Вершины 3 и 4 сильно связаны друг с другом и сами с собой.

Матрица связности графа[править | править код]

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

Матрица контрдостижимости[править | править код]

Матрица контрдостижимости Q графа G может быть найдена из матрицы достижимости путем ее транспонирования.

Примечания[править | править код]

С помощью матрицы смежности найти компоненты сильной связности ориентированного графа D.

Cоставляем матрицу смежности A(D) размерности (N− количество вершин) для данного ориентированного графа: она состоит из нулей и единиц, номера строк – индексы вершин, из которых исходят дуги, номера столбцов – индексы вершин, в которые дуги входят (если есть дуга, исходящая из вершины Vi и входящая в Vj, то элемент матрицы смежности, стоящий на пересечении I-той строки и J-того столбца равен 1, иначе – 0.).

Для того, чтобы выделить компоненты сильной связности, необходимо сначала найти матрицу достижимости T(D) ориентированного графа по первой формуле утверждения 3, затем находим матрицу сильной связности S(D) ориентированного графа (она должна быть симметрической) по второй формуле из того же утверждения.

Алгоритм выделения компонент сильной связности

1. Присваиваем P=1 (P − количество компонент связности), .

2. Включаем в множество вершин Vp Компоненты сильной связности Dp вершины, соответствующие единицам первой строки матрицы Sp. В качестве матрицы A(Dp) возьмем подматрицу матрицы A(D), состоящую из элементов матрицы A, находящихся на пересечении строк и столбцов, соответствующих вершинам из Vp.

3. Вычеркиваем из Sp строки и столбцы, соответствующие вершинам из Vp. Если не остается ни одной строки (и столбца), то P– количество компонент сильной связности. В противном случае обозначим оставшуюся после вычеркивания срок и столбцов матрицу как Sp+1, присваиваем P=P+1 и переходим к п. 2.

Пример

Выделим компоненты связности ориентированного графа, изображенного на рис. 6. В данной задаче количество вершин N=5.

Рис. 6.

Значит, для данного ориентированного графа матрица смежности будет иметь размерность 5×5 и будет выглядеть следующим образом

.

Найдем матрицу достижимости для данного ориентированного графа по формуле 1) из утверждения 3:

, ,

,

Следовательно,

.

Таким образом, матрица сильной связности, полученная по формуле 2) утверждения 3, будет следующей:

.

Присваиваем P=1 и составляем множество вершин первой компоненты сильной связности D1: это те вершины, которым соответствуют единицы в первой строке матрицы S(D). Таким образом, первая компонента сильной связности состоит из одной вершины .

Вычеркиваем из матрицы S1(D) строку и столбец, соответствующие вершине V1, чтобы получить матрицу S2(D):

.

Присваиваем P=2. Множество вершин второй компоненты связности составят те вершины, которым соответствуют единицы в первой строке матрицы S2(D), то есть . Составляем матрицу смежности для компоненты сильной связности исходного графа D − в ее качестве возьмем подматрицу матрицы A(D), состоящую из элементов матрицы A, находящихся на пересечении строк и столбцов, соответствующих вершинам из V2:

.

Вычеркиваем из матрицы S2(D) строки и столбцы, соответствующие вершинам из V2 ,чтобы получить матрицу S3(D), которая состоит из одного элемента:

И присваиваем P=3. Таким образом, третья компонента сильной связности исходного графа, как и первая, состоит из одной вершины .

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

< Предыдущая   Следующая >

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


матрица достижимости
простого ориентированого графа Матрица достижимости — бинарная матрица замыкания по транзитивности отношения Матрица достижимости (оно задается матрицей смежности графа). Таким образом, в матрице достижимости хранится информация о существовании путей между вершинами орграфа.

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

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

Матица достижимости неориентированного графа.

Утверждение. ЕслиА– матрица смежности графаМатрица достижимости, то элементМатрица достижимостиматрицыАправен числу маршрутов длинып, соединяющих вершиныvi иvjграфаG.

Доказательство.Методом математической индукции по числуп.

База индукции.Прип= 1 утверждение верно, так как всякое ребро графаG– это маршрут длины 1.

Индуктивное предположение.Пусть утверждение справедливо для всехnk.

Индуктивный переход.Рассмотрим матрицуАk+1. В нейМатрица достижимости.

В силу индуктивного предположения произведение Матрица достижимостиесть число маршрутов длиныk+ 1, соединяющих вершинуvi с вершинойvjс предпоследней вершиной всех таких маршрутовvm. Значит, суммаМатрица достижимостидействительно равна числу маршрутов длинk+ 1, соединяющих вершинуvi с вершинойvj.

Следствие.ПустьМатрица достижимости– связный граф срвершинами. Тогда любые две вершины графаМатрица достижимостиможно соединить простой цепью. Но в простой цепи не может быть более (р1) ребер. Следовательно, все элементы матрицыМатрица достижимостиотличны от нуля. Ясно, что верно и обратное утверждение.

В некоторых случаях при вычислениях степеней матрицы Аи матрицыСважно знать не число соответствующих маршрутов, а только есть ли в графе эти маршруты или нет . Об этом говорит сайт https://intellect.icu . Тогда при вычислении элементов матрицА2,А3, … ,Ар-1вместо обычного сложения используют операцию, введенную нами при рассмотрении матриц конечных бинарных отношений. В результате матрицыА,А2,А3, …,Ap1,Cсостоят только из нулей и единиц.

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

Матрица достижимости ориентированного графа.

Случай орграфа ничем не отличается от случая неориентированного графа. Если G– орграф ср вершинами иА– его матрица смежности, то элементМатрица достижимостиматрицыАправен числу ориентированных маршрутов длинып, соединяющих вершинуvi с вершинойvj.

+Граф G сильно связен тогда и только тогда, когда каждый элемент его матрицы достижимостиМатрица достижимостиравен 1.

Способы построения матрицы достижимости

Перемножение матриц

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

Матрица достижимости.

По определению, матрица композиции отношений Матрица достижимости есть Матрица достижимости, где Матрица достижимости — конъюнкция, а Матрица достижимости — дизъюнкция.

После нахождения матриц Матрица достижимости композиций Матрица достижимости для всех Матрица достижимости, Матрица достижимости будет получена информация о всех путях длины от Матрица достижимости до Матрица достижимости. Таким образом, матрица Матрица достижимости есть искомая матрица достижимости.

Случай нескольких путей

Если булевы операции Матрица достижимости дизъюнкции и конъюнкции заменить обычными алгебраическими операциями Матрица достижимости сложения и умножения соответственно, нахождение матрицы достижимости Матрица достижимости сведется к обычному пошаговому перемножению матриц с последующим сложением результатов каждого шага. Тогда получившаяся матрица Матрица достижимости будет состоять не только из 0 и 1 и будет характеризовать не только наличие путей между вершинами, но уже и количество таких путей. В таком случае можно разрешить наличие кратных ребер в графе.

Пример

Матрица достижимости

Граф Матрица достижимости

Рассмотрим простой связный ориентированный граф Матрица достижимости. Он имеет матрицу смежности Матрица достижимости вида:


mathbf E = 
begin{pmatrix}
  0&1&1&0 \
  0&0&0&0 \
  0&1&0&1 \
  0&0&1&0
end{pmatrix}

Найдем булевы степени этой матрицы Матрица достижимости, Матрица достижимости, Матрица достижимости:


mathbf{E^2} = 
begin{pmatrix}
  0&1&0&1 \
  0&0&0&0 \
  0&0&1&0 \
  0&1&0&1
end{pmatrix}
, 
mathbf{E^3} = 
begin{pmatrix}
  0&0&1&0 \
  0&0&0&0 \
  0&1&0&1 \
  0&0&1&0
end{pmatrix}
, 
mathbf{E^4} = 
begin{pmatrix}
  0&1&0&1 \
  0&0&0&0 \
  0&0&1&0 \
  0&1&0&1
end{pmatrix}
.

Получим матрицу достижимости

Матрица достижимости

Таким образом, из вершины Матрица достижимости можно добраться в любую другую.

При использовании же алгебраических операций получится матрица

Матрица достижимости

Она показывает количество путей длины от 1 до 4 между вершинами орграфа.

Алгоритм Уоршелла

Алгоритм Уоршелла

Существует другой алгоритм, позволяющий найти матрицу достижимости в точности за Матрица достижимости шагов — алгоритм Уоршелла.

Связанные понятия

Матрица сильной связности

Матрица сильной связности простого орграфа — бинарная матрица, содержащая информацию обо всех сильно связанных вершинах в орграфе. Матрица сильной связности симметрична. У сильно связного графа такая матрица заполнена единицами.

Построение матрицы сильной связности

Матрица сильной связности может быть построена из матрицы достижимости. Пусть Матрица достижимости — матрица достижимости орграфа Матрица достижимости. Тогда матрица сильной связности Матрица достижимости состоит из элементов Матрица достижимости.

Пример

Рассмотрим тот же граф, что и ранее.

Его матрица достижимости:

Матрица достижимости

Из нее получаем матрицу сильной связности:

Матрица достижимости

Вершины 3 и 4 сильно связаны друг с другом и сами с собой.

Матрица связности графа

Для связного графа существует понятие матрицы связности, сходное с матрицей достижимости.

Программа 1. Вычисление матрицы достижимости по заданной матрице смежностей с помощью алгоритма Уоршалла.

#include <iostream.h>
#define MaxNodes 4

class Warshall
{
  private:
    unsigned Adj[MaxNodes][MaxNodes];  //Матрица смежностей.
    unsigned Path[MaxNodes][MaxNodes]; //Матрица достижимости.
  public:
    void Vvod();
    void TransClose();
    void Vyvod();
};

void Warshall::Vvod()
{
  //Ввод матрицы смежностей заданного графа.
  cout <<"Вводите элементы матрицы смежностей по строкам:n";
  for (int i=0;i<MaxNodes;i++)
    for (int j=0;j<MaxNodes;j++)
     {
       cout <<"Введите Adj["<< (i+1) << "]["<< (j+1) << "]: ";
       cin >> Adj[i][j];
     }
}

void Warshall::TransClose()
//Вычисление матрицы достижимости.
{
  //Инициализация матрицы Path матрицей смежностей Adj.
  for (int i=0;i<MaxNodes;i++)
    for (int j=0;j<MaxNodes;j++)
      Path[i][j] = Adj[i][j];
  //Нахождение следующих значений матрицы Path.
  for (int k=0;k<MaxNodes;k++)
    for (i=0;i<MaxNodes;i++)
      if (Path[i][k]==1) 
         for (int j=0;j<MaxNodes;j++)
               Path[i][j] = (Path[i][j] || Path[k][j]);
}

void Warshall::Vyvod()
//Вывод матрицы достижимости.
{
  cout << "Матрица достижимости:n";
  for (int i=0;i<MaxNodes;i++)
  {
    for (int j=0;j<MaxNodes;j++)
      cout << Path[i][j] << " ";
    cout << endl;
  }
}

void main()
{
  Warshall A;
  A.Vvod();
  A.TransClose();
  A.Vyvod();
}

Связанные проблемы

Связанная с этим проблема – решить запросы о достижимости с некоторым числом. Матрица достижимостивершинных отказов. Например: «Может вершинаМатрица достижимости все еще дойти до вершины Матрица достижимости хотя вершины Матрица достижимостипотерпели неудачу и больше не могут быть использованы? »Подобная проблема может относиться к сбоям ребер, а не к сбоям вершин, или их сочетанию. Методика поиска в ширину работает так же хорошо с такими запросами, но создание эффективного оракула более важно сложно.

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

См. также

  • Гаммоид
  • st -соединение

Напиши свое отношение про матрица достижимости. Это меня вдохновит писать для тебя всё больше и больше интересного. Спасибо Надеюсь, что теперь ты понял что такое матрица достижимости
и для чего все это нужно, а если не понял, или есть замечания,
то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории
Дискретная математика. Теория множеств . Теория графов . Комбинаторика.

Добавить комментарий