Jump to content

Алгоритмы упаковки бинов Кармаркара – Карпа

Кармаркара -Карпа ( KK ) Алгоритмы упаковки контейнеров представляют собой несколько связанных аппроксимационных алгоритмов для задачи упаковки контейнеров . [ 1 ] Задача упаковки контейнеров — это задача упаковки предметов разного размера в контейнеры одинаковой вместимости так, чтобы общее количество контейнеров было как можно меньшим. Найти оптимальное решение вычислительно сложно . Кармаркар и Карп разработали алгоритм, который работает за полиномиальное время и находит решение не более чем за бункеров, где OPT — количество бункеров в оптимальном решении. Они также разработали несколько других алгоритмов с немного другими гарантиями аппроксимации и ограничениями времени выполнения.

Алгоритмы КК считались прорывом в изучении упаковки бинов: известные ранее алгоритмы находили мультипликативную аппроксимацию, где число бинов не превышало для некоторых констант , или самое большее . [ 2 ] Алгоритмы КК были первыми, кто достиг аддитивной аппроксимации.

Исходными данными для задачи упаковки мусора является набор предметов разного размера a 1 ,... a n . Используются следующие обозначения:

  • n - количество предметов.
  • м – количество предметов разного размера. Для каждого i в 1,..., m :
    • s i i -й размер;
    • n i — количество элементов размера s i .
  • B – размер бункера.

Учитывая экземпляр I , мы обозначаем:

  • оптимальное решение экземпляра I. OPT(I) =
  • FOPT( I ) = ( a 1 +...+ a n )/ B = теоретически оптимальное количество ячеек, когда все ячейки полностью заполнены предметами или фракциями предметов.

Очевидно, FOPT( I ) ≤ OPT(I).

Схема высокого уровня

[ редактировать ]

Алгоритмы КК по существу решают конфигурационную линейную программу :

.

Здесь A — матрица из m строк. Каждый столбец A представляет возможную конфигурацию — мультимножество размеров элементов, такое, что сумма всех этих размеров не превышает B . Набор конфигураций C. x — вектор размера C. Каждый элемент x c из x представляет количество раз, когда конфигурация c используется .

  • Пример : [ 3 ] предположим, что размеры элементов равны 3,3,3,3,3,4,4,4,4,4 и B =12. Тогда существует C =10 возможных конфигураций: 3333; 333; 33, 334; 3, 34, 344; 4, 44, 444. Матрица A имеет две строки: [4,3,2,2,1,1,1,0,0,0] для s=3 и [0,0,0,1,0, 1,2,1,2,3] для s=4. Вектор n равен [5,5], поскольку имеется по 5 элементов каждого размера. Возможным оптимальным решением является x =[1,0,0,0,0,0,1,0,0,1], что соответствует использованию трех бункеров с конфигурациями 3333, 344, 444.

В решении этой проблемы есть две основные трудности. Во-первых, это целочисленная линейная программа , которую сложно решить вычислительно. Во-вторых, количество переменных равно C — количеству конфигураций, которое может быть огромным. Алгоритмы КК справляются с этими трудностями, используя несколько методов, некоторые из которых уже были предложены Де-ла-Вегой и Люкером. [ 2 ] Вот высокоуровневое описание алгоритма (где это исходный экземпляр):

  • 1-а. Позволять быть экземпляром, созданным из удаляя мелкие предметы.
    • 2-а. Позволять быть экземпляром, созданным из путем группировки элементов и округления размера элементов в каждой группе до максимального значения в группе.
      • 3-а. Постройте конфигурационную линейную программу для , без ограничений целочисленности.
        • 4. Вычислите (дробное) решение x для расслабленной линейной программы.
      • 3-б. Округляем x до интегрального решения для .
    • 2-б. «Разгруппируйте» элементы, чтобы получить решение для .
  • 1-б. Добавьте мелкие предметы, чтобы получить решение .

Ниже мы по очереди опишем каждый из этих шагов.

Шаг 1. Удаление и добавление мелких предметов

[ редактировать ]

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

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

.

Доказательство . Если новые ячейки не открываются, то количество ячеек остается . Если открывается новый контейнер, то все контейнеры, за исключением, возможно, последнего, содержат общий размер не менее , поэтому общий размер экземпляра не менее . Поэтому, , поэтому оптимальное решение требует как минимум контейнеры. Так . В частности, взяв g =1/ n , получим:

