Для решения следующей задачи мне интересно, существует ли уже известный алгоритм, поскольку я не хочу изобретать велосипед.
В данном случае речь идет о гостиничных номерах, но я думаю, что это не имеет значения:
name | max guests | min guests
1p | 1 | 1
2p | 2 | 2
3p | 3 | 2
4p | 4 | 3
Я пытаюсь распределить определенное количество гостей по доступным комнатам, но распределение должно соответствовать критериям «минимальных гостей». Кроме того, комнаты должны использоваться максимально эффективно.
Давайте возьмем, например, 7 гостей. Я не хотел бы эту комбинацию:
3 x 3p ( 1 x 3 guests, 2 x 2 guests )
.. это будет соответствовать минимальным критериям, но будет неэффективным. Скорее я ищу комбинации, такие как:
1 x 3p and 1 x 4p
3 x 2p and 1 x 1p
etc...
Я бы подумал, что это знакомая проблема. Есть ли какой-нибудь известный алгоритм для решения этой проблемы?
уточнить:
Под эффективным я подразумеваю, чтобы гости распределялись таким образом, чтобы комнаты были заполнены как можно больше (предпочтения гостей здесь имеют второстепенное значение и не важны для алгоритма, который я ищу).
Я делаю хочу все перестановки, которые удовлетворяют этому критерию эффективности. Так что в вышеприведенном примере 7 x 1p
тоже подойдет.
Итак, в итоге:
Существует ли известный алгоритм, который способен максимально эффективно распределять элементы по слотам с емкостью min
и max
, , всегда удовлетворяющими критериям min
и , пытающимся удовлетворить max
критерий как можно больше.