2015-07-06 2 views
1

Предположим, что у вас есть поверхность прямоугольника и некоторые объекты круглого/прямоугольного (разного размера). Я хочу написать алгоритм, который будет убирать эти объекты на поверхности. Я должен поставить максимум объектов на одну и ту же поверхность. Думаю, мне придется сначала поставить самые маленькие объекты. Знаете ли вы, есть ли определенный алгоритм для оптимизации этого? Это своего рода разрешение tetris, но я могу выбрать порядок частей.Улучшение алгоритма для упорядочивания

Благодаря

+0

Вы также учитывая высоту здесь или только поверхность? – Karthik

+0

Есть ли у вас какие-либо знания о разных размерах/распределении данных объектов? –

+0

Угадайте, что вы не в домашней работе –

ответ

1

Поскольку вы хотите увеличить количество объектов, которые вы собираетесь поставить, жадный алгоритм может хорошо работать в большинстве случаев:

 Sort boxes according to length(ascending order). 
     Start from the smallest box: 
     for every box : 
      try to place it in a already occupied row 
      if not possible place it in a new row. 
      if not possible to place - break; //since anything bigger than would not fit. 

Если вы рассматриваете высоту также, это называется Packing Problem. Вы можете проверить связанные алгоритмы here

-1

Это называется Knapsack problem

EDIT: Это на самом деле подтип задачи о рюкзаке: Bin Packing Problem

+0

Проблема с рюкзаком имеет вес, это не имеет ничего общего с проблемой ранца. – Karthik

+0

Ваш _weight_ также может быть размером – sanderarts

+0

@karthik Вы правы, технически это не проблема с рюкзаком, а подтип его – sanderarts

Смежные вопросы