Список задач о рюкзаке
Задача о рюкзаке (или ранце) — это одна из задач комбинаторной оптимизации. Название это получила от максимизационной задачи укладки как можно большего числа нужных вещей в рюкзак при условии, что общий объём (или вес) всех предметов, способных поместиться в рюкзак, ограничен. Поэтому у задачи существует несколько разновидностей.
Общим для всех видов является наличие набора из предметов, с двумя параметрами — вес и ценность .Есть рюкзак, определенной вместимости . Задача — собрать рюкзак с максимальной ценностью предметов внутри, соблюдая при этом весовое ограничение рюкзака. Обычно все параметры — целые, не отрицательные числа.
Это самая распространенная разновидность рюкзака. Пусть принимает два значения: , если груз упакован, и в противном случае, где . Задача:
максимизировать
при наличии ограничения на вместимость рюкзакаШаблон:SfnШаблон:Sfn.
Ограниченный рюкзак (Шаблон:Lang-en)
Каждый предмет может быть выбран ограниченное число раз. Задача:
максимизировать
так, чтобы выполнялось условие на вместимость
и для всех Шаблон:Sfn.
Число называют границейШаблон:Sfn.
Неограниченный рюкзак (целочисленный рюкзак) (Шаблон:Lang-en)
Каждый предмет может быть выбран неограниченное число раз. Задача:
максимизировать
так, чтобы выполнялось условие на вместимость
и целое для всех Шаблон:Sfn.
Рюкзак с мультивыбором (Шаблон:Lang-en)
Все предметы разделяют на классов . Обязательным является условие выбора только одного предмета из каждого класса. принимает значение только 0 и 1. Задача:
максимизировать
так, чтобы выполнялось условие на вместимость,
для всех
Мультипликативный рюкзак (Шаблон:Lang-en)
Пусть у нас есть предметов и рюкзаков (). У каждого предмета, как и раньше, есть вес и ценность , у каждого рюкзака соответственно своя вместимость при . . Задача:
максимизировать
так, чтобы выполнялось условие для всех ,
для всех Шаблон:Sfn.
Многомерный рюкзак (Шаблон:Lang-en)
Если есть более одного ограничения на рюкзак, например объем и вес, задачу называют m-мерной задачей о ранце. Например, для не ограниченного варианта:
максимизировать
так, чтобы ,
и для всех Шаблон:Sfn.
Квадратичная задача о рюкзаке (Шаблон:Lang-en)
Квадратичная задача о ранце представляет собой модификацию классических задач о ранце с ценностью, являющейся квадратичной формой. Пусть - вектор, задающий, сколько экземпляров каждого предмета окажется в рюкзаке. Задача:
максимизировать
при условиях , , или
минимизировать
при условиях , .
При этом — неотрицательно определенная матрица размера , задаёт ограничения на количество предметов[1].
Примечания
Литература
- на русском языке
- на английском языке