Список задач про наповнення рюкзака

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Шаблон:Об'єднати Задача про наповнення рюкзака — це одна з задач комбінаторної оптимізації. Задача отримала назву від максимізаційної задачі пакування якомога більшої кількості речей в рюкзак при умові, щоб загальний об'єм (чи вага) всіх предметів, здатних поміститись в рюкзак, обмежений. Тому в цієї задачі існує декілька підвидів. Загальним для всіх видів є наявність набору з n предметів, кожен з двома параметрами — вага Pi>0 і ціна Ci>0, i=1,2,...,n.Є рюкзак, визначеної місткості P. Завдання — зібрати рюкзак з максимальною цінністю предметів всередині, зберігаючи при цьому вагове обмеження рюкзака. Зазвичай всі параметри є цілими невід'ємними числами.

Рюкзак 0-1 (Шаблон:Lang-en)

Це найбільш поширений різновид рюкзака. Нехай Xi приймає два значення: Xi=1, якщо вантаж запакований, і Xi=0 в іншому випадку, де i=1,2,...,n. Завдання: Максимізувати i=1ncixi

при наявності обмеження i=1npixiP на місткість рюкзака.

Обмежений рюкзак (Шаблон:Lang-en)

Кожен предмет Xi може бути обраний обмежену кількість раз. Завдання: Максимізувати i=1ncixi

так, щобi=1npixiP виконалась умова на місткість

і xi(0,1,...,mi) для всіх i=1,2,...,n.

Число mi називають границею, межею.

Необмежений рюкзак (цілочисельний рюкзак) (Шаблон:Lang-en)

Кожен предмет xi може бути обраний необмежену кількість раз. Завдання: максимізувати i=1ncixi

так щоб i=1npixiP виконалась умова на місткість

і ціле xi0 для всіх i=1,2,...,n.

Рюкзак з мультивибором (Шаблон:Lang-en)

Всі предмети xi розділяють на s класів Si. Обов'язковою є умова вибору предмета з кожного класу. xi приймає значення тільки 0 і 1. Завдання: максимізувати i=1njSicijxij

так щоб i=1njSipijxijP виконувалась умова на місткість,

jSixij=1 для всіх i=1,2,...,n

Мультиплікативний рюкзак (Шаблон:Lang-en)

Нехай в нас є n предметів та m рюкзаків (mn). У кожного предмета, як і раніше, є вага pj=0 і ціна cj=0j=1,2,...,n, у кожного рюкзака відповідно своя місткість Pii=1,2,...,m.xi0,1 Завдання: максимізувати i=1mj=1ncijxij

так щоб i=1npjxijPi виконувалась умова для всіх i=1,2,...,n,

j=1mxij=1 для всіх i=1,2,...,n.

Багатовимірний рюкзак (Шаблон:Lang-en)

Якщо є більше одного обмеження на рюкзак, наприклад об'єм і вага, задачу називають m-вимірною задачею про рюкзак. Наприклад, для необмеженого варіанта: максимізувати i=1ncixi

так щоб i=1npijxiPj,j=1,2,...,m

и xi0 для всіх i=1,2,...,n.

Література

  1. В. Н. Бурков, И. А. Горгидзе, С. Е. Ловецкий. Прикладные задачи теории графов. — М., 1974. — 232 с. Шаблон:Ref-ru
  2. Silvano Martelo, Paolo Toth Knapsack problems. — Wiley, 1990. — 306 с. Шаблон:Ref-en
  3. David Pisinger Knapsack problems. — 1995. Шаблон:Ref-en