,

с . Поэтому принято предполагать, что все элементы больше 1/ n . [ 4 ]

Шаг 2. Группировка и разгруппировка элементов

[ редактировать ]

Мотивацией группировки элементов является уменьшение количества элементов разных размеров, уменьшение количества ограничений в конфигурации LP. Общий процесс группировки таков:

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

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

Линейная группировка

[ редактировать ]

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

  • В все предметы имеют одинаковый размер. В количество разных размеров .
  • - с 1 группы в доминирует во 2 группе (все k предметов в группе 1 больше, чем k предметов в группе 2); аналогично, группа 2 в доминирует в группе 3 в , и т. д.
  • - так как есть возможность упаковать каждый предмет в в одну корзину.

Поэтому, . Действительно, при наличии решения с контейнеры, мы можем найти решение с максимум контейнеры.

Геометрическая группировка

[ редактировать ]

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

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

Тогда количество различных размеров ограничено следующим образом:

  • Для всех р , и . Поскольку все предметы в больше, чем , у нас есть , так . Суммирование по всем r дает .

Количество бункеров ограничено следующим образом:

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

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

[ редактировать ]

Позволять быть целочисленным параметром. Упорядочивайте товары по убыванию размера. Разбейте их на группы так, чтобы общий размер каждой группы был не менее . Поскольку размер каждого элемента меньше B , количество элементов в каждой группе не менее . Количество предметов в каждой группе слабо возрастает. Если все элементы больше , то количество предметов в каждой группе не более . В каждой группе округляются только более крупные элементы. Это можно сделать так, чтобы:

  • .
  • .

Шаг 3. Построение ЛП и округление решения

[ редактировать ]

Рассмотрим конфигурационную линейную программу без ограничений целочисленности:

.

Здесь нам разрешено использовать дробное число каждой конфигурации.

  • Пример : предположим, что имеется 31 элемент размера 3 и 7 элементов размера 4, а размер ячейки равен 10. Конфигурации: 4, 44, 34, 334, 3, 33, 333. Ограничения: [0,0 ,1,2,1,2,3]* x =31 и [1,2,1,1,0,0,0]* x =7. Оптимальным решением дробного LP является [0,0,0,7,0,0,17/3]. То есть: имеется 7 бункеров конфигурации 334 и 17/3 бункеров конфигурации 333. Обратите внимание, что только две разные конфигурации необходимы.

Обозначим оптимальное решение линейной программы через LOPT. Следующие отношения очевидны:

  • FOPT(I) ≤ LOPT(I), поскольку FOPT(I) — это (возможно, дробное) количество ячеек, когда все ячейки полностью заполнены предметами или частями предметов. Очевидно, что ни одно решение не может быть более эффективным.
  • LOPT(I) ≤ OPT(I), поскольку LOPT(I) — решение задачи минимизации с меньшим количеством ограничений.
  • OPT(I) < 2*FOPT(I), поскольку в любой упаковке с минимум 2*FOPT(I) контейнерами сумма двух наименее полных контейнеров не превышает B , поэтому их можно объединить в один контейнер. .

Решение дробной ЛП можно округлить до целого решения следующим образом.

Предположим, у нас есть решение x дробной ЛП. Округляем x до решения интегральной ILP следующим образом.

  • Пусть x — оптимальное базовое допустимое решение дробной ЛП. Предположим, это как контейнеры (обратите внимание, что может быть дробным числом). Поскольку дробный ЛП имеет m ограничений (по одному для каждого отдельного размера), x имеет не более m ненулевых переменных, то есть не более m используется различных конфигураций. Построим по x целостную упаковку, состоящую из главной и остаточной частей .
  • Основная часть содержит напольные ( ) для контейнеры каждой конфигурации c, которой xc xc > 0.
  • Для остаточной части (обозначенной R ) построим две упаковки-кандидата:
    • Один бункер каждой конфигурации c, для которого x c > 0; всего m контейнеров. нужно
    • Жадная упаковка с количеством ячеек менее 2*FOPT( R ) (так как при наличии хотя бы 2 ячеек *FOPT( R ) два самых маленьких можно объединить).
  • Для наименьшей из этих упаковок требуется min( m , 2*FOPT( R )) ≤ среднее ( m , 2*FOPT( R )) = FOPT(R) + m /2.
  • Прибавив к этому округленные ячейки основной части, получим не более контейнеры. [ нужны разъяснения ]
  • Время выполнения этого алгоритма преобразования составляет O( n log n ).

