Русская Википедия:Список задач о рюкзаке

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

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

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

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

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

максимизировать <math>\sum_{i=1}^n c_ix_i</math>

при наличии ограничения <math>\sum_{i=1}^n p_ix_i \le P</math> на вместимость рюкзакаШаблон:SfnШаблон:Sfn.

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

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

максимизировать <math>\sum_{i=1}^n c_ix_i</math>

так, чтобы <math>\sum_{i=1}^n p_ix_i \le P</math> выполнялось условие на вместимость

и <math> x_i \in (0,1,...,m_i)</math> для всех <math> i= 1,2,...,n</math>Шаблон:Sfn.

Число <math>m_i</math> называют границейШаблон:Sfn.

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

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

максимизировать <math>\sum_{i=1}^n c_ix_i</math>

так, чтобы <math>\sum_{i=1}^n p_ix_i \le P</math> выполнялось условие на вместимость

и целое <math> x_i \ge 0</math> для всех <math> i= 1,2,...,n</math>Шаблон:Sfn.

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

Все предметы <math> x_i </math> разделяют на <math>s</math> классов <math>S_i</math>. Обязательным является условие выбора только одного предмета из каждого класса. <math>x_{i}</math> принимает значение только 0 и 1. Задача:

максимизировать <math>\sum_{i=1}^n \sum_{j\in S_i} c_{ij}x_{ij}</math>

так, чтобы <math>\sum_{i=1}^n \sum_{j\in S_i} p_{ij}x_{ij} \le P</math> выполнялось условие на вместимость,

<math>\sum_{j\in S_i}x_{ij}=1</math> для всех <math> i= 1,2,...,n</math>

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

Пусть у нас есть <math>n</math> предметов и <math>m</math> рюкзаков (<math>m\le n</math>). У каждого предмета, как и раньше, есть вес <math> p_j>0 </math> и ценность <math> c_j>0</math><math> j= 1,2,...,n</math>, у каждого рюкзака соответственно своя вместимость <math>P_i</math> при <math> i= 1,2,...,m</math>. <math>x_i \in {0,1}</math>. Задача:

максимизировать <math>\sum_{i=1}^m \sum_{j=1}^{n} c_{j}x_{ij}</math>

так, чтобы <math>\sum_{i=1}^n p_{j}x_{ij} \le P_i</math> выполнялось условие для всех <math> i= 1,2,...,m</math>,

<math>\sum_{j=1}^{m}x_{ij} \le 1</math> для всех <math> i= 1,2,...,n</math>Шаблон:Sfn.

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

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

максимизировать <math>\sum_{i=1}^n c_ix_i</math>

так, чтобы <math>\sum_{i=1}^n p_{ij}x_i \le P_j</math>, <math> j= 1,2,...,m</math>

и <math> x_i \ge 0</math> для всех <math> i= 1,2,...,n</math>Шаблон:Sfn.

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

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

максимизировать <math>x^TQx</math>

при условиях <math>\sum_{i=1}^n p_ix_i \le P</math>, <math>x \in B^n</math>, или

минимизировать <math>x^TQx</math>

при условиях <math>\sum_{i=1}^n p_ix_i \geq P</math>, <math>x \in B^n</math>.

При этом <math>Q</math> — неотрицательно определенная матрица размера <math>n \times n</math>, <math>B^n</math> задаёт ограничения на количество предметов[1].

Примечания

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

Литература

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

Шаблон:^

Ссылки

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

Шаблон:Knapsack