stringtranslate.com

Упаковка контейнеров по принципу «первый подходит — уменьшается»

First-fit-decreasing (FFD) — это алгоритм упаковки контейнеров . Его входные данные — список элементов разных размеров. Его выход — упаковка — разбиение элементов на контейнеры фиксированной емкости, так что сумма размеров элементов в каждом контейнере не превышает емкость. В идеале мы хотели бы использовать как можно меньше контейнеров, но минимизация количества контейнеров — это NP-трудная задача, поэтому мы используем приблизительно оптимальную эвристику .

Описание

Алгоритм FFD работает следующим образом.

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

Эквивалентное описание алгоритма FFD выглядит следующим образом.

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

Анализ производительности

Производительность FFD анализировалась в несколько этапов. Ниже обозначает количество бинов, используемых FFD для входного набора S и емкость бинов C.

Пример наихудшего случая

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

Если в оптимальном решении имеется 4 копии и 2 копии , FFD вычислит следующие ячейки:

То есть всего 8 ячеек, тогда как оптимум имеет только 6 ячеек. Таким образом, верхняя граница узкая, потому что .

Этот пример можно распространить на все размеры : [5] в оптимальной конфигурации имеется 9 k +6 ячеек: 6 k +4 типа B 1 и 3 k +2 типа B 2. Но для FFD требуется не менее 11 k +8 ячеек, что составляет .

Производительность с делимыми размерами элементов

Важным частным случаем упаковки в контейнеры является тот случай, когда размеры элементов образуют делимую последовательность (также называемую факторизованной ). Частный случай делимых размеров элементов возникает при распределении памяти в компьютерных системах, где размеры элементов являются степенями 2. В этом случае FFD всегда находит оптимальную упаковку. [6] : Теор.2 

Свойства монотонности

Вопреки интуиции, не является монотонной функцией C. [7] : Рис.4  Аналогично, не является монотонной функцией размеров элементов в S : возможно, что элемент уменьшится в размере, но количество ячеек увеличится.

Однако алгоритм FFD обладает свойством «асимптотической монотонности», определяемым следующим образом. [7] : Лем.2.1 

Примеры

Например, предположим, что входные данные следующие:

44, 24, 24, 22, 21, 17, 8, 8, 6, 6.

Вместимостью 60, FFD упаковывает 3 контейнера:

Но при емкости 61 FFD вмещает 4 контейнера:

Это происходит потому, что при емкости 61 число 17 помещается в первый контейнер и, таким образом, блокирует путь к следующим 8, 8.

В качестве другого примера [8] : Пример 5.1   предположим, что входы следующие: 51, 28, 28, 28, 27, 25, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10. При емкости 75 FFD упаковывает 4 контейнера:

Но при вместимости 76 ему понадобится 5 контейнеров:

Рассмотрим приведенный выше пример с емкостью 60. Если 17 станет 16, то результирующая упаковка будет следующей:

Модифицированный первый подходящий-убывающий

Модифицированное уменьшение первого соответствия (MFFD) [9] улучшает FFD для элементов, превышающих половину ячейки, классифицируя элементы по размеру на четыре класса: большой, средний, маленький и крошечный, что соответствует элементам с размером > 1/2 ячейки, > 1/3 ячейки, > 1/6 ячейки и меньшим элементам соответственно. Затем он проходит через пять фаз:

  1. Выделите контейнер для каждого крупного предмета, расположив его от большего к меньшему.
  2. Продвигайтесь вперед по корзинам. На каждой: Если наименьший оставшийся средний предмет не помещается, пропустите эту корзину. В противном случае поместите наибольший оставшийся средний предмет, который помещается.
  3. Пройдите назад через те ячейки, которые не содержат средний предмет. На каждой: Если два самых маленьких оставшихся маленьких предмета не помещаются, пропустите эту ячейку. В противном случае поместите самый маленький оставшийся маленький предмет и самый большой оставшийся маленький предмет, который помещается.
  4. Пройдите вперед через все ячейки. Если наименьший оставшийся предмет любого класса размеров не помещается, пропустите эту ячейку. В противном случае поместите наибольший помещающийся предмет и оставьте его в этой ячейке.
  5. Используйте FFD, чтобы упаковать оставшиеся предметы в новые контейнеры.

