Sorun şu şekildedir:
Her biri bir miktar "fayda" veya "kâr" temsil eden iki boyutlu bir dizi / sayı ızgaramız var. Ayrıca ve h olmak üzere iki sabit tamsayı var ("genişlik" ve "yükseklik" için) Ve sabit bir tamsayı n .
Şimdi ızgarada w × h boyutlarındaki dikdörtgenleri, bu dikdörtgenlerdeki hücrelerin toplam değerlerinin toplamı maksimuma çıkarılacak şekilde üst üste koymak istiyoruz .
Aşağıdaki resim, üzerine iki tane dikdörtgen yerleştirilmiş iki boyutlu bir ızgara örneğidir (resim en uygun çözümü göstermez, sadece bir = = ve n = 2 olduğunda bir olası kaplama )
Dikdörtgenler kesişemez (aksi takdirde sadece bir dikdörtgen için en uygun konumu bulmamız ve ardından tüm dikdörtgenleri bu konuma koymamız gerekir.)
Yukarıdaki örnekte, hücrelerdeki toplam değerlerin toplamı
Bu, kombinatoryal optimizasyonda bilinen herhangi bir soruna benzer mi? böylece biraz okuma yapmaya başlayabilir ve onu çözmenin yollarını bulmaya çalışabilirim.
İlgilenenler için biraz daha arka plan:
Şimdiye kadar sahip olduğum tek fikir ya açgözlü bir algoritma (ilk dikdörtgenin en iyi yerini bulabilir, daha sonra ikinci dikdörtgenin çakışmayan yerini bulur) ya da genetik algoritmalar gibi bazı meta-sezgiseldir.
Gerçekte, bu sorunu yaklaşık bir milyon hücre ve on bin (hatta yüz binlerce) dikdörtgen içeren bir ızgara ile çözmek istiyorum, ancak kısa sürede çözülmesi gerekmiyor (yani, algoritma saatler hatta günler sürüyor.) Kesin bir çözüm beklemiyorum ama bu kısıtlamalar göz önüne alındığında mümkün olduğunca iyi bir çözüm elde etmek istiyorum.
Şerefe!