1 Отредактировано Zayakin_Andrey (2011-02-14 17:45:54)

Тема: Задачи о покрытиями графа циклами.

Задача :
дан направленный взешенный граф без кратных ребер и петель (V <= 200, E <= 20000). Нужно покрыть его ориентированными циклами так чтобы каждая вершина принадлежала ровно одному циклу и сумма весов всех циклов была минимальна.

Решение :
построим двудольный граф, где в правой доле будут копии вершин. Если в графе было ребро (u; v) с весом w, проведем ребро из u первой доли в v второй доли c весом w. Теперь найдем максимальное паросочетание минимального веса. Если количество ребер равно количеству вершин исходного графа, то граф покрывается циклами и вес этого паросочетания равен искомой величине, иначе покрытия не существует.
Объясните, почему это правильно.

2

Re: Задачи о покрытиями графа циклами.

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

3

Re: Задачи о покрытиями графа циклами.

а какой алгоритм будет для неориентированного графа?

4

Re: Задачи о покрытиями графа циклами.

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

5

Re: Задачи о покрытиями графа циклами.

ilyaraz пишет:

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

Правильно ли я понимаю, что это сведение нетривиально, и первым его привёл Эдмондс?
(в 1964 г.; я пытался разобраться по этой статье, но не смог понять, как решать данную задачу)
Также нашлась статья Hartvigsen, но не менее понятная.