Алгоритм случайного и равномерного разбиения сетки с различными размерами - PullRequest
0 голосов
/ 31 октября 2011

Предположим, что сетка N x M.Для этого мне нужно случайным образом выложить плитки размером от 1x1 до IXJ.Ключевая проблема заключается в том, чтобы найти способ использовать каждый разный размер примерно одинаковое количество раз и распределять его случайным образом.

В качестве примера представьте пол размером 10 x 20 квадратных футов. У вас есть стопки плиток 1x1, 1x2 и 2x2, с которыми вы хотите разметить пол, и вы хотите, чтобы дизайн выглядел случайным образом и использовался вокругодинаковое количество каждой плитки.

Вы также можете подумать о проблеме в обратном порядке, разделив пол на куски этих размеров.

Я видел алгоритмы древовидной карты, но они неТ вполне соответствует требованию.Если вы ограничите куски 1 x I, тогда проблема будет одномерной и легкой.Это 2D версия, которая кажется более сложной.Любые идеи или указатели полезны.

Ослабление необходимости быть (1) случайным или (2) похожим облегчает, но оба важны.У меня есть некоторые идеи, как это сделать, но пока что все не так.

1 Ответ

0 голосов
/ 31 октября 2011

Альтернативным решением является случайная сортировка ваших плиток и использование пространственного индекса для заполнения сетки.Идея состоит в том, что пространственный индекс подразделяет сетку на 2 измерения, чтобы вы могли проверить наличие квадратов.В противном случае вы хотите использовать DFS, чтобы найти оптимальное решение.

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