Мы должны создать алгоритм, чтобы полностью заполнить заданное пространство HxW. У нас есть 125 тестовых конфигураций с заданным набором плиток, который может заполнить поле. Код для набора плиток и поля указан, и нам нужно написать код, который может поместить плитки и заполнить поле (вы можете поменять их, если необходимо). У кого-то есть предложения о том, как создать такой алгоритм, потому что мы застряли и у вас нет вдохновения.Создание алгоритма черепицы для заданного пространства
Мы создали жадный алгоритм, который сначала заполняет самые большие плитки, а затем пытается вписаться в маленькие, но это только разрешило 1 набор плиток и застряло с большими наборами плиток.
Под 2 Данные конфигурации:
ширина: 12 высота: 17 шкала: 20 2 раза 5x5 1 раз 7x3 3 раза 5x4 1 раз 5x3 1 раз 6x2 1 раз 3x3 2 раза 4x2 1 раз 6x1 1 раз 3x2 1 раз 2х2 1 раз 3x1 1 раз 2x1
ширина: 42 высота: 39 шкала: 10 1 раз 15x14 1 раз 14x14 1 раз 14x8 1 раз 11x9 1 раз 12x6 1 раз 14x5 1 раз 11x6 1 раз 16x4 1 раз 12x5 1 раз 10х5 2 раза 8х6 2 раза 8x5 1 раз 9x4 1 раз 6x6 1 раз 7x5 2 раза 6x5 1 раз 7x4 1 раз 6х4 1 раз 10x2 1 раз 5x4 3 раза 6x3 2 раза 7x2 1 раз 12x1 2 раза 6x2 1 раз 11x1 1 раз 10x1 1 раз 5x2 1 раз 8x1 1 раз 6x1 2 раза 3x2 1 раз 5x1 2 раза 2х2 3 раза 3x1 3 раза 2x1 1 раз 1x1
Эта проблема NP-Complete. Даже в 1D (плата 1Xm) это эквивалентно задаче суммирования сумм. – amit
Можете ли вы объяснить это немного больше? – Jeba
Существует известная проблема, называемая проблемой подмножества сумм. Проблема заключается в следующем: учитывая набор чисел, существует ли их подмножество, которое суммируется с некоторой целевой суммой. Если у вас есть доска 1xM и некоторые плитки, если у вас был алгоритм полиномиального времени для решения вашей проблемы, вы также могли бы решить сумму подмножества полиномиально, но нет известного алгоритма (и большинство считают, что такого не существует). Существует алгоритм * псевдополином * времени для подмножества sum, но я не знаком, если он имеет модификацию, которая работает для 2D, и я подозреваю, что 2D сильно NP Hard. – amit