Вариация задачи о рюкзаке

249
10 мая 2017, 07:13

Здравствуйте!

Пытаюсь решить одну задачу на уже в который день, но никак не получается. Просмотрел все похожие темы тут, но ничего из них, на мой взгляд, не применило к текущей задаче.

На входе два массива объектов:

  1. Массив складов (S) Склад имеет следующие характеристики -вместимость (просто целое число) -тип хранимого товара (строка или набор строк - т.к. один склад может хранить несколько типов товаров)

  2. Массив товаров (T) Товар имеет следующие характеристики -объем, занимаемый на складе (целое число) -тип товара (строка, товар имеет только один тип)

Как оптимально распределить имеющийся набор товаров по имеющемуся набору складов??? Задача напоминает задачу из семейства о рюкзаке (в данном случае склад) и предметах (в данном случае товары), которые нужно разместить в нем. Если я не ошибаюсь, то это "мультипликативный рюкзак" (или его комбинация с задачей о назначении). Т.е. когда есть несколько рюкзаков различной вместимости.

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

Вычитал, что решать с помощью ДП задачи типа мультипликативный рюкзак нецелесообразно, лучше с помощью метода вариации ветвей и границ. Адекватных и понятных примеров кода не нашел, также как и не нашел доступного и понятного описания метода ветвей и границ (только жутко академичные описания с огромным количеством непонятных формул или же совсем общие и без примеров).

Может у кого есть какие идеи, ссылки, наработки? Буду рад любой помощи, поскольку в уже ступоре от этой, вобщем-то несложной, задачи.

READ ALSO
JNI - Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

JNI - Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

Пишу приложение на Java, использующее dll-библиотеку методов, реализованных на С++ (технология JNI)Оказалось, что для разной разрядности установленной...

268
Где писать проверку в паттерне PageObject?

Где писать проверку в паттерне PageObject?

Доброго времени сутокВопрос первый: Подскажите пожалуйста где правильно писать проверку на нахождение на нужной странице и нужно ли вообще...

163
Не работает removeView на android

Не работает removeView на android

При вызове removeViev() окно не закрывается на android 50 (возможно на других версиях тоже, не проверял)

303
Border у пустого span

Border у пустого span

Всем привет, подскажите пожалуйста нужно сделать вертикальный разделитель пунктирный без изображений с помощью border-left css, если есть содержимое...

202