Этот алгоритм был впервые изучен Джонсоном и Гэри [9] в 1985 году, где они доказали, что . Эта граница была улучшена в 1995 году Юэ и Чжаном [10], которые доказали, что .

Другие варианты

Best-fit-decreasing (BFD) очень похож на FFD, за исключением того, что после сортировки списка он обрабатывается с помощью best-fit bin packing . Его асимптотическое отношение аппроксимации такое же, как у FFD - 11/9.

Реализации

Смотрите также

Ссылки

  1. ^ Джонсон, Дэвид С. (1973). «Почти оптимальные алгоритмы упаковки контейнеров» (PDF) . Массачусетский технологический институт .
  2. ^ Бейкер, Бренда С. (1985). «Новое доказательство алгоритма убывающей упаковки контейнеров первым подходящим». J. Algorithms . 6 (1): 49–70. doi :10.1016/0196-6774(85)90018-5.
  3. ^ Юэ, Миньи (октябрь 1991 г.). «Простое доказательство неравенства FFD (L) ≤ 11/9 OPT (L) + 1, ∀L для алгоритма упаковки контейнеров FFD». Acta Mathematicae Applicatae Sinica . 7 (4): 321–331. дои : 10.1007/BF02009683. S2CID  189915733.
  4. ^ Ли, Ронгхэн; Юэ, Миньи (август 1997 г.). «Доказательство FFD(L) < -OPT(L) + 7/9». Chinese Science Bulletin . 42 (15): 1262–1265. Bibcode : 1997ChSBu..42.1262L. doi : 10.1007/BF02882754. S2CID  93280100.
  5. ^ ab Dósa, György (2007). "The Tight Bound of First Fit Decreasing bin-Packing Algorithm is FFD(I) ≤ 11/9OPT(I) + 6/9". В Chen Bo; Mike Paterson; Zhang Guochuan (ред.). Combinatorics, Algorithms, Probabilistic and Experimental Methodologies . First International Symposium, ESCAPE 2007, Hangzhou, China, April 7–9, 2007. Lecture Notes in Computer Science. Vol. 4614. pp. 1–11. doi :10.1007/978-3-540-74450-4_1. ISBN 978-3-540-74449-8.
  6. ^ Коффман, Э. Г.; Гарей, М. Р.; Джонсон, Д. С. (1987-12-01). «Упаковка контейнеров с делимыми размерами предметов». Журнал сложности . 3 (4): 406–428. doi :10.1016/0885-064X(87)90009-4. ISSN  0885-064X.
  7. ^ ab Coffman, EG Jr.; Garey, MR; Johnson, DS (1978-02-01). «Применение упаковки в контейнеры для многопроцессорного планирования». SIAM Journal on Computing . 7 (1): 1–17. doi :10.1137/0207001. ISSN  0097-5397.
  8. ^ Хуан, Синь; Лу, Пиньян (2021-07-18). «Алгоритмическая структура для аппроксимации распределения максиминной доли работы». Труды 22-й конференции ACM по экономике и вычислениям . EC '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 630–631. arXiv : 1907.04505 . doi : 10.1145/3465456.3467555. ISBN 978-1-4503-8554-1. S2CID  195874333.
  9. ^ ab Джонсон, Дэвид С.; Гари, Майкл Р. (октябрь 1985 г.). «Теорема 7160 для упаковки контейнеров». Журнал сложности . 1 (1): 65–106. doi : 10.1016/0885-064X(85)90022-6 .
  10. ^ Юэ, Миньи; Чжан, Лэй (июль 1995 г.). «Простое доказательство неравенства MFFD(L) ≤ 71/60 OPT(L) + 1,L для алгоритма упаковки ячеек MFFD». Acta Mathematicae Applicatae Sinica . 11 (3): 318–330. doi :10.1007/BF02011198. S2CID  118263129.