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

Материал из testwiki
Перейти к навигации Перейти к поиску

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

Общим для всех видов является наличие набора из n предметов, с двумя параметрами — вес pi>0 и ценность ci>0,i=1,2,...,n.Есть рюкзак, определенной вместимости P. Задача — собрать рюкзак с максимальной ценностью предметов внутри, соблюдая при этом весовое ограничение рюкзака. Обычно все параметры — целые, не отрицательные числа.

Это самая распространенная разновидность рюкзака. Пусть xi принимает два значения: xi=1, если груз упакован, и xi=0 в противном случае, где i=1,2,...,n. Задача:

максимизировать i=1ncixi

при наличии ограничения i=1npixiP на вместимость рюкзакаШаблон:SfnШаблон:Sfn.

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

Каждый предмет xi может быть выбран ограниченное число раз. Задача:

максимизировать i=1ncixi

так, чтобы i=1npixiP выполнялось условие на вместимость

и xi(0,1,...,mi) для всех i=1,2,...,nШаблон:Sfn.

Число mi называют границейШаблон:Sfn.

Неограниченный рюкзак (целочисленный рюкзак) (Шаблон:Lang-en)

Каждый предмет xi может быть выбран неограниченное число раз. Задача:

максимизировать i=1ncixi

так, чтобы i=1npixiP выполнялось условие на вместимость

и целое xi0 для всех i=1,2,...,nШаблон:Sfn.

Рюкзак с мультивыбором (Шаблон: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, у каждого рюкзака соответственно своя вместимость Pi при i=1,2,...,m. xi0,1. Задача:

максимизировать i=1mj=1ncjxij

так, чтобы i=1npjxijPi выполнялось условие для всех i=1,2,...,m,

j=1mxij1 для всех i=1,2,...,nШаблон:Sfn.

Многомерный рюкзак (Шаблон:Lang-en)

Если есть более одного ограничения на рюкзак, например объем и вес, задачу называют m-мерной задачей о ранце. Например, для не ограниченного варианта:

максимизировать i=1ncixi

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

и xi0 для всех i=1,2,...,nШаблон:Sfn.

Квадратичная задача о рюкзаке (Шаблон:Lang-en)

Квадратичная задача о ранце представляет собой модификацию классических задач о ранце с ценностью, являющейся квадратичной формой. Пусть x=(x1,..,xn) - вектор, задающий, сколько экземпляров каждого предмета окажется в рюкзаке. Задача:

максимизировать xTQx

при условиях i=1npixiP, xBn, или

минимизировать xTQx

при условиях i=1npixiP, xBn.

При этом Q — неотрицательно определенная матрица размера n×n, Bn задаёт ограничения на количество предметов[1].

Примечания

Шаблон:Примечания

Литература

на русском языке
  1. Шаблон:Книга
на английском языке
  1. Шаблон:Книга
  2. Шаблон:Книга Шаблон:Wayback

Шаблон:^

Ссылки

  1. Алгоритм рюкзака

Шаблон:Knapsack