Я ищу помощь в улучшении алгоритма размещения блоков нечетных форм. Моя проблемная область странная, но лучшая аналогия для моих блоков - это тетрис, за исключением того, что у них может быть более четырех штук. Блоки все еще состоят только из прямых углов, но они могут быть длинными и извилистыми, они могут разветвляться и т.д.
Я пытаюсь организовать несколько больших блоков произвольной формы в минимальном пространстве (я знаю, проблема с упаковкой), но мое текущее решение выглядит уродливым. Я в основном размещаю одно, а затем грубо заставляю остальных, пытаясь разместить их в начале моей сетки, а затем медленно подталкивать их в разные стороны, пока они больше не столкнутся. Это не медленно, но он не делает попыток идеально подогнать фигуры, чтобы они не теряли общего пространства.
Единственное, что я могу придумать, это упорядочить блоки по размеру, поместив сначала самый большой, а затем подстроить наименьшее в конце в любые оставшиеся отверстия. Но есть определенные способы, которые могут иметь неприятные последствия.
Существуют ли какие-либо эвристики или алгоритмы аппроксимации, которые могут мне помочь?
Результаты выглядят примерно так:
Кроме того, возможно, мой Грататар отдает, что это Mega Man, связанный...