Онлайновый алгоритм упаковки прямоугольников в несколько полос с гарантированными оценками точности 1
С.Н.Жук
Аннотация. В работе описан онлайновый алгоритм упаковки произвольного множества прямоугольников в несколько полос и доказано, что он гарантирует нахождение решения, отличающегося от оптимального не более чем в константу раз.
1. Введение
Задача упаковки прямоугольников в несколько полос заключается в следующем: имеется несколько полубесконечных полос определённой ширины н набор прямоугольников. Требуется найти ортогональное размещение этих прямоугольников по полосам (без пересечений н вращений), имеющее минимальную высоту. Эта задача возникает, например, при распределении ресурсов в глобальных вычислительных сетях Grid, объединяющих различные вычислительные ресурсы (кластеры). Проблема оптимального размещения задач на группе кластеров имеет простую геометрическую интерпретацию [ ]. Кластер мож-
но представить как бесконечную в одну строну полосу определенной ширины (ширина характеризует число процессоров кластера, другое измерение соответствует времени), а задачу — как прямоугольник с высотой н шириной равными времени выполнения н требуемому числу процессоров соответственно. Тогда естественно возникает задача упаковки данного множества задач (прямоугольников ) в несколько полос (кластеров): требование, что прямоугольники не должны пересекаться означает, что каждая задача на некоторое время (равное высоте прямоугольника) занимает некоторое число процессоров (равное ширине прямоугольника).
Даже для случая одной полосы, рассматриваемая задача является NP-трудной. Например, к ней сводится одномерная задача об упаковке в контейнеры (bin-packing [ ]). Если высоты всех прямоугольников равны 1, то слои, которые будут получаться при их размещении, как раз и соответствуют этим контейнерам. Следовательно, вряд ли можно ожидать, что существу-
1 Работа выполнена при поддержке РФФИ, проект 05-01-00798.
ет эффективный алгоритм, позволяющий решить эту задачу точно. Поэтому рассматривают различные приближённые алгоритмы, которые позволяют достаточно быстро найтн некоторое решение с определённой точностью.
Для опенки точности приближенных алгоритмов можно использовать следующие характеристики. Пусть Т — некоторая последовательность прямоугольников, С — множество полос, Но{Т,С) и НА{Т,С) — высота оптимального размещения прямоугольников и высота размещения, получающаяся с помощью алгоритма А, на множестве полос С. Тогда абсолютная точность алгоритма А определяется как
RA=sup{HA(T,C)/H0(T,C)},
т,с
а асимптотическая как
R% = lim sup{НА(Т,С)/Но(Т:С) \ Н0(Т,С) > к}.
к—>00 'J' Q
Особый интерес представляют так называемые online алгоритмы. Этн алгоритмы отличаются от обычных тем, что онн производят последовательное рассмотрение всех размещаемых объектов. В таких алгоритмах, каждый приходящий объект сразу же размещается, и его положение не изменяется с приходом следующих. Как правило такие алгоритмы более эффективны, кроме того нх удобнее использовать на практике, так как не всегда с самого начала известны все размещаемые объекты.
Наиболее исследованы частные случаи рассматриваемой задачи. Одни нз ннх — уже упомянутая классическая задача об упаковке в контейнеры (bin-packing).
Другой частный случай, когда у нас имеется всего одна полоса, — это также известная и хорошо исследованная задача. Впервые её изучали Baker, Coffman и Rivest [ ] в 1980 году. Ими был предложена простая эвристика Bottom-Left, позволяющая размещать прямоугольники внутри одной полосы с абсолютной точностью 3. Затем в 1981 году Baker, Brown и Katseff [ ] представили offline алгоритм гарантирующий асимптотическую точность 5/4. И этот алгоритм оставался лучшим до тех пока в 1996 году Kenyon и Remila [ ] не построили алгоритм, позволяющий за полиномиальное время находить почти оптимальное решение (с асимптотической точностью 1 +1 для любого t > 0).
Что касается online алгоритмов, то здесь тоже имеется значительное количество исследований. В 1983 году Baker и Shwartz [ ] представили так называемые шельфовые алгоритмы. В данных алгоритмах полоса разбивается на горн-
зонтальные слои(шельфы) различной высоты, а для размещения прямоугольников внутри шельфов используется какая-нибудь эвристика для одномерной упаковки в KOHTefiHepbi(bin-backing). Один нз таких алгоритмов с очень простой эвристикой First Fit позволяет добиться асимптотической точности 1.7. Затем Csirik и Woeginger [ ] показали, что никакой шельфовый алгоритм не может иметь асимптотическую точность меньше чем 1.69103 и построили алгоритм, позволяющий сколь угодно близко подойти к данному значению. Также Van Vliet [ 10] показал, что никакой online алгоритм упаковки прямоугольников в несколько полос не позволяет добиться асимптотической точности лучшей чем 1.5401.
Еще один важный частный случай — это задача о составлении расписания для то. машнн. Если предположить, что имеется то. одинаковых полос ширины 1 н все прямоугольники также имеют ширину равную 1, то как раз получится данная задача. Впервые её исследовал Graham [ ], он предложил очень про-
стой online алгоритм, который размещает каждую новую задачу на наименее загруженную машину. Точность этого алгоритма равна 2 — 1/то, для то машин. Еіесмотря на простоту данного алгоритма, долгое время не удавалось построить алгоритм, точность которого бы была меньше 2 — є для любого то (для фиксированного положительного t). Только в 1992 году Bartal et al.[ 13] предложили алгоритм с точностью не хуже 1.986 для всех то > 70. Это значение затем было улучшено до 1.945, а затем и до 1.923 в работах [ ] и [12]. Также было по-
лучено несколько результатов о нижних оценках для таких алгоритмов. Bartal, Karloff и Rabani [ ] показали, что ни один детерминированный алгоритм не мо-
жет иметь точность лучше, чем 1.837 для достаточно большого то. Этот результат был улучшен Albers [ 12] до 1.852.
Что касается задачи об упаковке прямоугольников в несколько полос, то она до сих пор остается в значительной степени не исследованной. А. Поспелов [21] предложил offline алгоритм, основанный на эвристике Bottom-Left, позволяющий размещать прямоугольники с абсолютной точностью равной 3. В работе [ 1 ] был рассмотрен алгоритм, размещающий прямоугольники по полосам в режиме online, позволяющий добиться точности 10.
Во данной работе предложен алгоритм, работающий полностью в режиме online, размещающий прямоугольники в несколько полос с константной мультипликативной точностью 17 н асимптотической точностью сколь угодно близкой к 8. В разделе 2 дано более формальное описание задачи. В разделе 3 рассмотрены шельфовые алгоритмы, которые будут использоваться для упаковки прямоугольников внутри полосы. В разделах 4 и 5 описан сам алгоритм и доказаны соответствующие теоремы о верхних оценках для абсолютной н асимпто-
тической точности.
2. Постановка задачи
Вход: Т = {Ti,..., Т,,} — конечная последовательность прямоугольников, h(Tj) н w(Tj) — соответственно высота н ширина прямоугольника Tj (максимальная высота одного прямоугольника равна hmax), н С = {С\,..., Ст} множество полубесконечных полос, га, — ширина i-й полосы.
Задача: Найтн ортогональное размещение последовательности прямоугольников Т по этим полосам, минимизирующее полную высоту этого размещения, то есть максимум по всем прямоугольникам н по всем полосам расстояния от дна полосы до верхней грани прямоугольника.
Пусть С н Т — заданные множества полос н прямоугольников, н пусть А — некоторый алгоритм размещающий прямоугольники по полосам. Тогда будем обозначим Но{Т, С) — оптимальное значение высоты размещения последовательности прямоугольников Т на полосах С, н НА(Т, С) — высота размещения этих прямоугольников на С, получающегося при использовании алгоритма А.
Для опенки точности приближенных алгоритмов мы будем использовать следующие характеристики.
1. Абсолютная точность алгоритма А определяется как
RA = sup{HA(T,C)/Ho(T,C)}-
т,с
2. Асимптотическая точность алгоритма А определяется как
= lim sup{НА(Т,С)/Но(Т:С) \ Н0(Т,С) > к}.
к—>00 'J' Q
3. Шельфовый алгоритм
Для размещения прямоугольников внутри каждой нз полос будет использоваться так называемый шельфовый алгоритм. Он был рассмотрен в [4] для случая одной полосы.
Пусть задана некоторая константа г € (0,1). Шельф — это прямоугольная часть полосы, с шириной равной ширине полосы. Как только прнходнт новый прямоугольник Т., , шельфовый алгоритм определяет целое число к, такое что ?,fc+i < h(Ti) < гк н после этого он размещает данный прямоугольник в шельфе высотой гк. Прямоугольник может быть размещен в один нз существующих
шельфов, или сверху может быть создан новый шельф высоты гк. Прямоугольники внутри каждого шельфа размещаются по горизонтали в ряд. Таким образом, упаковка прямоугольников, попавших в один класс по высоте (то есть которым соответствует одно значение к), производится с помощью некоторой эвристики, осуществляющей одномерную упаковку в контейнеры (Bin-Packing). Мы будем использовать эвристику First Fit(FF), которая каждый прямоугольник помешается в первый шельф в который он вообще может быть размещен, и если таких нет, то создает новый шельф.
Описанный выше алгоритм будем обозначать Shelf (г). Нам понадобится следующее свойство шельфовых алгоритмов.
Теорема 1. Пусть суммарная площадь прямоугольников упакованных на данную полосу равна S, ширина данной полосы равна w и максимальная высота прямоугольника равна hmax, тогда для высоты упаковки получившейся с помощью алгоритма Shelf (г) справедливо
Доказательство. Пусть множество шельфов данной полосы — это Е = {е ь...,ер}.
Разобьем все шельфы на две группы:
G\ = {е е Е : е заполнен меньше чем на половину по ширине}
G2 = {е € Е : е заполнен не меньше чем на половину по ширине}
Обозначим также Eli = МеМ = 1,2 ( h(e) — высота шельфа е).
Elj — суммарная высота шельфов из группы С, . Тогда для высоты размещения с помощью алгоритма А можно записать
Получим теперь оценки для Eti н #2- Рассмотрим сначала группу G\. Каждый шельф в этой группе заполнен меньше, чем на половину. Поэтому, так как мы используем эвристику First Fit, то каждой высоты у нас не больше одного шельфа.
Пусть /?х — высота самого большого шельфа в Gi, тогда
г iv ?’(! — ?’)
'max
НShelf (г) < Hi + ff2-
(1)
Так как hmax > г ■ hi, то
II ■ h" ' . (2)
“ г 1 - г)
Оценим теперь Н2. Каждый из шельфов в заполнен по ширине не меньше чем на половину и высота любого прямоугольника в нем составляет не менее г от высоты шельфа. Поэтому,
5 > \гН2ги => Я2 < (3)
Подставляя (2) и (3) в (1), получим
И <1 ^ ,1
-Н- Б1ге^(г) _
max
4. Описание алгоритма A(r, a
Будем считать, что все полосы упорядочены по ширине, т.е. для Ci,..., Cm выполняется wi > W2 '>■■■> wm. И пусть задано некоторое число а е (0,1).
Будем использовать следующие обозначения:
last(Tj) = maxfc : iVk > w(Tj)
last(Tj) last(Tj)
first(Tj) = maxr : J2 wk > a J2 wk
k=r k=l
Полосы с номерами first(Tj), first(Tj) + 1, ..., last(Tj) будем называть допустимыми для прямоугольника Tj.
Алгоритм для размещения прямоугольников.
1. Для каждого поступающего прямоугольника Tj производится рассмотрение всех допустимых для него полос. И затем прямоугольник Tj отправляется на одну нз допустимых ПОЛОС Ci, у которой отношение ^ минимально. Здесь S) — суммарная площадь прямоугольников уже размещённых на i-й полосе.
2. Для упаковки прямоугольников внутри каждой полосы используется шельфовый алгоритм Shelf (г).
Описанный выше алгоритм зависит от двух параметров: г и а. Будем его обозначать А(г, а).
5. Верхняя оценка для алгоритма A(r, a)
Теорема 2. Для алгоритма А = А(?-, а) для любых множества полос С и последовательности прямоугольников Т справедлива оценка:
Ял (Г, С) < 1 • - • Н0(Т, С) + hmax ( + Л .
а(1 — а) г \г(1 — г) )
Доказательство. Пусть в результате работы алгоритма самая большая высота размещения получилась на к-й полосе. Пусть Та — прямоугольник, который был добавлен последним на эту полосу и
/ = /ггв^(Га), I = 1аЩТа).
Пусть ..., \\гі множества прямоугольников, которые уже были размещены на допустимых для Та полосах ... ,Сі непосредственно перед добавление прямоугольника Та, и пусть Б., = Б(\¥і) — площадь всех прямоугольников нз И7,;. Так как его добавили на к-ю полосу, то
Поэтому,
I I Q I Q Q I
E s.■"<г E ^ ^ ■ E ■« ■ <4 >
*=/ *=/ *=/ *=/
Пусть Ть — самый узкий нз размещенных на полосах с номерами прямоугольников и пусть I = last(Tb). Тогда все прямоугольники, размещенные на Cf,... ,Ci не могут быть вообще размещены на полосах, имеющих номер меньше /о.
Так как Ть размещен на одной нз полос Cf,..., С/, то
III i
first(Tb) < I ==> 5] • '> >' =>■ 5] Wi > (1 - a) Wj.
i=l-\-1 i— 1 i— 1 i—1
Так как / = f irst(Ta), то
i i i wj > a ivj > a(l — a) iVj.
i — f i — 1 i — 1
Далее,
т I
n'-Y."': Y.S:- <•-.)
i = fo i = f
Подставляя сюда ( 4 ) и используя ( 5 ), получаем
Но ■ Щ > — ■ У2тг > а(1 - а) ■ — ■ У2тг-
U Wk U Wk и
Или, что то же самое
— < Н° (6)
■Wk ~ а(1 — а)
Используя теорему 1 ( свойство шельфовых алгоритмов ) для полосы с номером к (прямоугольник Та или размещается в один из существующих шельфов или размещается сверху образуя новый шельф )
НА(Т, С) <- ■ — + hmax ( 1 ) + h(Ta).
Г Wk ~ r) )
Используя (6) и то, что hmax > h(Ta), получим
НА(Т, С) < 1 • - • Но(Т, С) + hmax ( 1 + 1
а(1 — а) г \г(1 — г)
Таким образом, теорема 2 доказана.
Используя, то что Но{Т, С) > hmax, получим:
Следствие 1. Для алгоритма А = А(г,а) для любых множества полос С и последовательности прямоугольников Т справедливо
НА(Т,С) 1 2 1
v ’—- <---------------1--------h 1.
Н0{Т, С) ~ а{1 — а) г г{1 - г)
Минимум выражения в правой части достигается при г = | и а =
Следствие 2. Для алгоритма А = А(г = а = \ ) для любых множества полос С и последовательности прямоугольников Т справедливо
НА{Т,С)
Но(Т, С) - '•
Следствие 3. Для алгоритма А = А(г, а = ^)
RTs < -.
Г
Литература
[1] M.R. Garey and D.S. Johnson, Computers and Intractability, A Guide to the Theory of NP-Completeness (Freeman, San Francisco, 1979). 7
[2] B.S. Baker, E.J. Coffman and R.L. Rivest, Orthogonal packings in two dimensions, SIAM J. Computing, 1980, v. 9, pp. 846-855. 8
[3] C. Kenyon and E. Remila, A near optimal solution to a two-dimensional cutting stock problem, Mathematics of Operations Research, 2000, v. 25, pp. 645-656. 8
[4] B.S. Baker, D.J. Brown and H.P. Katseff, A 5/4 algorithm for two-dimensional packing, J. of Algorithms, 1981, v. 2, pp. 348-368. 8
[5] B.S. Baker and J.S. Schwarz, Shelf algorithms for two-dimensional packing problems, SIAM J. Comput., 1983, v. 12, pp. 508-525. 8
[6] E. G. Coffman, Jr., D. S. Johnson, P. W. Shorand G. S. Lueker. Probabilistic analysis of packing and related partitioning problems, Statistical Science, 1993, v. 8, pp. 40-47.
[7] E. G. Coffman, Jr., P. W. Shor. Packings in two dimensions: Asymptotic average-case analysis of algorithms, Algorithmica, 1993, v. 9, pp. 253-277.
[8] J. Csirik, G.J. Woeginger, Shelf Algorithms for On-Line Strip Packing. Inf. Process. Lett., 1997, v. 63, N 4, pp. 171-175. 9
[9] Ee-Chien Chang, W. Wang, M.S. Kankanhalli, Multidimensional online bin-packing: An algorithm and its average-case analysis, Information Processing Letters, 1993, v. 48, pp. 121-125.
[10] A. Van Vliet, An improved lower bound for on-line bin packing algorithms, Information Processing Letters, 1992, v. 43, pp. 277—284. 9
[11] R. L. Graham. Bounds for certain multiprocessing anomalies. Bell System Technical Journal, 1966, v. 45, pp. 1563—1581. 9
[12] S. Albers. Better bounds for online scheduling. In Proceedings of the 29th ACM Symposium on Theory of Computing, 1997, pp. 130-139. 9
[13] Y. Bartal, A. Fiat, H. Karloff, and R. Vohra, New algorithms for an ancient scheduling problem, J. Comput. Syst. Sci, 1995, v. 51, N 3, pp. 359-366. 9
[14] U. Faigle, W. Kern, and G. Tur’an. On the performance of on-line algorithms for partition problems. In Acta Cybernetica, 1989, v. 9, pp. 107-119.
[15] D. R. Karger, S. J. Phillips, and E. Torng. A better algorithm for an ancient scheduling problem. In Proceedings of the 5th Annual ACM-SIAM Symposium on Discrete Algorithms, 1994, pp. 132—140. 9
[16] Y. Bartal, H. Karloff, and Y. Rabani. A better lower bound for on-line scheduling. Information Processing Letters, 1994, v. 50, pp. 113—116. 9
[17] M. Caramia, S. Giordani, A. Iovanella, Grid scheduling by on-line rectangle packing, Networks, 2004, V. 44, N 2, pp. 106-119. 7
[18] C.H. Жук, Анализ некоторых эврнстнк в задаче упаковки прямоугольников внесколько полос, Труды Института системного программирования, т. 6, Математические методы и алгоритмы, 2004, с . 13—26. 9
[19] С.И. Жук, Приближенные алгоритмы упаковки прямоугольников в несколько полос, Дискретная математика, 2006, т. 18, N 1 с. 91 — 105.
[20] S. Zhuk, A. Chernykh, A. Avetisyan, S. Gaissaryan, D. Grushin, N. Kuzjurin, A. Pospelov, A. Shokurov, Comparison of Scheduling Heuristics for Grid Resource Broker., Proc. Fifth Mexican Int. Conf. in Computer Science (ENC’04), IEEE Computer Society, 2004, pp. 388-392.
[21] А.И. Поспелов, Анализ одного алгоритма упаковки прямоугольников, связанного с построением расписаний для кластеров, Труды Института системного программирования, т. 6, Математические методы и алгоритмы, 2004, с . 7-12. 9