Я хочу упаковать набор прямоугольников (пример):
Чтобы общая высота была как можно ниже с ограничением, в котором прямоугольники должны быть в том же столбце, в котором они были запущены.. Прямоугольники разрешены для "перемещения" друг к другу, чтобы достичь конечное состояние, если они не пересекаются в конце.
Наш текущий алгоритм состоит в том, чтобы обрабатывать прямоугольники от наибольшей высоты до наименьшей высоты и помещать их в самое низкое положение y, которое доступно. Существует ли более оптимальный алгоритм?
EDIT: Мне не обязательно нужно оптимальное решение, интересен любой алгоритм, который генерирует лучшее решение, чем текущее. Кроме того, количество прямоугольников составляет около 50.