Хорошо, краткий обзор
Я изучил проблему с рюкзаком
http://en.wikipedia.org/wiki/Knapsack_problem
и я знаю, что это то, что мне нужно для моего проекта, но сложной частью моего проекта было бы то, что мне нужно несколько мешков внутри основного мешка.
Большой рюкзак, в котором хранятся все «сумки», может нести только х количество «сумок» (скажем, 9 для примера). Каждая сумка имеет разные значения;
- Вес
- Стоимость
- размер
- Емкость
и так далее, все эти значения являются целыми числами. Допустим, от 0 до 100.
Внутреннему пакету также будет назначен тип, и во внешнем пакете может быть только один из этого типа, хотя для ввода программы будет задано несколько значений одного типа.
Мне нужно назначить максимальный вес, который может вместить основная сумка, а все остальные свойства более мелких сумок необходимо сгруппировать по взвешенным значениям.
* 1 028 * Пример * +1029 *
Наружная сумка:
- Может вместить 9 меньших сумок
- Вес не более 98 [Дай или возьми 5 с каждой стороны]
- Должен содержать по одному каждому типу. Может содержать только по одному типу за раз.
Внутренние сумки:
- Стоимость, взвешенная на 100%
- Размер, взвешенный на 67%
- Емкость, взвешенная на 44%
Программа будет вводить несколько сумок, а затем должна отработать комбинации меньших сумок, чтобы войти в большую сумку, будет несколько решений в зависимости от ввода, и программа выдаст лучшие решения для меня .
Мне интересно, что вы, ребята, думаете, что лучший способ для меня подойти к этому будет.
Я буду программировать его на Java или C #. Я хотел бы запрограммировать его на PHP, но я боюсь, что алгоритм будет очень неэффективным для веб-серверов.
Спасибо за любую помощь, которую вы можете оказать
-Zack