Задача об оптимальном планировании работы

Задача об оптимальном планировании работы (англ. Optimal job scheduling) — сильно NP-трудная задача комбинаторной оптимизации, заключающаяся в составлении расписаний. Входными данными задачи является список из задач и их продолжительностей и количество машин , на которых эти задачи могут выполняться. В зависимости от вариации проблемы могут быть добавлены дополнительные ограничения на скорость выполнения машинами задач. В результате алгоритм должен найти такое распределение задач по машинам, что задачи будут выполнены за минимально возможное время. Задачи не предусматривают наличие дедлайнов, поэтому последовательность их обработки может быть любой. NP-полнота задачи доказывается через редукцию к задаче о сумме подмножеств, так как она является частным случаем задачи об оптимальном планировании работы для количества машин .

Варианты задачи править

Идентичные машины править

Классический вариант задачи об оптимальном планировании, принимающий на вход количество машин  , количество задач   и целочисленную продолжительность каждой задачи  . Необходимо найти такое отображение  , что   минимально. Настоящий вариант задачи имеет приближенную схему полиномиального времени.

Методы решения править

Least Loaded править

Эвристика Least Loaded по очереди присваивает все задачи машинам, имеющим наименьшую нагрузку. Очевидно, что оптимальность такого варианта решения проблемы зависит от порядка задач в поданном на вход списке.

  1. Выбери машину, имеющую наименьшую нагрузку.
  2. Для   от   до  :
    1. Выбери   такое, что   минимально.
    2. Установи  .

Фактор аппроксимации такой эвристики равен  . Перед доказательством определим границу продолжительности для оптимального решения  . Теперь рассмотрим задачу, которая будет выполнена последней и ситуацию, происходящую перед тем, как такая задача будет распределена. Пусть   — задача, которая будет выполнена последней, а   — машина, которой такая задача будет присвоена. До того, как задача   была присвоена машине  , нагрузка на машине была минимальной и составляла максимум  . таким образом время работы машины   будет равно  .

Longest Processing Time править

Данная эвристка уже не учитывает порядок задач на входе и располагает их, присваивая самой разгруженной машине самую продолжительную задачу:

  1. Выбери для самой продолжительной работы машину, имеющую наименьшую нагрузку.
  2. Пусть  .
  3. Для   от   до  :
    1. Выбери   такое, что   минимально.
    2. Установи  .

Фактор аппроксимации эвристики равен  , что намного лучше, чем у прошлого метода, так как не зависит от входных данных. Доказательство происходит от противного: Пусть максимальное время работы   некоторой машины на некоторых входных данных больше   и задача   имеет минимальную продолжительность, а также  . Так как   имеет минимальное время выполнения,   — задача, которая будет выполнена последней и будет распределена машине, имеющей наименьшую нагрузку. К этому моменту нагрузка машины равна максимум  . Для того, чтобы коэффициент   имел значение  ,   должен быть строго больше  . Так как задачи отсортированы, для любой задачи справедливо  , а значит, каждая машина может обработать не более двух задач и количество задач  . Однако при этом оптимальным решением будет распределить задачи с номерами   машинам с номерами  , а задачи с номерами   машинам с номерами  , что и является распределением согласно эвристике Longest Processing Time. Противоречие.

PTAS Алгоритм править

Идея алгоритма заключается в скалировании и округлении вверх продолжительности «долгих» задач, что приводит к появлению некоторой погрешности и уменьшению временной сложности.

  1. Оракул приводит значение   — максимальной оптимальной загруженности машин.
  2. Фаза 1:
    1. Рассматриваются «долгие задачи»  .
    2. Масштабируй продолжительность задач из  :  .
    3. Определи планирование с продолжительностью задач   и максимальной загруженностью машин  
  3. Фаза 2:
    1. Рассматриваются «короткие» задачи  .
    2. Распредели задачи согласно эвристике Least Loaded.

Лемма. Относительная погрешность округления   не превосходит   для  .

Доказательство. Пусть  , то есть «большая» задача, а значит  . Из этого следует, что  , а учитывая, что  , получим  . Доказательство леммы показывает, что при округлении скалированных «больших» задач, они изменяются с фактором не более  .

Первая фаза заканчивается поиском планирования, учитывающего максимальную загруженность машин, что может быть решено методами динамического программирования, схожими с динамическим решением над ценностями предметов задачи о рюкзаке. Как следствие, временная сложность алгоритма с оракулом составляет  , а фактор аппроксимации  .

Однако оракул не может существовать. Иначе задача об оптимальном планировании имела бы эффективное решение. Тем не менее так как алгоритм аппроксимирует, нет нужды знать точное значение  , поэтому его можно найти используя алгоритм бинарного поиска, начиная с верхнего порога продолжительности работы машины  . Если длина входных данных в битах равна  , то  , а значит, общее время работы алгоритма равно  .

Машины с разными скоростями править

Следующий вариант задачи принимает на вход число машин  , скорость каждой машины  , количество задач   и продолжительность каждой задачи  . В отличие от предидущего варианта, необходимо найти такое отображение  , что   минимально. Решение такого варианта задачи аналогично решению варианта с идентичными машинами.

Машины общего назначения править

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

Методы решения править

Целочисленное линейное программирование править

Задачу можно представить как систему уравнений, но так как продолжительности задач целочисленные, мы получим целочисленную линейную программу (ЦЛП) вида:

 

Исходя из неравенства классов P и NP, ЦЛП не может быть решена за полиномиальное время. Если же убрать требование целочисленности, то решения при   и   будут приводить к максимальной загруженности машин  , что плохо с точки зрения аппроксимации.

Однако если изменить ЦЛП следующим образом:

 

и обозначить  , а   за оптимальную максимальную нагрузку, получаемую у оракула, то можно получить более приемлемую ЛП. Решение ЛП не будет целочисленным, но его можно округлить, используя следующие правила:

  • Каждая задача может быть присвоена только одной машине.
  • Каждой машине может быть присвоено несколько задач.

Лемма. В решении вышеописанной ЛП максимум   переменных   больше нуля.

Доказательство. Пусть   — количество переменных, а   — количество неравенств ЛП. Тогда справедливы выражения   и  . Базисное решение ЛП точно удовлетворяет максимум   неравенствам, а значит   ограничений вида   не выполнены минимум   переменных равны нулю.

Из полученного решения ЛП можно построить связный граф   распределения ресурсов, где  ,   и  . Такой граф будет иметь   вершин,   рёбер и максимум один цикл, так как граф связный. Чтобы правильно округлить решение с помощью графа  , необходимо сначала удалить из графа все вершины задач, точно распредленных какой-либо машине ( ). В результате в графе не останется листьев из множества   и можно будет найти на нем совершенное паросочетание, по результатам которого и будут распределены задачи.

Такой алгоритм обеспечивает  -аппроксимацию для решения проблемы, потому что для нераспределённыx однозначно задач ( ) действительно   и каждая машина получит максимум одну такую нераспределённую задачу. Так каждая машина будет иметь максимальную нагрузку  .