Алгоритм «самое долгое время обработки первым»
Алгоритм «самое долгое время обработки первым» (англ. Longest Processing Time, LPT) — это жадный алгоритм для решения задачи оптимального планирования работ. На вход алгоритма поступает набор заданий, каждое из которых характеризуется определённым временем обработки, а также число m, задающее количество доступных машин. Алгоритм LPT функционирует в два этапа:
1. Задания сортируются в порядке убывания времени обработки, так что самое продолжительное задание оказывается первым в списке. 2. Каждое задание из отсортированной последовательности назначается на машину, имеющую на данный момент наименьшую суммарную загрузку (т.е. минимальное общее время уже назначенных ей заданий).
Второй шаг по своей сути представляет собой алгоритм «список первым» (англ. List Scheduling, LS). Ключевое отличие заключается в том, что LS обрабатывает задания в произвольном порядке, тогда как LPT предварительно упорядочивает их по убыванию длительности.
Алгоритм LPT был впервые исследован Рональдом Грэмом в 1960-х годах в контексте задачи планирования на идентичных машинах. Впоследствии он нашёл применение и во многих других вариантах данной проблемы.
LPT также можно описать в более абстрактной формулировке как алгоритм для разбиения множества чисел. Входными данными служат множество чисел S и целое положительное число m. Результатом работы является разбиение S на m подмножеств. Алгоритм упорядочивает входные числа от наибольшего к наименьшему и последовательно помещает каждое число в ту часть, сумма элементов которой на текущий момент является наименьшей.
Примеры[править | править код]
Если входное множество равно S = {4, 5, 6, 7, 8} и m = 2, то результирующее разбиение будет {8, 5, 4} и {7, 6}. При m = 3 разбиение примет вид {8}, {7, 4} и {6, 5}.
Свойства[править | править код]
Алгоритм LPT не всегда находит оптимальное разбиение. Например, в приведённом выше случае оптимальным разбиением для двух машин является {8, 7} и {6, 5, 4}, где суммы равны 15. Однако степень его субоптимальности ограничена как в худшем, так и в среднем случае (см. раздел #Гарантии производительности).
Время работы алгоритма определяется этапом сортировки и составляет O(n log n), где n — количество входных чисел.
Алгоритм LPT является монотонным: увеличение одного из входных чисел приводит к слабому возрастанию целевой функции (максимальной или минимальной суммы в полученном разбиении). Это отличает его от алгоритма «самое короткое время обработки первым».
Гарантии производительности: одинаковые машины[править | править код]
При использовании для задачи планирования на идентичных машинах алгоритм LPT обеспечивает следующие гарантии аппроксимации.
Максимальная сумма в наихудшем случае[править | править код]
В худшем случае максимальная сумма в разбиении, полученном с помощью LPT, не более чем в раза превышает оптимальную (минимально возможную) максимальную сумму. Доказательство этого факта приведено в работе Сяо Синя.
Более детальный анализ показывает, что отношение максимальной суммы к оптимальной составляет (например, при m = 2 отношение равно ).
Коэффициент является точным. Рассмотрим пример с входными значениями (где m чётно): . В этом случае жадный алгоритм выдаст следующее разбиение:
- ,
- ...
с максимальной суммой . Однако оптимальное разбиение таково:
- ...
с максимальной суммой .
Анализ входных данных[править | править код]
Более глубокий анализ учитывает количество элементов в частях разбиения.
- В каждой части жадного разбиения j-й по величине элемент не превышает , где OPT — оптимальная максимальная сумма.
- Предположим, что в части P с максимальной суммой содержится L элементов. Тогда коэффициент аппроксимации жадного алгоритма равен . Это значение является точным для L ≥ 3 (при L=3 получается общий коэффициент ). Обозначим элементы P как x1,...,xL. До момента добавления xL в P её сумма была наименьшей. Следовательно, средняя сумма по всем частям составляет не менее суммы x1+...+xL-1 + xL/m. Оптимальная максимальная сумма должна быть не меньше этой средней. В то же время, сумма в части P равна x1+...+xL-1+xL. Таким образом, разница не превышает (1-1/m)xL, что согласно пункту (1) не более (1-1/m)*OPT/L. Следовательно, отношение не превышает (1 + 1/L - 1/Lm).
Минимальная сумма в худшем случае[править | править код]
В худшем случае минимальная сумма в полученном разбиении составляет не менее от оптимальной (максимально возможной) минимальной суммы.
Доказательство[править | править код]
Доказательство от противного можно найти в соответствующей литературе.
Верхняя граница отношения[править | править код]
Более тщательный анализ показывает, что это отношение не превышает (например, при m=2 отношение равно 5/6).
Точность и пример[править | править код]
Указанное отношение является точным.
Рассмотрим пример с 3m-1 входными значениями (где m чётно). Первые 2m значений: 2m-1, 2m-1, 2m-2, 2m-2, ..., m, m. Оставшиеся m-1 значений равны m. В этом случае жадный алгоритм выдаст:
- 2m-1, m, m
- 2m-1, m, m
- 2m-2, m+1, m
- 2m-2, m+1, m
- ...
- 3 m/2, 3 m/2-1, m
- 3 m/2, 3 m/2-1
с минимальной суммой 3m-1. Однако оптимальное разбиение таково:
- 2m-1, 2m-1
- 2m-2, m, m
- 2m-2, m, m
- 2m-3, m+1, m
- 2m-3, m+1, m
- ...
- 3 m/2, 3 m/2-2, m
- 3 m/2, 3 m/2-2, m
- 3 m/2-1, 3 m/2-1, m
с минимальной суммой 4m-2.
Ограниченный алгоритм LPT[править | править код]
Существует разновидность алгоритма под названием Restricted-LPT (RLPT), в которой входные данные делятся на группы размера m, называемые рангами (ранг 1 содержит m наибольших значений, ранг 2 — следующие m по величине и т.д.). Элементы каждого ранга должны быть распределены по m различным частям разбиения: сначала ранг 1, затем ранг 2 и так далее. Минимальная сумма в разбиении RLPT не превышает минимальную сумму в LPT. Коэффициент аппроксимации RLPT для максимизации минимальной суммы не превышает m.
Максимальная сумма в среднем[править | править код]
Если числа распределены равномерно на отрезке [0,1], то максимальная сумма в расписании LPT обладает следующими свойствами:
- Математическое ожидание максимальной суммы для m=2 машин лежит в диапазоне от до , где n — количество входных данных.
- Максимальная сумма почти наверняка не превышает оптимальную более чем в раз, а в среднем ожидается превышение не более чем в раз.
- Разница между максимальной суммой по LPT и оптимальной максимальной суммой почти наверняка составляет не более (для равномерного или экспоненциального распределений), а её математическое ожидание не превышает (для равномерного распределения). Эти результаты применимы также для задачи планирования на однородных машинах.
Целевая функция общего вида[править | править код]
Пусть Ci (для i от 1 до m) обозначает сумму подмножества i в заданном разбиении. Вместо минимизации целевой функции max(Ci) можно минимизировать функцию max(f(Ci</sub)), где f — произвольная функция. Аналогично, можно минимизировать целевую функцию sum(f(Ci</sub)). Алон, Азар, Вёгингер и Ядид доказали, что если f удовлетворяет следующим условиям:
1. Условие строгой непрерывности (Условие F*): для любого ε>0 существует δ>0, такое что, если |y-x|<δx, то |f(y)-f(x)|<εf(x). 2. f является выпуклой функцией, то правило LPT имеет конечный коэффициент аппроксимации для минимизации sum(f(Ci</sub)).
Производительность при делимых размерах элементов[править | править код]
Важным частным случаем является ситуация, когда размеры элементов образуют делимую последовательность. Такой случай встречается, например, при выделении памяти в компьютерных системах, где размеры объектов являются степенями двойки. Если размеры элементов делимы, и, кроме того, наибольший размер элемента делит размер контейнера, то алгоритм LPT всегда находит расписание, которое минимизирует максимальную сумму и максимизирует минимальную сумму.
Адаптации к другим сценариям[править | править код]
Помимо базового случая планирования на идентичных машинах, алгоритм LPT был адаптирован для более общих постановок задач.
Однородные машины[править | править код]
В задаче планирования на однородных машинах различные машины могут иметь разную скорость. Правило LPT в этом случае назначает каждое задание машине, на которой его время завершения будет наименьшим (это может привести к назначению задания на машину с наибольшей текущей загрузкой, если её высокая скорость позволяет завершить задание раньше других машин).
- Гонзалез, Ибарра и Сани показали, что коэффициент аппроксимации LPT для m однородных машин не превосходит . Эта граница не является точной; существует асимптотическая нижняя оценка 1,5 при стремлении m к бесконечности. Для частного случая m=2 коэффициент аппроксимации не превышает , и эта оценка точна.
- Миро, Орлин и Вохра исследовали сценарий с двумя машинами, одна из которых в q раз быстрее другой. Они вычислили коэффициент аппроксимации LPT как функцию от q. При q=1 их результат совпадает с известным коэффициентом 7/6 для идентичных машин.
- Куламас и Кипарисис предложили модификацию LPT, в которой три самых длинных задания планируются оптимально, а остальные — по правилу LPT. Коэффициент аппроксимации для двух машин в этом случае равен , и эта оценка точна.
Ограничение на количество заданий[править | править код]
В некоторых постановках существует ограничение на количество заданий, которые могут быть назначены каждой машине. Простым ограничением является условие, что любая машина не может выполнить более c заданий. Модифицированное правило LPT (MLPT) назначает каждое задание машине с наименьшей загрузкой среди тех, на которых назначено менее c работ.
- Келлерер и Вёгингер исследовали вариант, в котором имеется не более 3*m заданий и каждая машина может содержать не более 3 заданий (это можно рассматривать как обобщение задачи упаковки в контейнеры). Они показали, что MLPT обеспечивает отношение максимальной суммы к оптимальной не более , что совпадает с коэффициентом аппроксимации LPT для задачи без ограничений. Эта граница точна для MLPT. Высказано предположение, что MLPT имеет тот же коэффициент аппроксимации и для более общего ограничения на мощность множества (c>3). На сегодняшний день известно, что коэффициент аппроксимации MLPT для общего случая c>3 не превышает 2.
- Чен, Хэ и Лин показали, что для той же задачи MLPT обеспечивает отношение минимальной суммы к оптимальной не менее , что также совпадает с гарантией LPT для задачи без ограничений.
Ещё одно ограничение требует, чтобы количество заданий на всех машинах было равно значению , округлённому в большую или меньшую сторону. В адаптации LPT, называемой ограниченным LPT (RLPT), входные данные назначаются парами — по одному на каждую машину (для m=2 машин).
- Коффман, Фредериксон и Люкер показали, что математическое ожидание максимальной суммы в RLPT при равномерно распределённых случайных входных данных в точности равно . Математическое ожидание разности между максимальной и минимальной суммами составляет .
Неодновременная доступность машин[править | править код]
В задаче корневого разделения имеется m предварительных заданий, каждое из которых должно быть распределено на единственную машину. Эквивалентная задача — планирование работ, когда машины становятся доступными в разное время — машина i доступна начиная с
Ссылки[править | править код]
- в пакете numberpartitioning
- в пакете prtpy
- https://www.atlantis-press.com/proceedings/fmsmt-17/25875520
- https://doi.org/10.1145/800200.806205
- https://dx.doi.org/10.1016/0167-6377%2893%2990024-B
- https://doi.org/10.1007/s10100-011-0217-4
- https://pubsonline.informs.org/doi/abs/10.1287/moor.9.2.260
- https://pubsonline.informs.org/doi/abs/10.1287/moor.12.2.241
- https://onlinelibrary.wiley.com/doi/abs/10.1002/%28SICI%291099-1425%28199806%291%3A1%3C55%3A%3AAID-JOS2%3E3.0.CO%3B2-J
- https://dx.doi.org/10.1016/0885-064X%2887%2990009-4
- https://epubs.siam.org/doi/abs/10.1137/0206013
- https://pubsonline.informs.org/doi/abs/10.1287/opre.45.1.116
- https://www.sciencedirect.com/science/article/pii/S0377221708001938
- https://onlinelibrary.wiley.com/doi/abs/10.1002/jos.68
- https://doi.org/10.1023/A:1013370208101
- https://epubs.siam.org/doi/abs/10.1137/0221007
- https://doi.org/10.1007/BF02247409
- https://www.sciencedirect.com/science/article/pii/S0167637797000539
- https://www.sciencedirect.com/science/article/pii/S0307904X12005847
- https://pure.tue.nl/ws/files/1556464/459560.pdf
- https://doi.org/10.1007/BF01193837