stringtranslate.com

Упаковка контейнеров First-fit

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

Коэффициент аппроксимации

Обозначим через FF(L) количество ячеек, используемых First-Fit, а через OPT(L) — оптимальное количество ячеек, возможных для списка L. Анализ FF(L) проводился в несколько этапов.

Ниже мы объясняем идею доказательства.

Асимптотическое отношение не более 2

Вот доказательство того, что асимптотическое отношение не более 2. Если есть ячейка FF с суммой меньше 1/2, то размер всех оставшихся элементов больше 1/2, поэтому сумма всех следующих ячеек больше 1/2. Следовательно, все ячейки FF, за исключением не более одной, имеют сумму не менее 1/2. Все оптимальные ячейки имеют сумму не более 1, поэтому сумма всех размеров не более OPT. Следовательно, количество ячеек FF не более 1+OPT/(1/2) = 2*OPT+1

Асимптотическое отношение не более 1,75

Рассмотрим сначала особый случай, в котором все размеры элементов не превышают 1/2. Если есть ячейка FF с суммой меньше 2/3, то размер всех оставшихся элементов больше 1/3. Поскольку размеры не превышают 1/2, все последующие ячейки (кроме, может быть, последней) содержат не менее двух элементов и имеют сумму больше 2/3. Следовательно, все ячейки FF, за исключением не более одной, имеют сумму не менее 2/3, а количество ячеек FF не превышает 2+OPT/(2/3) = 3/2*OPT+1.

«Проблемные» элементы — это те, размер которых больше 1/2. Поэтому, чтобы улучшить анализ, давайте дадим каждому элементу больше 1/2 бонус R. Определим вес элемента как его размер плюс его бонус. Определим вес набора элементов как сумму весов его содержимого.

Теперь вес каждой ячейки FF с одним элементом (кроме максимум одного) составляет не менее 1/2+R, а вес каждой ячейки FF с двумя или более элементами (кроме максимум одного) составляет 2/3. Принимая R=1/6, получаем, что вес всех ячеек FF составляет не менее 2/3.

С другой стороны, вес каждой ячейки в оптимальной упаковке не превышает 1+R = 7/6, поскольку каждая такая ячейка содержит не более одного предмета размером больше 1/2. Таким образом, общий вес всех предметов не превышает 7/6*OPT, а количество ячеек FF не превышает 2+(7/6*OPT/(2/3)) = 7/4*OPT+2.

Асимптотическое отношение не более 1,7

Следующее доказательство адаптировано из [6] : раздел 1.2  Определим вес входного элемента как размер элемента x некоторый бонус , вычисляемый следующим образом:

.

Асимптотическое приближение следует из двух утверждений:

  1. При оптимальной упаковке вес каждого контейнера составляет не более 17/12;
  2. В упаковке First-Fit средний вес каждой ячейки составляет не менее 5/6 = 10/12.

Следовательно, асимптотически количество ячеек в упаковке FF должно быть не более 17/10 * OPT.

Для утверждения 1 достаточно доказать, что для любого множества B с суммой не более 1, bonus( B ) не более 5/12. Действительно:

Следовательно, вес B не превышает 1+5/12 = 17/12.

Для утверждения 2 сначала рассмотрим ячейку FF B с одним элементом.

Теперь рассмотрим ячейки FF B с двумя или более элементами.

Таким образом, общий вес всех ячеек FF составляет не менее 5/6*(FF - 3) (где мы вычитаем 3 для одной ячейки с одним элементом и суммой <1/2, одной ячейки с двумя элементами и суммой <2/3 и k-1 для ячеек с двумя элементами и суммой ≥ 2/3).

В целом получаем, что 17/12*OPT ≥ 5/6*(FF-3), поэтому FF ≤ 17/10*OPT+3.

Доса и Сгалл [6] предлагают более строгий анализ, который избавляется от 3 и получает, что FF ≤ 17/10*OPT.

Нижняя граница

Существуют случаи, когда предел производительности 1.7OPT является жестким. Следующий пример основан на. [7] [8] Емкость ячейки составляет 101, и:

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

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