Это также подразумевает, что .

Шаг 4. Решение дробной ЛП

[ редактировать ]

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

Двойной LP

[ редактировать ]

Двойная линейная программа дробного ЛП представляет собой:

.

Он имеет m переменных и ограничения C — ограничение для каждой конфигурации. Оно имеет следующую экономическую интерпретацию. Для каждого размера s мы должны определить неотрицательную цену. . Наша прибыль — это общая стоимость всех товаров. Мы хотим максимизировать прибыль n y при условии, что общая цена товаров в каждой конфигурации не превышает 1. Теперь эта ЛП имеет только m переменных, но огромное количество ограничений. Даже перечислить все ограничения невозможно.

К счастью, можно решить задачу с любой заданной точностью, не перечисляя всех ограничений, используя вариант метода эллипсоида . Этот вариант получает в качестве входных данных оракул разделения : функцию, которая для вектора y ≥ 0 возвращает один из следующих двух вариантов:

  • Утвердите, что y выполнимо, т.е. ; или -
  • Утвердите, что y недопустимо, и верните конкретное ограничение, которое нарушено, то есть вектор a такой, что .

Метод эллипсоида начинается с большого эллипсоида, который содержит всю допустимую область. . На каждом шаге t он занимает центр текущего эллипсоида и отправляет его оракулу разделения:

  • Если оракул говорит это осуществима, то делаем «оптимальный разрез»: вырезаем из эллипсоида все точки y , для которых . Эти точки определенно не являются оптимальными.
  • Если оракул говорит это недопустимо и нарушает ограничение a , то мы делаем «разрез осуществимости»: вырезаем из эллипсоида все точки y , для которых . Эти пункты определенно невыполнимы.

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

Оракул разделения для двойного LP

[ редактировать ]

Нам даны некоторые m неотрицательных чисел . Нам предстоит сделать выбор между следующими двумя вариантами:

  • Для каждой допустимой конфигурации сумма соответствующее этой конфигурации не более 1; это означает, что y осуществимо.
  • Существует допустимая конфигурация, для которой сумма больше 1; это означает, что y неосуществимо. В этом случае нам также придется вернуть конфигурацию.

Эту задачу можно решить, решив задачу о рюкзаке , где значения предметов равны , вес элемента равен , а грузоподъемность равна B (размер контейнера).

  • Если общее значение оптимального ранцевого решения не превосходит 1, то мы говорим, что y осуществимо.
  • Если общее значение оптимального ранцевого решения больше 1, то мы говорим, что y недопустимо, а элементы оптимального ранцевого решения соответствуют конфигурации, которая нарушает ограничение (поскольку для вектора a, соответствующего этой конфигурации).

Задачу о рюкзаке можно решить с помощью динамического программирования за псевдополиномиальное время: , где m — количество входов, а V — количество различных возможных значений. Чтобы получить алгоритм с полиномиальным временем, мы можем приближенно решить задачу о рюкзаке, используя округление входных данных. Предположим, нам нужно решение с толерантностью. . Мы можем округлить каждый из до ближайшего кратного / н . Тогда количество возможных значений от 0 до 1 равно n / , а время выполнения . Решение — это как минимум оптимальное решение минус / н .

Эллипсоидный метод с приближенным оракулом разделения

[ редактировать ]

Метод эллипсоида следует адаптировать для использования приблизительного оракула разделения. Учитывая текущий центр эллипсоида :

  • Если приблизительный оракул возвращает решение со значением больше 1, то определенно неосуществимо, и решение соответствует конфигурации, которая нарушает ограничение a . Мы проводим «обработку технико-экономического обоснования» в , разрезая эллипсоид все точки y, для которых .
  • Если приблизительный оракул возвращает решение со значением не более 1, то может быть осуществимо, а может и нет, но округлено в меньшую сторону (обозначим его через ) возможно. По определению округления мы знаем, что . Мы все еще делаем «оптимальный разрез» в : вырезаем из эллипсоида все точки y, для которых . Обратите внимание, что может быть невозможным, поэтому его значение может быть больше, чем OPT. Поэтому мы могли бы удалить некоторые точки, цель которых оптимальна. Однако удаленные точки удовлетворяют [ нужны разъяснения ] ; ни одна точка не удаляется, если ее значение превышает значение в более чем .

