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

Перейти к навигации Перейти к поиску
м
Строка 21: Строка 21:
== Основные результаты ==
== Основные результаты ==


В шестидесятых и семидесятых годах было разработано несколько алгоритмов с асимптотическими и абсолютными гарантиями аппроксимации, с постоянным коэффициентом и очень эффективным временем работы (см. обзор в [1]). Прорыв был достигнут в 1981 году де ла Вегой и Люкером [ ], которые предложили первую полиномиальную по времени асимптотическую аппроксимационную схему.
В шестидесятых и семидесятых годах было разработано несколько алгоритмов с асимптотическими и абсолютными гарантиями аппроксимации, с постоянным коэффициентом и очень эффективным временем работы (см. обзор в [1]). Прорыв был достигнут в 1981 году де ла Вегой и Люкером [3], которые предложили первую полиномиальную по времени асимптотическую аппроксимационную схему.




Строка 27: Строка 27:




Подход де ла Веги и Люкера [3] заключался в том, чтобы предложить технику аппроксимации исходного экземпляра более простым экземпляром, в котором крупные предметы могут иметь только O(1) различных размеров. Их идея была проста. Во-первых, достаточно ограничить внимание крупными предметами, скажем, размером больше <math>\varepsilon</math>. Обозначим эту новую задачу <math>I_b</math>. Пусть имеется (почти) оптимальная упаковка для <math>I_b</math>; рассмотрим решение, полученное путем жадного заполнения контейнеров оставшимися мелкими предметами, открывая новые контейнеры только в случае необходимости. Действительно, если новые контейнеры не потребуются, то решение по-прежнему остается почти оптимальным, поскольку упаковка для <math>I_b</math> была почти оптимальной. Если же дополнительные контейнеры необходимы, то каждый контейнер (возможно, за исключением одного) должен быть заполнен до объема <math>(1 - \epsilon)</math>, что дает упаковку с использованием <math>Size(I)/(1 - \epsilon) + 1 \le OPT(I)/(1 - \epsilon) + 1</math> контейнеров. таким образом, достаточно сосредоточиться на решении задачи <math>I_b</math> почти оптимальным образом. Для этого авторы показывают, как получить другой экземпляр задачи <math>I'</math> со следующими свойствами. Во-первых, в <math>I'</math> имеется только <math>O(1 / \epsilon^2)</math> различных размеров, во-вторых, <math>I_b</math>I0 является приближением <math>I_b</math> в том смысле, что <math>OPT(I_b) \ge OPT(I')</math> – и, более того, любое решение <math>I'</math> подразумевает решение <math>I_b</math> с использованием <math>O(\epsilon \cdot OPT(I))</math> дополнительных контейнеров. Поскольку в задаче <math>I'</math> имеется только <math>1 / \epsilon^2</math> различных размеров элементов, а в любой контейнер можно поместить не более <math>1 / \epsilon</math> таких элементов, существует не более <math>O(1 / \epsilon^2)^{1 / \epsilon}</math> способов упаковки в контейнеры. Таким образом, задача <math>I'</math> может быть решена оптимально путем исчерпывающего перечисления (или еще более эффективно с помощью описанной ниже формулировки целочисленного программирования).
Подход де ла Веги и Люкера [3] заключался в том, чтобы предложить технику аппроксимации исходного экземпляра более простым экземпляром, в котором крупные предметы могут иметь только O(1) различных размеров. Их идея была проста. Во-первых, достаточно ограничить внимание крупными предметами, скажем, размером больше <math>\varepsilon</math>. Обозначим этот набор <math>I_b</math>. Пусть имеется (почти) оптимальная упаковка для <math>I_b</math>; рассмотрим решение, полученное путем жадного заполнения контейнеров оставшимися мелкими предметами, открывая новые контейнеры только в случае необходимости. Действительно, если новые контейнеры не потребуются, то решение по-прежнему остается почти оптимальным, поскольку упаковка для <math>I_b</math> была почти оптимальной. Если же дополнительные контейнеры необходимы, то каждый контейнер (возможно, за исключением одного) должен быть заполнен до объема <math>(1 - \epsilon)</math>, что дает упаковку с использованием <math>Size(I)/(1 - \epsilon) + 1 \le OPT(I)/(1 - \epsilon) + 1</math> контейнеров. Таким образом, достаточно сосредоточиться на решении задачи <math>I_b</math> почти оптимальным способом. Для этого авторы показывают, как получить другой экземпляр задачи <math>I'</math> со следующими свойствами. Во-первых, в <math>I'</math> имеется только <math>O(1 / \epsilon^2)</math> различных размеров, во-вторых, <math>I_b</math>I0 является приближением <math>I_b</math> в том смысле, что <math>OPT(I_b) \ge OPT(I')</math> – и, более того, любое решение <math>I'</math> подразумевает решение <math>I_b</math> с использованием <math>O(\epsilon \cdot OPT(I))</math> дополнительных контейнеров. Поскольку в задаче <math>I'</math> имеется только <math>1 / \epsilon^2</math> различных размеров элементов, а в любой контейнер можно поместить не более <math>1 / \epsilon</math> таких элементов, существует не более <math>O(1 / \epsilon^2)^{1 / \epsilon}</math> способов упаковки в контейнеры. Таким образом, задача <math>I'</math> может быть решена оптимально путем исчерпывающего перечисления (или еще более эффективно с помощью описанной ниже формулировки целочисленного программирования).




4431

правка

Навигация