Анализ некоторых эвристик в задаче упаковки прямоугольников в несколько полос

Анализ некоторых эвристик в задаче упаковки прямоугольников в несколько полос1

С. Н. Жук

Аннотация. Статья посвящена анализу некоторых эвристик в задаче упаковки прямоугольников в несколько полос. Предложен эффективный алгоритм, который размещает прямоугольники по полосам в онлайновом режиме и гарантирует константную мультипликативную точность. Это достигнуто за счёт правильной формализации понятии «допустимая полоса для прямоугольника». Показано, также, что полученная оценка точности достижима на некоторых исходных данных.

1. Введение

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

Такая задача возникает, например, при распределении ресурсов в глобальных вычислительных сетях Grid, объединяющих разнородные вычислительные ресурсы (персональные компьютеры, рабочие станции, кластеры, суперкомпьютеры) и используемых для выполнения различных приложений (научных, инженерных и коммерческих). Задачу о распределении ресурсов в Grid можно представить как задачу о размещении приложений (задач) на группе кластеров. Такая модель имеет простую геометрическую интерпретацию. Кластер можно представить как бесконечную в одну строну полосу, определенной ширины (ширина характеризует число процессоров кластера), а приложение (задачу) — как прямоугольник с высотой и шириной равными времени выполнения и требуемому числу процессоров соответственно.

Известно, что даже для случая одной полосы, рассматриваемая задача является NP-трудной. Следовательно вряд ли можно ожидать, что существует эффективный алгоритм, позволяющий решить её точно. Поэтому рассматривают различные приближённые алгоритмы, которые позволяют достаточно быстро найти некоторое решение с определённой точностью.

Отметим, что в случае одной полосы — это известная и хорошо исследованная задача [1,2,3]. Для нее разработаны различные эвристики и построен алгоритм, позволяющий за полиномиальное время находить по-

^абота выполнена при поддержке РФФИ, проект 02-01-00713.

чти оптимальное решение (с точностью 1 + є для любого є > 0) [2]. Тем не менее, этот алгоритм достаточно сложен и на практике обычно удобнее применять более простые эвристики.

В данной работе рассмотрены два достаточно просто реализуемых алгоритма, в которых прямоугольники по полосам размещаются по мере поступления. Для первого алгоритма показано, что его точность не аппроксимируется никакой константой. А для второго (модификации первого) доказано, что он гарантирует константную мультипликативную точность. Это достигнуто за счёт правильной формализации понятии «допустимая полоса для прямоугольника». Оказалось, что за счёт введения некоторых ограничений на множество полос, на которые можно размещать прямоугольники, можно существенно усовершенствовать алгоритм и достичь константной точности аппроксимации (мультипликативной). Для второго алгоритма показано, что полученную оценку мультипликативной точности нельзя улучшить.

2. Постановка задачи

Основная задача. Пусть Т = {Ті,.. . , Т1,,} — конечная последовательность прямоугольников, h{Tj) и w{Tj) — соответственно высота и ширина прямоугольника Tj, и С = {Сі,..., Ст} — множество полубесконечных полос (кластеров), га, — ширина і-й полосы.

Требуется найти ортогональное размещение последовательности прямоугольников Т по этим полосам, минимизирующее полную высоту этого размещения, то есть максимум по всем прямоугольникам и по всем полосам расстояния от дна полосы до верхней грани прямоугольника.

Пусть Но(Т,С) — оптимальное значение высоты размещения, и На(Т,С) — высота размещения прямоугольников, получающегося при использовании алгоритма А.

Мы будем рассматривать следующую двухуровневую модель работы алгоритмов.

• На первом уровне для каждого прямоугольника определяется полоса, на которой он будет размещён. Этот этап размещения производится в режиме «online», то есть для каждого прямоугольника сразу определяется полоса, на которой он будет размещаться и впоследствии с приходом новых прямоугольников номер этой полосы не изменится.

