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

Паросочетания

Паросочетания в произвольных графах (алгоритм Эдмондса)

Для графа, не являющегося двудольным, утверждение леммы 1 может быть неверным. Пример этого показан на рис. 12.2. В графе, изображенном слева, с паросочетанием из двух ребер, имеется увеличивающий путь 5, 3, 1, 2, 4, 6. Справа показано дерево достижимости, построенное для вершины 5. Вершина 6 не вошла в это дерево, хотя имеется чередующийся путь, соединяющий ее с вершиной 5. В результате увеличивающий путь не будет найден. Причина этого - наличие в графе ребра (1, 2), соединяющего вершины, находящиеся на одинаковом расстоянии от корня дерева. В тот момент, когда исследуется это ребро, обе вершины 1 и 2 уже присутствуют в дереве, поэтому построение дерева заканчивается. Наличие такого ребра означает, что в графе есть нечетный цикл, и это является настоящей причиной неудачи.


Рис. 12.2.

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

Сначала, как и в случае двудольного графа, методом поиска в ширину строится дерево достижимости для некоторой свободной вершины a. Построение дерева для двудольного графа прекращалось, если к дереву нельзя было добавить ни одной вершины, либо если к нему добавлялась свободная вершина, т.е. обнаруживалось наличие увеличивающего пути. Для произвольного графа будем прекращать построение дерева еще и в том случае, когда исследуемое ребро соединяет две четные вершины дерева. При поиске в ширину это может быть только тогда, когда эти две вершины находятся на одинаковом расстоянии от корня. Обнаружение такого ребра означает, что найден подграф, называемый цветком (рис. 12.3). Он состоит из чередующегося пути P, соединяющего корень дерева a с некоторой вершиной b, и нечетного цикла C. При этом b является единственной общей вершиной пути P и цикла C, а C можно рассматривать как замкнутый чередующийся путь, начинающийся и заканчивающийся в вершине b. На рисунке показаны также смежные четные вершины x и y, находящиеся на одинаковом расстоянии от вершины a.


Рис. 12.3.
Петр Петров
Петр Петров

произведение графов К(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(...)

}

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

 

 

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