Проблема полягає в наступному:
У нас є двовимірний масив / сітка чисел, кожне з яких представляє певну "вигоду" або "прибуток". У нас також є два фіксованих цілих числа і h (для "ширини" і "висоти") і фіксованого цілого числа n .
Тепер ми хочемо накласти на сітку прямокутників розмірами w × h , щоб загальна сума значень комірок у цих прямокутниках була максимальною.
Наступний малюнок - приклад двовимірної сітки з накладеними на ній двома такими прямокутниками (малюнок не демонструє оптимального рішення, лише один можливий наклад, де і )
Прямокутники не можуть перетинатися (інакше нам просто потрібно знайти оптимальне положення для одного прямокутника, а потім поставити всі прямокутники в це положення.)
У наведеному вище прикладі загальна сума значень у клітинках складе
Чи схоже це на будь-яку відому проблему комбінаторної оптимізації? так що я можу почати читати щось і спробувати знайти шляхи вирішення.
Ще кілька відомостей для зацікавлених:
Поки єдині ідеї, які у мене були, це або жадібний алгоритм (який би знайшов найкраще місце для першого прямокутника, потім знаходив локоніон, що не перекривається для другого прямокутника тощо), або деякі метагевристичні, такі як генетичні алгоритми.
Насправді я хочу вирішити цю проблему за допомогою сітки, яка містить близько мільйона комірок і десятки тисяч (а то й сотень тисяч) прямокутників, хоча вирішувати її не потрібно за короткий час (тобто це було б прийнятно для алгоритм займає години чи навіть дні.) Я не сподіваюся на точне рішення, але хочу отримати таке, яке є максимально гарним, враховуючи ці обмеження.
Ура!