• На втором уровне производится размещение прямоугольников внутри каждой полосы. Этот этап размещения производится уже не в режиме «online», то есть при добавлении нового прямоугольника внутри полосы может происходить переразмещение.

3. Алгоритм Bottom-Left

Для размещения последовательности прямоугольников внутри одной полосы в данной работе используется достаточно простая эвристика Bottom-Left(BL), детально исследованная в [1]. Алгоритм BL размещает все прямоугольники в порядке следования, так что каждый следующий прямоугольник размещается в самую левую из всевозможных самых нижних допустимых позиций. Рассмотрим некоторые его свойства.

Результаты работы этого алгоритма существенно зависят от порядка следования прямоугольников. Как показано в [1] для произвольного порядка отношение может получиться сколь угодно большим. Но если

перед размещением список прямоугольников Т отсортировать по убыванию ширины, то можно показать, что для полученного списка Tsorted выполняется

HA(TSorted,C) ^

Ho(Tsorted,C) ~

Далее при использовании алгоритма мы везде будем полагать, что прямоугольники упорядочены по убыванию ширины.

Обозначим также BLi(W) — высоту получающуюся при размещении с помощью алгоритма BL множества прямоугольников W в i-й полосе (с сортировкой по ширине перед размещением).

Есть ещё одно важное свойство алгоритма BL, которое нам в дальнейшем понадобиться [1].

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

4. Простой алгоритм

4.1. Описание Алгоритма 1

1. Для каждого следующего прямоугольника Tj, производится последовательное рассмотрение всех полос С,, на которых данный прямоугольник может быть вообще размещён (т.е. w{Tj) < га,). Для каждой полосы определяется высота размещения, которая получается при добавлении данного прямоугольника к имеющимся и применении алгоритма BL к новому отсортированному списку прямоугольников. После этого прямоугольник отправляется на одну из тех полос, у которых эта высота наименьшая.

2. После того как все прямоугольники Tj исчерпаны, в каждой полосе применяется алгоритм BL для соответствующего отсортированного списка.

4.2. Пр имер со сколь угодно большим отношением

Теорема 1. Для любого г существуют такое множество полос С и такая последовательность прямоугольников Т, что

НаЛТ,С) ^

----------> г.

Но(Т,С) -

Доказательство. Достаточно предъявить пример таких С и Т. Выберем некоторое целое к > 0.

к

1. Пусть С = и Ст, где

т= 1

= { С\ д | С\ д — полоса шириной 1}

