Задача о назначениях
Задача о назначениях — одна из фундаментальных задач комбинаторной оптимизации в области математической оптимизации или исследовании операций. Задача состоит в поиске минимальной суммы дуг во взвешенном двудольном графе.
В наиболее общей форме задача формулируется следующим образом:
- Имеется некоторое число работ и некоторое число исполнителей. Любой исполнитель может быть назначен на выполнение любой (но только одной) работы, но с неодинаковыми затратами. Нужно распределить работы так, чтобы выполнить работы с минимальными затратами.
Если число работ и исполнителей совпадает, то задача называется линейной задачей о назначениях. Обычно, если говорят о задаче о назначениях без дополнительных условий, имеют в виду линейную задачу о назначениях.
Алгоритмы и обобщения
[править | править код]Венгерский алгоритм — один из многих алгоритмов, разработанный для решения линейной задачи о назначениях за полиномиальное время от числа работ.
Задача о назначениях является частным случаем транспортной задачи, которая является частным случаем задачи нахождения потока минимальной стоимости, а она, в свою очередь, является частным случаем задачи линейного программирования. Любую из этих задач можно решить симплекс-методом, но каждая специализация имеет свой более эффективный алгоритм, опирающийся на особенности структуры задачи.
Если целевая функция выражается через квадраты, говорят о квадратичной задаче о назначениях.
Пример
[править | править код]Предположим, что таксомоторная компания имеет три свободные машины (исполнители), и три заказчика (работы), желающих получить такси как можно быстрее. Фирма заботится о времени доставки такси к заказчику, так что для каждой машины стоимость определяется временем, с которым машина доберётся до места ожидания, определённого заказчиком. Решением задачи о назначениях будет распределение машин по заказчикам такое, что суммарная стоимость (суммарное время ожидания) минимальна.
Задачу о назначениях можно сделать более гибкой. В вышеприведенном примере могут оказаться не три, а четыре свободных такси, но заказчика по-прежнему три. Можно назначить четвёртого фиктивного заказчика с нулевой стоимостью, распределение же машины на фиктивного заказчика означает — «ничего не делай».
Аналогичный приём можно использовать в случае, когда число заказов может превышать число доступных машин, и машина может быть назначена на выполнение нескольких работ, а также когда работа может быть назначена нескольким исполнителям (например, если заказчик — группа, не помещающаяся в одно такси). Можно также поставить задачу увеличения дохода, а не минимизацию цены.
Формальное математическое определение
[править | править код]Формальная постановка задачи о назначениях:
- Даны два множества A и T одного размера и задана функция стоимости C : A × T → R.
- Необходимо найти биекцию f : A → T такую, что целевая функция:
- минимальна.
Обычно функция стоимости задается как квадратная матрица C, состоящая из вещественных чисел так, что целевую функцию можно записать в виде:
Задача называется «линейной», поскольку и целевая функция, и ограничения содержат только линейные выражения.
Задачу можно представить как задачу линейного программирования c целевой функцией
и ограничениями
- для ,
- для ,
- для .
Переменная представляет назначение исполнителя на работу , принимая значение 1 если исполнитель назначен на эту работу и 0 в противном случае. В этой формулировке решение может и не быть целым, но всегда существует оптимальное решение с целыми значениями. Этот факт следует из абсолютной унимодулярности матрицы. Первое ограничение требует, чтобы каждому исполнителю была назначена в точности одна задача, второе требует, чтобы для каждой задачи был назначен один исполнитель.
См. также
[править | править код]- Алгоритм аукциона
- Обобщенная задача о назначениях
- Задача о назначении минимального количества исполнителей
- Линейная задача о назначениях в узких местах
- Квадратичная задача о назначениях
- Задача о марьяже
- Задача о соседях по комнате
- Транспортная задача
- Задача о назначении целей
Литература
[править | править код]- Хемди А. Таха. гл 5.4 Задача о назначениях. // Введение в исследование операций. 7-е издание. Пер. с англ. — М.: Издательский дом «Вильямс», 2005.
- Вагнер Г. Приложение 1.2 Решение задачи о назначениях // Основы исследования операций. Пер. с англ. — М.: Издательство «Мир», 1972.. — Т. 1.
- Акоф Р., Сасиени М.,. Глава 5 Распределительные задачи: назначение и размещение ресурсов // Основы исследования операций. — М.: Издательство «Мир», 1971.
- Richard A. Brualdi. Combinatorial matrix classes. — Cambridge: Cambridge University Press, 2006. — (Encyclopedia of Mathematics and Its Applications). — ISBN 0-521-86565-4.
- Rainer Burkard, M. Dell'Amico, S. Martello. Assignment Problems (Revised reprint). — SIAM, 2012. — ISBN 978-1-61197-222-1.
Для улучшения этой статьи желательно:
|