Изысканный первый вариант

Refined-First-Fit (RFF) — это еще один онлайн-алгоритм для упаковки контейнеров , который улучшает ранее разработанный алгоритм FF. Он был представлен Эндрю Чи-Чи Яо. [10]

Алгоритм

Предметы делятся на четыре класса в зависимости от их размеров (вместимость контейнера равна 1):

Аналогично контейнеры делятся на четыре класса: 1, 2, 3 и 4.

Пусть будет фиксированным целым числом. Следующий элемент назначается в ячейку в -

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

Обратите внимание, что RFF не является алгоритмом Any-Fit, поскольку он может открыть новую ячейку, несмотря на то, что текущий элемент помещается в открытую ячейку (из другого класса).

Коэффициент аппроксимации

RFF имеет гарантию аппроксимации . Существует семейство списков с для . [10]

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

Реализации

Ссылки

  1. ^ Ульман, Дж. Д. (1971). «Производительность алгоритма распределения памяти». Технический отчет 100 Принстонский университет .
  2. ^ Garey, M. R; Graham, R. L; Ullman, JD (1972). "Анализ алгоритмов распределения памяти в наихудшем случае". Труды четвертого ежегодного симпозиума ACM по теории вычислений - STOC '72 . С. 143–150. doi :10.1145/800152.804907. S2CID  26654056.
  3. ^ Дэвид С. Джонсон, Алан Дж. Демерс, Джеффри Д. Ульман, М. Р. Гэри, Рональд Л. Грэм. Границы производительности в худшем случае для простых алгоритмов одномерной упаковки. SICOMP, том 3, выпуск 4. 1974.
  4. ^ Garey, M. R; Graham, R. L; Johnson, D. S; Yao, Andrew Chi-Chih (1976). «Ресурсно-ограниченное планирование как обобщенная упаковка контейнеров». Журнал комбинаторной теории, серия A. 21 ( 3): 257–298. doi : 10.1016/0097-3165(76)90001-7 . ISSN  0097-3165.
  5. ^ Ся, Бинчжоу; Тан, Чжии (август 2010 г.). «Более узкие границы алгоритма First Fit для задачи упаковки в контейнеры». Дискретная прикладная математика . 158 (15): 1668–1675. doi : 10.1016/j.dam.2010.05.026 .
  6. ^ abc Доса, Дьёрдь; Сгалл, Иржи (2013). «Упаковка контейнера с первой посадкой: тщательный анализ». 30-й Международный симпозиум по теоретическим аспектам информатики (STACS 2013) . 20 . Schloss Dagstuhl – Leibniz-Zentrum für Informatik: 538–549. дои : 10.4230/LIPIcs.STACS.2013.538 .
  7. ^ Garey, MR; Graham, RL; Ullman, JD (1972-05-01). "Анализ алгоритмов распределения памяти в наихудшем случае". Труды четвертого ежегодного симпозиума ACM по теории вычислений - STOC '72 . Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 143–150. doi :10.1145/800152.804907. ISBN 978-1-4503-7457-6. S2CID  26654056.
  8. ^ Джонсон, Д.С.; Демерс, А.; Ульман, Дж.Д.; Гэри, М.Р.; Грэм, Р.Л. (декабрь 1974 г.). «Границы производительности в наихудшем случае для простых алгоритмов одномерной упаковки». Журнал SIAM по вычислениям . 3 (4): 299–325. doi :10.1137/0203025. ISSN  0097-5397.
  9. ^ Коффман, Э. Г.; Гарей, М. Р.; Джонсон, Д. С. (1987-12-01). «Упаковка контейнеров с делимыми размерами предметов». Журнал сложности . 3 (4): 406–428. doi :10.1016/0885-064X(87)90009-4. ISSN  0885-064X.
  10. ^ ab Yao, Andrew Chi-Chih (апрель 1980 г.). «Новые алгоритмы упаковки контейнеров». Журнал ACM . 27 (2): 207–227. doi : 10.1145/322186.322187 . S2CID  7903339.