От = { Ст,!, . . . , Ст <2'2т 3 I Ст,8 — полоса шириной }, где т =

2,..., /с.

к

2. Пусть У = и Ут

т= 1

Ут = { >т,1, • • • Дт,2-22”>-3 I — ПрЯМОуГОЛЬНИК ШИрИНОЙ И

высотой 1}, т = 1, ..., к

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

Оптимальное

размещение

С,

III

III

II

С помощью А\

С, С2

С3 С4

Рис. 1. Пример для Алгоритма 1.

Тогда, Но{Т, С) = 2. (Все прямоугольники из У„г размещаем на полосы из Ст в два слоя).

Применим алгоритм Ai к Т и С. Прямоугольники будут размещаться в следующем порядке: сначала все прямоугольники из множества Yj., затем все из Yk-1 и т.д. до Yi. Так как

m

2 , 22т_3 . _2т_2___1 I \ Л 22j — з _ 1

2W ' ^ 2i ~17

j=2

то суммарная ширина всех прямоугольников из Ym равна суммарной ширине всех полос из IJflx Gi, поэтому при размещении они равномерно покроют слоем высотой 1 все эти полосы и никак не будут влиять на дальнейшее распределение прямоугольников. Поэтому На1(Т,С) = к, то есть = к/2 для любого целого к. Выбирая к. > 2  г получим утверждение теоремы.

5. Усовершенствованный алгоритм

5.1. Описание Алгоритма 2

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

Далее будем считать, что все полосы упорядочены по ширине, т.е. для С\, . . . , С.т выполняется IVl < IV 2 < • • • < IVт.

Введём следующие обозначения:

first

г ^ т

last(Tj) = minг : iv.j > — га,

i=first

Определение 1. Полосы, с номерами first{Tj), first(Tj) + 1, ... , last(Tj) назовем, допустимыми для. прямоугольника Tj.

Алгоритм 2.

1. Прямоугольники в каждой полосе размещаются с помощью алгоритма BL с предварительной сортировкой по ширине (также как и в Алгоритме 1).

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

Алгоритм 2 отличается от Алгоритма 1 только тем, что каждый прямоугольник может быть размещен не на любой полосе, на которую он может поместиться, а только на допустимой.

5.2. Доказательство верхней оценки

Докажем, что Алгоритм, 2 позволяет решить основную задачу с константной мультипликативной точностью.

Теорема 2. Для данного алгоритма — Ю-

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

/ = /м'вЦТаХ 1 = 1азЦТа).

Пусть Wf,,ЦГ1 множества прямоугольников, которые уже были размещены на допустимых для Та полосах С/,..., С; непосредственно перед добавление прямоугольника Та. Так как его добавили на к-ю полосу, то

ВЬ№ и {Та}) > Ял (Г, С) * = /,..., I,

Пусть при размещении с помощью алгоритма ВЬ множества прямоугольников И7,; и {Та} на ьой полосе ГС; — прямоугольник, имеющий максимальную верхнюю границу. И пусть /?,; = /г(ГС4) и 1; — это его высота и высота его его нижней границы соответственно. Пусть г, = ti — 1г(Та), тогда

и + — На2

г,: + 1г{Та) + Ы > На2 (Т, С) г = /,..., /,

I II I

У "':Г: + /г.

*=/ *=/ *=/ *=/

Пусть 5

5'(И7:) > ^ • Ш; • г,:.

Пусть Гь — самый узкий из размещенных на полосах с номерами /,...,/ прямоугольников и пусть /о = first(Tь) Тогда все прямоугольники, размещенные на С/,..., С; не могут быть вообще размещены на полосах, имеющих номер меньше /о.

Т.к. Ть размещен на одной из полос С/,..., С;, то

/—1 т т ш

last(Tb) > / => X] wi < | I] w.: ==> S Щ >| E

i=fo ~ i = fo i = f ~ i = fo

Т.к. I = last(Ta), to

I ^ m

i = f " * = /

Поэтому получаем,

m m I

Wi < 2 ^ Wi < 4 ^ Wi.

i = fo i = f i = f

Далее,

m I 1 /

Яо • ^ > ^S(Wj) > -

*=/o *=/ J *=/

/ m I

Y w,:V’,: <2  Ho  ^2 w'i < 8 • Я0 • ^ wi-

*=/ *=/o *=/

Так как Но > h(Tj), Vj, то из неравенств (1) и (2) получаем

I ill

8 ' Но -^2 Wi + /г. (Га) • ^ Wi + Но -^2 w> ^ На- ^2 w>

i=f i=f i=f i=f

Следовательно,

8 • Но + h(Ta) + Но > Ha2,

8 • Яо + Яо + Яо > На 2 ,

if510

6. Нижняя оценка для Алгоритма 2

Покажем теперь, что оценку 10, полученную в теореме 2, нельзя улучшить.

Теорема 3. Для любого £о > 0 существует такое множество полос и прямоугольников, и такой их порядок следования, для которого

^ > 10-to. rin

6.1. Пример шахматной доски

Построим вспомогательный пример размещения прямоугольников, аналогичный «the checkerboard example» из [1].

Пусть у нас есть

1. п прямоугольников 7\,..., Тп, с w(Tj) = h(Tj) = 2 — j  s;