Использование оракула приближенного разделения дает допустимое решение y* двойственной ЛП с , максимум через итерации, где . Общее время работы метода эллипсоида с приблизительным оракулом разделения равно .

Устранение ограничений

[ редактировать ]

В методе эллипсоида мы используем не более Q ограничений вида . Все остальные ограничения можно устранить, поскольку они не влияют на результат y* метода эллипсоидов. Мы можем устранить еще больше ограничений. Известно, что в любой ЛП с m переменными существует набор из m ограничений, достаточный для определения оптимального решения (т. е. оптимальное значение одно и то же, даже если только эти m используются ограничений). Мы можем повторно запускать метод эллипсоида, как указано выше, каждый раз пытаясь удалить определенный набор ограничений. Если результирующая ошибка не превышает , то мы навсегда удалим эти ограничения. Можно показать, что нам нужно не более исключений, поэтому накапливаемая ошибка не превышает . Если мы попробуем наборы ограничений детерминированно, то в худшем случае одно из m испытаний окажется успешным, поэтому нам нужно запустить не более чем метод эллипсоида. раз. Если мы выберем ограничения для удаления случайным образом, то ожидаемое количество итераций будет равно .

Наконец, мы имеем сокращенную двойственную ЛП, содержащую только m переменных и m ограничений. Оптимальное значение приведенного ЛП составляет не менее , где .

Решение первичной ЛП

[ редактировать ]

По теореме двойственности ЛП минимальное значение первичного ЛП равно максимальному значению двойственного ЛП, которое мы обозначили LOPT. Получив уменьшенную двойственную ЛП, мы берем ее двойственную и берем уменьшенную первичную ЛП. Этот LP имеет только m переменных, что соответствует только m из C. конфигураций Максимальное значение приведенного двойного ЛП составляет не менее . Это можно показать [ нужны разъяснения ] что оптимальное решение приведенной первичной ЛП не более . Решение обеспечивает почти оптимальную упаковку контейнеров с использованием не более m конфигураций.

Общее время выполнения детерминированного алгоритма, когда все элементы превышают , является:

,

Ожидаемое общее время работы рандомизированного алгоритма составляет: .

Сквозные алгоритмы

[ редактировать ]

Кармаркар и Карп представили три алгоритма, которые используют описанные выше методы с разными параметрами. Время выполнения всех этих алгоритмов зависит от функции , которая представляет собой полиномиальную функцию, описывающую время, необходимое для решения дробной задачи ЛП с допуском h = 1, то есть для детерминированной версии: .

Алгоритм 1

[ редактировать ]

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

  • 1-а. Набор . Позволять быть экземпляром, созданным из удалив все элементы размером меньше g .
    • 2-а. Набор . Позволять быть экземпляром, созданным из линейной группировкой с параметром k и пусть быть оставшимся экземпляром (группой из k крупнейших элементов). Обратите внимание, что .
      • 3-а. Постройте конфигурационную линейную программу для , без ограничений целочисленности.
        • 4. Вычислите решение x для , с допуском h =1. В результате получается дробная упаковка контейнеров с контейнеры. Время выполнения .
      • 3-б. Округляем x до интегрального решения для . Добавить максимум бункеры для дробной части. Общее количество бункеров .
    • 2-б. Упакуйте вещи в использование не более k ячеек; получить упаковку . Количество бункеров .
  • 1-б. Сложите элементы меньше g, чтобы получить решение задачи . Количество бункеров: .

В общем, количество бункеров указано в и время выполнения находится в . Выбрав мы получаем .

Алгоритм 2

[ редактировать ]

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

  • 1-а. Позволять быть экземпляром, созданным из удалив все элементы размером меньше g .
  • 2. Пока делать:
    • 2-а. Выполните альтернативную геометрическую группировку с параметром k . Позволять будет результирующим экземпляром, и пусть быть оставшимся экземпляром. У нас есть .
      • 3-а. Постройте конфигурационную линейную программу для , без ограничений целочисленности.
        • 4. Вычислите решение x для , с допуском h =1. В результате получается дробная упаковка контейнеров с контейнеры. Время выполнения .
      • 3-б. Округляем x до интегрального решения для . Не добавляйте интервалы для дробной части. Вместо этого просто извлеките упакованные предметы из .
    • 2-б. Упакуйте вещи в максимум в контейнеры.
  • 2. Один раз , жадно упакуйте оставшиеся предметы максимум в контейнеры.
    • На каждой итерации цикла на шаге 2 дробная часть x имеет не более m ( K ) шаблонов, поэтому . FOPT уменьшается в k раз на каждой итерации, поэтому количество итераций не превышает .
    • Таким образом, общее количество бункеров, используемых для является: .
  • 1-б. Сложите элементы меньше g, чтобы получить решение задачи . Количество бункеров: .

