Опубликован: 21.08.2007 | Уровень: специалист | Доступ: свободно | ВУЗ: Тверской государственный университет
Лекция 9:

Графы: представления, достижимость и связность

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >

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

Один из первых вопросов, возникающих при изучении графов, это вопрос о существовании путей между заданными или всеми парами вершин. Ответом на этот вопроc - введенное выше отношение достижимости на вершинах графа G=(V,E): вершина w достижима из вершины v, если v = w или в G есть путь из v в w. Иначе говоря, отношение достижимости является рефлексивным и транзитивным замыканием отношения E. Для неориентированных графов это отношение также симметрично и, следовательно, является отношением эквивалентности на множестве вершин V. В неориентированном графе классы эквивалентности по отношению достижимости называются связными компонентами. Для ориентированных графов достижимость, вообще говоря, не должна быть симметричным отношением. Симметричной является взаимная достижимость.

Определение 9.8. Вершины v и w ориентированного графа G=(V,E) называются взаимно достижимыми, если в G есть путь из v в w и путь из w в v.

Ясно, что отношение взаимной достижимости является рефлексивным, симметричным и транзитивным и, следовательно, эквивалентностью на множестве вершин графа. Классы эквивалентности по отношению взаимной достижимости называются компонентами сильной связности или двусвязными компонентами графа.

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

Определение 9.9. Пусть G=(V,E) - ориентированный граф. Граф достижимости G*=(V,E*) для G имеет то же множество вершин V и следующее множество ребер E* ={ (u, v) | в графе G вершина v достижима из вершины u}.

Пример 9.3. Рассмотрим граф G из примера 9.2.

Граф G

Рис. 9.2. Граф G

Тогда можно проверить, что граф достижимости G* для G выглядит так (новые ребра -петли при каждой из вершин 1-5 не показаны):

Граф G*

Рис. 9.3. Граф G*

Каким образом по графу G можно построить граф G*? Один способ заключается в том, чтобы для каждой вершины графа G определить множество достижимых из нее вершин, последовательно добавляя в него вершины, достижимые из нее путям и длины 0, 1, 2 и т.д.

Мы рассмотрим другой способ, основанный на использовании матрицы смежности AG графа G и булевых операций. Пусть множество вершин V={v1, ... , vn}. Тогда матрица AG - это булева матрица размера n x n.

Ниже для сохранения сходства с обычными операциями над матрицами мы будем использовать "арифметические" обозначения для булевых операций: через + будем обозначать дизъюнкцию \vee, а через x - конъюнкцию \wedge.

Обозначим через En единичную матрицу размера n x n. Положим \tilde{A} =A_G + E_n. Пусть \tilde{A_0} = E_n, \tilde{A_1} = \tilde{A}, \dots, \tilde{A}_{k+1} = \tilde{A}_k \cdot \tilde{A}. Наша процедура построения G* основана на следующем утверждении.

Лемма 9.2. Пусть \tilde{A}_k = (a_{ij}^{(k)}). Тогда