2. Ns прямоугольников с шириной и высотой равными 1;

3. 1 полоса шириной 2п.

При использовании алгоритма BL эти прямоугольники будут размещены так, как показано на рисунке 2.

у/Х/Х// У///////

// //

// // // // // //

// // // // // // // //

2- £ 2 - 2t 2 — 3t 2 — 4t 2 - 5t

Рис. 2. Пример шахматной доски

Пусть к — количество слоев в этом размещении из маленьких прямоугольников. Будем считать п и выбраны так, что последний слой заполнен полностью и выполняется соотношение 2 • п = к2.

Суммарное количество всех маленьких прямоугольников не превосходит

Ж, < к3/2 + 0(к2).

6.2. Основной пример

• Некоторые обозначения. Выбор параметров.

1. Выберем какое-нибудь 6 > 0 и построим вспомогательный пример «шахматной доски» такой, что к = 8д, где д — целое число.

1/к < д,

< А:3(1/2 + (5),

£ < 6.

Обозначим Но = к/8 = д и гоо = 2 • п = к2.

2. Выберем некоторое положительное целое число т, такое что к/т < 6.

3. Выберем ь 1 > 0 так, что 2 • п  £х < £ и 16?? • т2 • £х < 1.

Обозначим га, = 1 — гх • (то. — г), для г = 1,. .., то..

4. Выберем ь 2 > 0 таким что те2 < £х-

Обозначим гу' = га,;/2 + £2-

5. Пусть IVа = 1/4.

• Опишем полосы, используемые в данном примере.

1. 2т полос шириной гУо- Обозначим их Ах,..., А2т.

2. ТО — 1 МНОЖеСТВ ПОЛОС, .Вх,..., Вт-1.

В— состоит из щ = 2 • 2п = 4п полос шириной га,.

Пусть — суммарное количество полос во всех этих множествах ( = 4п • (то- — 1) ).

3. то — 1 множеств С*х,..., Ст—х.

Сг; — состоит из пс = 2 • щ полос шириной = гщ/2 + £2-Суммарное количество полос в этих множествах Мс = 2  =

Ап • (то- — 1).

4. Одна полоса шириной

Будем считать, что полосы упорядочены по возрастанию по ширине следующим образом:

В, {С^! }, • • • , {Ст-х}, {-Вх}, • • • {-В„г_х}, Ах, ... , А2т-

£>1 £>2 1)т_1 Сх С2 Ст-1 Вх -В2 Вт-1 Ах А2 Агт

Рис. 3. Полосы основного примера.

Опишем прямоугольники, используемые в примере.

1. Множество Р состоит из Жс прямоугольников шириной и

ВЫСОТОЙ /?[)•

2. т — 1 множеств прямоугольников ..., Ят-ь

Яг состоит из 2 • щ прямоугольников шириной И ВЫСОТОЙ /?0.

3. Множество состоит из т прямоугольников, причём ьй имеет ширину га, — ьх/2 и высоту /?о.

4. т множеств прямоугольников Хх ... Хт, где

X/ состоит из Мх = 2 • (/г/8) • 2 • п = к3/4 прямоугольников шириной га,; = 1 — (т — г)  ?1 и высотой 1.

5. ш множеств прямоугольников У ... Ут.

У: состоит нз прямоугольников шириной 1 и

высотой 1.

6. 111 множеств Пх,, и.т.

и,: состоит из п прямоугольников,

]-й прямоугольник и; нмеет шнрнну 2 — j  £ и высоту 2 — j  £.

7. V — один прямоугольник шириной IVо И ВЫСОТОЙ /?0.

Некоторые общие замечания.

1. Для прямоугольников V, Их ... ит, У ... Ут, Хт допустимыми ЯВЛЯЮТСЯ ПОЛОСЫ А\ ,..., Ат и только они.

2. Для прямоугольников нз X; полоса А,: является допустимой.

