- •Белгородская государственная
- •Введение
- •1. Определение графа
- •2. Представление графов в памяти эвм
- •3. Некоторые понятия и определения теории графов
- •4. Операции над графами
- •5. Связность
- •5.1. Построение покрывающих деревьев
- •5.2. Поиск на графах
- •Поиск в глубину
- •Поиск в ширину
- •5.3. Сильная связность
- •5.4. Транзитивное замыкание орграфа
- •Алгоритм следует из выражения 5.1
- •6. Расстояние
- •6.1. Поиск кратчайших путей между отдельными вершинами графа
- •6.2. Поиск кратчайших путей между каждой парой вершин графа
- •7. Потоки
- •7.1. Условия существования потока
- •7.2. Поиск увеличивающей цепи
- •7.3. Поиск максимального потока
- •7.4. Поиск потока минимальной стоимости
- •7.5. Задача почтальона для орграфа
- •Список литературы
5.4. Транзитивное замыкание орграфа
В предыдущей главе для нахождения сильносвязных компонент орграфа G=(V,E) нам нужно было найти матрицу достижимости R. Как было отмечено, для этого можно использовать поиск в глубину или в ширину. Теперь рассмотрим подробнее, что представляет собой матрица R.
Если множество Eдуг графаGрассматривать как бинарное отношение на множестве вершинVграфаG, тоRбудет матрицей смежности для графаG*=(V,E*), в которомE* - транзитивное замыкание бинарного отношенияE.
Рассмотрим способ нахождения транзитивного замыкания (тоже матрицы R) без применения поиска.
Пусть исходный граф G=(V,E) представлен матрицей смежностиA. Можно вычислить матрицуRпо матрицеА, определяя последовательность матрицA(0),A(1),…,A(|V|)следующим образом:
aij(0)=aij;
aij(k)=aij(k-1)aik(k-1)akj(k-1) (5.1)
Утверждение:aij(k)=1 тогда и только тогда, когда существует путь из вершиныiVв вершинуjVс промежуточными вершинами, выбираемыми только из множества {1,2,...,k}V.
Докажем это утверждение, используя принцип математической индукции:
1. Для k=0 утверждение очевидно, так какaij(0)=aij, далее смотри определение матрицы смежности.
2. Пусть утверждение верно для k=t-1, тогдаaij(t), определяемое как
aij(t-1)ait(t-1)atj(t-1), равно единице тогда и только тогда, когда либоaij(t-1)=1, либоait(t-1)=1 иatj(t-1)=1. Другими словамиaij(t)=1 в двух случаях:
1) существует путь из вершины iв вершинуj, проходящий только по вершинам из множества {1,2,...,t-1},
2) существуют пути из iвtи изtвj, также проходящие только по вершинам из множества {1,2,...,t-1}.
Таким образом, во втором случае путь из вершины iв вершинуjпроходит по вершинам из множества {1,2,…,t}={1,2,…,t-1}t, следовательно,aij(t)=1 тогда и только тогда, когда существует путь из вершиныiв вершинуjс промежуточными вершинами, выбираемыми из множества {1,2,...,t}.
Итак, утверждение справедливо для k=t. Следовательно, для любогоk=0,1,…,|V| утверждение истино.
На основании доказанного утверждения вытекает, что R=А(|V|).
Алгоритм 2.Алгоритм нахождения транзитивного замыкания
Алгоритм следует из выражения 5.1
for k=1 to |V| do
for i=1 to |V| do
for j=1 to |V| do
aijaijaikakj
Упражнения:
1. Заметим, что в алгоритме 2, основанном на выражении 5.1, элементы матрицыА(k-1)непосредственно преобразуются в элементы матрицыА(k), то есть не используется дополнительная память для хранения элементов матрицыА(k-1). Докажите, что такая реализация выражения 5.1 корректна.
2. Очевидно, что трудоемкость алгоритма нахождения транзитивного замыкания O(|V|3). Представьте строки матрицыАв битовой форме и снизьте трудоемкость алгоритма до O(|V|2). Реализуйте оба варианта алгоритма и сравните время их работы.
3. Реализуйте алгоритм нахождения матрицы достижимости на основе использования стратегии поиска в глубину или ширину и сравните время работы этого алгоритма с временем работы алгоритма нахождения транзитивного замыкания.
4. Доработайте алгоритм нахождения транзитивного замыкания таким образом, чтобы в случае достижимости вершины jиз вершиныiсохранялась информация о пути, по которомуjдостижима изi.
Указание. Для хранения путей используйте матрицу Pразмераnn, гдеn– число вершин графа. Элементы матрицы можно определить одним из двух способов:
1) Pij– вершина, предшествующая вершинеjна пути из вершиныiв вершинуj;
2) Pij– вершина, следующая за вершинойiна пути из вершиныiв вершинуj.