a_{ij}^{(k)} = \left\{
\begin{array}{cl}
1, &    \mbox{ в } G  \mbox{ из } v_i \mbox{ в } v_j  \mbox{ имеется путь длины }\leq k\\
 0 &  \mbox{ в противном случае} \\
\end{array}\right.

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

Базис. При k=0 и k=1 утверждение справедливо по определению \tilde{A}^0 и \tilde{A}^0.

Индукционный шаг. Пусть лемма справедлива для k. Покажем, что она остается справедливой и для k+1. По определению \tilde{A}^{k+1} имеем:

a_{ij}^{(k+1)} = a_{i1}^{(k)} a_{1j}^{(1)} + \ldots + a_{ir}^{(k)} a_{rj}^{(1)} + \ldots a_{in}^{(k)} a_{nj}^{(1)}

Предположим, что в графе G из vi в vj имеется путь длины <= k+1. Рассмотрим кратчайший из таких путей. Если его длина <= k, то по предположению индукции a_{ij}^{(k)}=1. Кроме того, ajj(1)=1. Поэтому aij(k) ajj(1)=1 и aij(k+1)=1. Если длина кратчайшего пути из из vi в vj равна k+1, то пусть vr - его предпоследняя вершина. Тогда из vi в vr имеется путь длины k и по предположению индукции air(k)=1. Так как (v_{r},v_{j}) \in  E, то a_{rj}^{(1)}=1. Поэтому air(k) arj(1)=1 и aij(k+1)=1.

Обратно, если aij(k+1)=1, то хотя бы для одного r слагаемое air(k) arj(1) в сумме равно 1. Если это r=j, то aij(k)=1 и по индуктивному предположению в G имеется путь из vi в vj длины <= k. Если же r \ne  j, то air(k)=1 и arj(1)=1. Это означает, что в G имеется путь из vi в vr длины <= k и ребро (v_{r},v_{j}) \in  E. Объединив их, получаем путь из vi в vj длины <= k+1.

Из лемм 9.1 и 9.2 непосредственно получаем

Следствие 1. Пусть G=(V,E) - ориентированный граф с n вершинам и, а G* - его граф достижимости. Тогда A_{G*} = \tilde{A}_{n-1}. Доказательство. Из леммы 5.1 следует, что, если в G имеется путь из u в v\ne  u, то в нем имеется и простой путь из u в v длины <= n-1. А по лемме 5.2 все такие пути представлены в матрице \tilde{A}^{n-1}.

Таким образом процедура построения матрицы смежности AG* графа достижимости для G сводится к возведению матрицы \tilde{A} в степень n-1. Сделаем несколько замечаний, позволяющих упростить эту процедуру.

  1. Для возведения матрицы \tilde{A} в произвольную степень n достаточно выполнить ]\log_2 n[ возведений в квадрат:

    \tilde{A} \Rightarrow \tilde{A}^2 \Rightarrow \tilde{A}^{2^2} \Rightarrow \ldots \Rightarrow \tilde{A}^{2^k},
    где k - это наименьшее число такое, что 2k >= n.
  2. Так как на диагонали в матрице \tilde{A} стоят единицы, то для любых i < j все единицы матрицы \tilde{A}^i сохраняются в матрице \tilde{A}^j, в частности, и в матрице (\tilde{A}^i)^2.
  3. Если при вычислении элемента aij(2) матрицы (\tilde{A}^k)^2 по стандартной формуле

    a_{ij}^{(2)} = a_{i1}a_{1j} + a_{i2}a_{2j}+ \ldots + a_{ir}a_{rj} + \ldots + a_{in}a_{nj}

    обнаруживается такое r, что air = 1 и arj =1, то и вся сумма aij(2) =1. Поэтому остальные слагаемые можно не рассматривать.

Пример 9.3. Рассмотрим в качестве примера вычисление матрицы графа достижимости AG* для графа G, представленного на рис.9.2. В этом случае

\tilde{A}= A_G + E_6 = \left(
\begin{array}{cccccc}
1 & 0 & 1 & 0& 0& 0\\
1 & 1 & 0 & 0& 0& 0\\
0 & 1 & 1 & 0& 0& 0\\
1 & 0 & 0 & 1& 1& 0\\
0 & 0 & 1 & 0& 1& 1\\
0 & 0 & 0 & 0& 0& 1
\end{array}\right).

Так как у G имеется 6 вершин, то A_G*} = \tilde{A}^5. Вычислим эту матрицу:

\tilde{A}^2=  \left(
\begin{array}{cccccc}
1 & 1 & 1 & 0& 0& 0\\
1 & 1 & 1 & 0& 0& 0\\
1 & 1 & 1 & 0& 0& 0\\
1 & 0 & 1 & 1& 1& 1\\
0 & 1 & 1 & 0& 1& 1\\
0 & 0 & 0 & 0& 0& 1
\end{array}\right),  \
\ \tilde{A}^4=  \left(
\begin{array}{cccccc}
1 & 1 & 1 & 0& 0& 0\\
1 & 1 & 1 & 0& 0& 0\\
1 &1 & 1 & 0& 0& 0\\
1 & 1 & 1 & 1& 1& 1\\
1 & 1 & 1 & 0& 1& 1\\
0 & 0 & 0 & 0& 0& 1
\end{array}\right)

и \ \tilde{A}^5=\tilde{A}^4 \times \tilde{A}^4 =\tilde{A}^4 (последнее равенство нетрудно проверить). Таким образом,

A_{G^*}= \tilde{A}^4=  \left(
\begin{array}{cccccc}
1 & 1 & 1 & 0& 0& 0\\
1 & 1 & 1 & 0& 0& 0\\
1 &1 & 1 & 0& 0& 0\\
1 & 1 & 1 & 1& 1& 1\\
1 & 1 & 1 & 0& 1& 1\\
0 & 0 & 0 & 0& 0& 1
\end{array}\right)

Как видим, эта матрица действительно задает граф G^*, представленный на рис.9.3.

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >
Елена Алексеевская
Елена Алексеевская

Это в лекции 3.

Татьяна Дембелова
Татьяна Дембелова

Почему в вводной лекции курса Основы дискретной математики одним из свойств отношения частичного порядка упоминается антирефлексивность? Посмотрела в других источниках, там -0  рефлексивность... http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0

Вадим Нижегородцев
Вадим Нижегородцев
Россия, Самара