Задача о погрузке судна (задача о ранце) |
||
Пусть имеется судно грузоподьемностью х, требуется перевезти n-типов предметов, si-стоимость i-го типа,oi-вес i-го предмета. Нужно набрать предметов на максимальную стоимость и удовлетворить условие грузоподъемности. Zi=число предметов i-го типа. Тогда Si=1nzi*oi<=x; Ln(z1,...zn)=Si vi*zi цена груза суммарный вес груза zi>=0,целочисленное Если откинуть условие целочисленности, то задача решается просто Пусть max(vi/oi)=vk/ok тогда max Ln=x*vk/ok Можно показать, что округление решения для задачи с непрерывным изменением переменных до ближайшего целого может дать неоптимальное решение. Пусть имеется 3 типа предметов: o1=49,o2=50,o3=51, v1=20,v2=75,v3=100. Пусть x=100 (грузоподъемность). Тогда max vi/oi=100/51=1.96 Нужно взять один предмет 3-го типа и один 1-го типа. Общая стоимость-120, вес-100. Но оптимальным решением является два предмета 2-го типа, так как общий вес будет 100,а стоимость- 150. |
||