Задача присваивания
Ключевые слова и синонимы
Паросочетание на взвешенных двудольных графах
Постановка задачи
Пусть дан полный двудольный граф
Основные результаты
Определим допустимую разметку вершин
Назовем
и
Определим подграф равенства,
Связь между подграфами равенства и паросочетаниями с максимальным весом задается следующей теоремой.
Теорема 1. Если подграф равенства,
Заметим, что сумма меток является верхней границей веса паросочетания с максимальным весом. Алгоритм последовательно находит паросочетание и допустимую разметку, такие, что вес паросочетания оказывается равен сумме всех меток.
Высокоуровневое описание
Вышеприведенная теорема служит основой алгоритма нахождения паросочетания с максимальным весом в полном двудольном графе. Начав с допустимой разметки, вычислим подграф равенства и затем найдем максимальное паросочетание в этом подграфе (на этом этапе веса ребер не учитываются). Если найденное паросочетание является совершенным, процесс на этом завершается. В противном случае к подграфу равенства добавляются ребра посредством пересмотра меток вершин. После добавления ребер к подграфу равенства либо увеличивается размер паросочетания (был найден дополняющий путь), либо продолжает расти венгерское дерево. В первом случае этот этап процесса завершается и начинается новый (поскольку размер паросочетания вырос). Во втором случае венгерское дерево растет за счет добавления к нему новых вершин, что, очевидно, не может произойти более n раз.
(Структура венгерского дерева включает исследованные ребра при поиске базисного возможного решения одновременно из всех свободных вершин в S. Когда в T найдена вершина, сопоставленная какой-либо вершине из S, нужно исследовать только соответствующее ребро; однако в S исследуются все ребра, инцидентные этой вершине).
Пусть S – дерево свободных вершин в X. Вырастим венгерские деревья из каждой вершины S. Пусть T – вершины из Y, встретившиеся в поиске дополняющего пути из вершин в S. Добавим все вершины из X, встретившиеся в поиске, в S.
Стоит отметить следующее свойство данного алгоритма:
Между S и
Поскольку метки в S уменьшаются, ребра (в графе G), ведущие из S в
Рис. 1. Множества S и T, поддерживаемые алгоритмом
Более эффективная реализация
Определим провис ребра следующим образом:
Тогда
Интуитивно кажется, что вычисление
Вычисление slack[y] для всех
Таким образом, каждый этап может быть реализован за время
Применение
Паросочетание в двудольных графах имеет множество областей применения – например, при планировании заданий единичной длины с целочисленными значениями времени запуска и предельного срока окончания, даже в присутствии штрафных санкций, зависящих от времени.
Открытые вопросы
Необходимо разработать алгоритм с линейным или близким к линейному временем выполнения.
Литература
Некоторые книги, посвященные комбинаторной оптимизации, включают описания алгоритмов поиска паросочетания во взвешенных двудольных графах (см. [2, 5]). Также информацию об этом можно найти в статье Габова [3].
1. Ahuja, R., Magnanti, T., Orlin, J.: Network Flows: Theory, Algorithms and Applications. Prentice Hall, Englewood Cliffs (1993)
2. Cook, W., Cunningham, W., Pulleyblank,W., Schrijver,A.: Combinatorial Optimization. Wiley, New York (1998)
3. Gabow, H.: Data structures for weighted matching and nearest common ancestors with linking. In: Symp. on Discrete Algorithms, 1990, pp. 434-443
4. Kuhn, H.: The Hungarian method for the assignment problem. Naval Res. Logist. Quart. 2,83-97 (1955)
5. Lawler, E.: Combinatorial Optimization: Networks and Matroids. Holt, Rinehart and Winston (1976)
6. Munkres, J.: Algorithms for the assignment and transportation problems. J. Soc. Ind. Appl. Math. 5, 32-38 (1957)