Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3533 / 125 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 7:

Пространство циклов графа

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Рационализация

Приведенный алгоритм нетрудно модифицировать так, что он будет строить базу циклов с суммарной длиной, ограниченной сверху величиной порядка n^{2} (и такой же будет оценка трудоемкости алгоритма). Рассмотрим в графе произвольную вершину x и пусть y_{1},y_{2}\ldots y_{k} - все ее предки в DFS-дереве, соединенные с x обратными ребрами. Положим также y_{k+1} =x. Обозначим через P_{i} для i=1,\ldots,k путь в DFS-дереве, соединяющий y_{i} и y_{i+1}. Описанный выше алгоритм выдает циклы вида C_{i} =xP_{i} P_{i+1} \ldots P_{k} x, i=1,\ldots,k. Рассмотрим циклы C'_{i} =xP_{i}x, i=1,\ldots,k. Так как C_{i}
=C'_{i} \oplus C'_{i+1} \oplus \ldots \oplus C'_{k}, то совокупность всех таких циклов также образует базу циклов графа. Назовем эту систему циклов сокращенной. Алгоритм легко модифицировать так, чтобы вместо циклов C_{i} выдавались циклы C'_{i} - нужно только после обнаружения обратного ребра, ведущего от предка x к потомку y (строка 11), выписать вершины, содержащиеся в стеке, начиная с y и заканчивая следующей вершиной, смежной с x. Для эффективной проверки этой смежности удобно использовать матрицу смежности.

Оценим суммарную длину S циклов сокращенной системы. Предположим, что граф имеет n вершин и m ребер. Каждое обратное ребро принадлежит не более чем двум циклам сокращенной системы. Значит, суммарный вклад обратных ребер в S не превосходит 2m.

Для каждого цикла из сокращенной системы назовем верхушкой этого цикла вершину цикла с наибольшим глубинным номером (это та вершина x, при исследовании окрестности которой был найден данный цикл). Очевидно, для каждого прямого ребра в сокращенной системе имеется не более одного цикла с данной верхушкой. Значит, число циклов, в которые входит данное прямое ребро, не превосходит числа вершин, лежащих в дереве выше него (т.е. являющихся потомками вершин этого ребра). Тем более это число не превосходит числа всех вершин графа. Так как имеется не более чем n-1 прямое ребро, то для суммарного вклада всех прямых ребер в S получаем верхнюю оценку n^{2}. Таким образом, S < 2m+n^{2}
=O(n^{2}), т.е. на порядок меньше максимальной суммарной длины системы фундаментальных циклов.

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.

 

 

Асмик Гаряка
Асмик Гаряка
Армения, Ереван
Константин Дементьев
Константин Дементьев
Россия, г. Мичуринск