Алгоритм определения (x, y) координат для прямоугольников, чтобы площадь окружающего прямоугольника была минимальной? - PullRequest
3 голосов
/ 26 декабря 2010

Надеюсь, мой титул имеет смысл, но вот что я пытаюсь сделать:

У меня есть n прямоугольников, каждый с шириной W n и высотой H n , которые мне нужно расположить на двухмерной (x, y) плоскости прямоугольник, в который они все помещаются, занимает наименьшую площадь. Мне также нужно иметь возможность установить, что (x, y) соответствует какому прямоугольнику.

Я бы предпочел что-то в псевдо-коде, но могу работать со многими языками.

Спасибо за помощь.

Ответы [ 4 ]

2 голосов
/ 26 декабря 2010

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

1 голос
/ 26 декабря 2010

Это вариант упаковки 2D бункера. Тот факт, что ваш контейнер является гибким, позволяет оптимизировать и сделать его более сложным (как в случае с трудностями). Drools Planner (с открытым исходным кодом Java) может справиться с этим. Существует по крайней мере одна реализация (см. Список рассылки пользователя) с Drools Planner (не с открытым исходным кодом). Если вам нужен пример с открытым исходным кодом, вероятно, хороший баланс для облачного баланса в drools-planner-examples.

Обзор алгоритмов, которые вы можете использовать, см. мой ответ на аналогичный вопрос .

1 голос
/ 26 декабря 2010

Звучит NP-полный для меня. Вроде как проблема с рюкзаком. Что означает, что нет реального решения. Только хорошие приближения.

0 голосов
/ 26 декабря 2010

Ваша проблема известна как проблема упаковки 2D. Даже 1D проблема NP-трудна. См. здесь для хорошей статьи о некоторых подходах вместе с примером кода C #.

Также смотрите следующие вопросы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...