3. Для ьго прямоугольника нз полоса А,: является допустимой.

4. Для прямоугольников 113 Р ПОЛОСЫ 113 С-1, ... , Ст-1 являются допустимыми.

5. Для прямоугольников нз Щ все полосы нз Вг являются допустимыми.

6. Полосы Ат+1,.. ., А^т не являются допустимыми ни для одного из прямоугольников.

7. Так как

IV Я, , 1 1

—гг— IV а = ------------- — '(1 — {ТП- — £"9

2ЖС ' 4 • 8п  (пг — 1) 2 ^ ^ ~

1 1 1 1 1 - 16пт?  £1 1

--------— — • т • £"1 ^ —,

2 4 • 8п -т 2 2 32пт 2

то в полосы нз С-1,..., Ст не влезут в одни слой, прямоугольник нз Р и прямоугольник нз одной нз групп ..., Ит.

8. Так как ширина прямоугольников из X незначительно отличается от 1, то при их размещении в полосах Ах,..., Ат расположение прямоугольников практически не будет отличатся от расположения в примере «шахматной доски».

б.З. Размещение с помощью Алгоритма 2

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

1. Сначала приходят прямоугольники из Р, они размещаются на полосы из Сх,..., Ст-1, по одному прямоугольнику на каждую полосу.

2. Далее для каждого г = 1,..., т приходят прямоугольников из Щ и они размещается на полосы из В; по одной на полосу.

3. Далее приходят прямоугольники из Хх,... ,Хт. И приходят они в таком порядке, чтобы прямоугольники из X* заполняли полосу А*. Так должно продолжаться до тех пор пока полосы А\,..., Ат не будут заполнены до высоты /?о.

4. Далее для каждого г = 1,..., т приходят оставшиеся прямоугольников из Щ. Они размещаются на полосах из В; вторым слоем.

5. Далее приходят оставшиеся прямоугольники из Хх,...,Хт. Они опять приходят в таком порядке, чтобы прямоугольники из X заполняли полосу А,;. Теперь полосы А\, ... Ат заполнены до высоты 2 • /? о.

6. Затем приходят прямоугольники из 0, ьй прямоугольник размещается на полосу А,;.

7. Далее приходят все прямоугольники из Ух, • • •, Ун- Они равномерно распределятся по полосам А\, ..., Ат. Они все одинаковые, поэтому порядок их прихода не важен.

8. Далее приходят прямоугольники из ... ,1}т. Для каждого j = 1,. .., по приходят ]-е прямоугольники для всех Щ и ]-й прямоугольник Щ размещается на полосу А,.

9. И последним приходит прямоугольник V. Он размещается на любую из полос Ах,..., Ат .

После такого распределения прямоугольников полоса на которую попал прямоугольник V будет выглядеть так как показано на рис. 4.

Рис. 4. Размещение с помощью Алгоритма 2.

Найдём высоту полученного размещения:

На2 = /?о + 2 — £ + к + /?.д > /?.0 + 8 • /?.0 + 1г0 = 10 • 1го.

6.4. Оптимальное размещение для основного примера

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

Размещение будет следующим:

1. Все прямоугольники из Р размещаем на полосу О.

2. Для каждого г = 1,..., т, — 1 все прямоугольники из Щ размещаем на полосах из С,.

3. Для каждого г = 1,..., т — 1 все прямоугольники из X, размещаем на полосы из В.,. Высота этого размещения окажется равной

АТх/пь = = к/8 = ко-

4. ьй прямоугольник из <5 размещаем на полосу Л,, так чтобы он был расположен в левом нижнем углу полосы.

5. Прямоугольник V размещаем на А2т-

6. В полосах Ах,..., А2т-1 размещаем прямоугольники из Ух,, Ут, так чтобы они заполнили их до высоты /?о (просто укладываем их в столбцы один на другой).