Время выполнения находится в .

Теперь, если мы выберем k =2 и g =1/FOPT(I), мы получим:

,

и следовательно:

,

поэтому общее количество ячеек находится в . Время выполнения .

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

Алгоритм 3

[ редактировать ]

Третий алгоритм полезен, когда количество размеров m невелико (см. также упаковку контейнеров с высокой кратностью ).

  • 1-а. Набор . Позволять быть экземпляром, созданным из удалив все элементы размером меньше g .
  • Если затем:
    • 3-а. Постройте конфигурационную линейную программу для , без ограничений целочисленности.
      • 4. Вычислите решение x для , с допуском h =1. В результате получается дробная упаковка контейнеров с контейнеры. Время выполнения .
    • 3-б. Округляем x до интегрального решения для . Не добавляйте интервалы для дробной части. Вместо этого просто извлеките упакованные предметы из .
  • Запустите шаг 2 алгоритма 2 на оставшихся частях.
  • 1-б. Сложите элементы меньше g, чтобы получить решение задачи . Количество бункеров: .

Он использует максимум bins, а время выполнения находится в .

Улучшения

[ редактировать ]

Позднее методы КК были усовершенствованы, чтобы обеспечить еще лучшее приближение.

Ротвосс [ 4 ] использует ту же схему, что и алгоритм 2, но с другой процедурой округления на этапе 2. Он ввел этап «склеивания», на котором мелкие элементы склеиваются вместе, чтобы получить один более крупный элемент. С помощью этой склейки можно увеличить размер самого маленького предмета примерно до . Когда все размеры не менее , мы можем заменить в гарантии Алгоритма 2 и получим:

,

что дает контейнеры.

Хоберг и Ротвосс [ 5 ] используйте аналогичную схему, при которой предметы сначала упаковываются в «контейнеры», а затем контейнеры упаковываются в контейнеры. Их алгоритм требует максимум контейнеры.

  1. ^ Кармаркар, Нарендра; Карп, Ричард М. (ноябрь 1982 г.). «Эффективная аппроксимационная схема одномерной задачи упаковки контейнеров» . 23-й ежегодный симпозиум по основам информатики (SFCS 1982) : 312–320. дои : 10.1109/SFCS.1982.61 . S2CID   18583908 .
  2. ^ Перейти обратно: а б Фернандес де ла Вега, В.; Люкер, Г.С. (1981). «Упаковку контейнеров можно решить за 1 + ε за линейное время». Комбинаторика . 1 (4): 349–355. дои : 10.1007/BF02579456 . ISSN   1439-6912 . S2CID   10519631 .
  3. ^ Клэр Матье. «Алгоритмы аппроксимации. Часть I, неделя 3: упаковка контейнеров» . Курсера .
  4. ^ Перейти обратно: а б Ротвосс, Т. (1 октября 2013 г.). «Аппроксимация упаковки ячеек в ячейки O(log OPT · Log Log OPT)» . 54-й ежегодный симпозиум IEEE по основам информатики , 2013 г. стр. 20–29. arXiv : 1301.4010 . дои : 10.1109/FOCS.2013.11 . ISBN  978-0-7695-5135-7 . S2CID   15905063 .
  5. ^ Хоберг, Ребекка; Ротвосс, Томас (01 января 2017 г.), «Логарифмический аддитивный разрыв целостности для упаковки контейнеров», Труды ежегодного симпозиума ACM-SIAM 2017 г. по дискретным алгоритмам , Труды Общества промышленной и прикладной математики, стр. 2616–2625, arXiv : 1503.08796 , doi : 10.1137/1.9781611974782.172 , ISBN  978-1-61197-478-2 , S2CID   1647463
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 66b63f55e44eb15232a48f0e12e7fcce__1704505980
URL1:https://arc.ask3.ru/arc/aa/66/ce/66b63f55e44eb15232a48f0e12e7fcce.html
Заголовок, (Title) документа по адресу, URL1:
Karmarkar–Karp bin packing algorithms - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)