Это вариация проблемы максимального соответствия в двудольном графе .
Например, у вас есть 20 растений и 5 групп. Затем первый набор узлов будет состоять из 20 растений, а другой - из 5 корзин, но каждая корзина будет представлена 4 раза (всего 20 узлов).
Теперь вам просто нужно сопоставить 20 растений с 20 узлами корзины, что и является проблемой выше.
Если n
не делится на m
, вы можете добавить несколько запасных узлов busket. Например, если n = 23
и m = 5
, вы можете повторить каждую корзину 5 раз. Когда будет найдено идеальное совпадение, у busket-set будут еще два (5*5 - 23
) свободных узла.
Чтобы требование «почти равных» работало лучше (когда нет идеального соответствия), вместо этого вы можете сделать график взвешенным. То есть greenPlantsBasket # 1 стоит 1, greenPlantsBasket # 2 стоит 2, greenPlantsBasket # 3 стоит 4 и т. Д.
Википедия предоставляет алгоритмы для всех разновидностей проблемы максимального соответствия, а также есть библиотеки реализации.