7. Для каждого г = 1,..., то. размещаем прямоугольники из И, в один слой на полосе А./ сверху уже размещенных там прямоугольников.

8. Далее все оставшиеся прямоугольники из У, • • • , У?г и прямоугольники из Хт размещаем равномерно по полосам Ах,..., А2т.

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

N1 = + то.  — (к/8)  ((то. — 1) • 2п + то. • (2п — 1)) =

= т  — т  к3/4 + к3/4 +

Му = М3- Кх = ЛГ8 - А:3/4 < А-3

N1 < тк36 + к3/4 + {к/8)  (2п + то.).

Высота, которую займут эти прямоугольники не превзойдет

N1 то. • к3  6 + к3/4 + {к/8)  {2п + то)

НI <--------------------------------------------------------Ь 1 < -тт.-\~ 1 ^

2-п-2-т ~ 2-т к2

кб 3 к 1

-Т + 1б^+ш + 1-кд + 1-

Суммарная высота размещения не превзойдет

Н0 < Н0 + 2 + Щ < ко + 3 + кб < 1г0  (1 + 24/Ат + 8Й') < 1г0  (1 + 326). Итак,

ЖГ “ ТТ^5 - 10 ' (1 “ 32(5)-

То есть, если положить 6 < £о/320, получим утверждение теоремы 3

НАо

тр > Ю-го. ад

7. Заключение

В данной работе получены некоторые результаты для задачи об упаковке прямоугольников в несколько полос. Рассмотрено два похожих алгоритма и показано, что точность первого не аппроксимируется никакой константой, а второй алгоритм - гарантирует константную мультипликативную точность. Это достигнуто за счёт правильной формализации понятия «допустимый кластер для задачи». Поскольку задача достаточно новая, то здесь остаётся ещё много неисследованных вопросов. Например, было бы интересно получше рассмотреть offline алгоритмы. Хотя в этом случае уже имеются некоторые результаты, но пока неизвестно, можно ли данную задачу, как в случае одной полосы, решить с точностью 1 + г для любого г > 0.

Также следует заметить, что оценки, полученные в данных алгоритмах, достаточно велики, поэтому можно попытаться разработать какие-нибудь более эффективные алгоритмы. И кроме того, хотя оценка 10 и достижима (как показано в теореме 3), она требует очень специального набора входных данных, который вряд ли может встретиться в реальности. Поэтому было бы интересно исследовать, как данные алгоритмы будут вести себя в среднем.

Литература

[1] B.S. Baker, E.J. Coffman and R.L. Rivest, Orthogonal packings in two dimensions, SIAM J. Computing, 1980, v. 9, pp. 846-855.

[2] C. Kenyon and E. Remila, A near optimal solution to a two-dimensional cutting stock problem, Mathematics of Operations Research, 25 (2000), 645-656.

[3] B.S. Baker, D.J. Brown and H.P. Ivatseff, A 5/4 algorithm for two-dimensional packing, J. of Algorithms, 1981, v. 2, pp. 348-368.

[4] K. Jansen, Scheduling malleable parallel tasks: an asymptotic fully polynomial-time approximation scheme, Proc. European Symposium on Algorithms, ESA, 2002.

[5] P. Brucker, Scheduling Algorithms, Springer Ferlag (1998), 217-218.

[6] L. Hluchy, V.D. Tran, D. Froehlich, and W. Castaings, Methods and Experiences of Parallelizing Flood Models, The 10th EuroPVM/MPI conference. LNCS 2840. Sept. 2003, Venice, pp. 677-681.

[7] E.J. Coffman, M.R. Carey, D.S. Johnson and R.E. Tarjan, Performance bounds for level-oriented two-dimensional packing algorithms, SIAM J. Computing, 1980, v. 9, pp. 808-826.

[8] M. Drozdowski, Scheduling multiprocessor tasks - an overview, European J. of Oper. Research, 1996, v. 94, pp. 215-230.