Ответ 1
Двухслойная упаковка - NP-трудная проблема. Однако существуют алгоритмы аппроксимации.
Посмотрите на этот код (и объяснение). Он содержит несколько алгоритмов и есть GUI:
У меня есть коллекция квадратов и прямоугольников разного размера, которые я хочу объединить, используя PHP в один большой квадрат/прямоугольник. Квадраты обычно представляют собой изображения, которые я хочу сделать для монтажа, но иногда это просто математические объекты.
Существуют ли какие-либо алгоритмы PHP для этого и что называется этим типом?
Обновление: После большего поиска я думаю, что я хочу, чтобы проблема упаковки упаковки была . Тем не менее, я также хотел бы добавить определенную сумму рандомизации для определенных типов проблем упаковки (например, изображений), чтобы обеспечить человеческий интерес.
Двухслойная упаковка - NP-трудная проблема. Однако существуют алгоритмы аппроксимации.
Посмотрите на этот код (и объяснение). Он содержит несколько алгоритмов и есть GUI:
У меня есть 1d алгоритм упаковки бинов в php. Вы хотите искать лучшие, подходящие, и так далее. Но это не для 2-й проблемы, может быть, вы хотите искать проблему с рюкзаком?
Я думаю, вы можете использовать алгоритм с седуемым отжигом. Я использовал его для заполнения прямоугольных газетных страниц прямоугольными рекламными объявлениями. Как вы сказали, вы можете запустить его с помощью рандомизированного решения, а затем вы можете медленно достичь хорошего решения. См. Здесь http://codetuner.blogspot.com/2010/03/simulated-annealing-approach-to.html. Я использовал его для решения проблемы разбивки на страницы. Я думаю, вы тоже можете использовать его для вас.