SORU
22 ŞUBAT 2011, Salı


Parabolik sırt çantası

Ben derim ki bir parabol verir. Şimdi ben de aynı genişlikte (çizim becerileri şaşırtıcı Evet benim!) tüm bu sopalarla bir grup var. Nasıl parabol mümkün olduğunca kullandığı alanı en aza indirmek, ben içinde bu çubuklar yığını olabilir miyim? Bu Knapsack problems, kategorisi altında düşüyor inanıyorum ama bu Wikipedia sayfası bana gerçek dünya bir çözüm getirmek görünmüyor. Bu NP-Zor bir sorundur?

Dikey alanda. alan miktarını en aza indirmek için çalışıyoruz, bu sorun (örn: İntegral) tüketilen

enter image description here

CEVAP
22 Mart 2011, Salı


Yukarı JavaScript çözümü processing.js ve HTML5 tuval kullanarak pişirdim.

Bu proje eğer kendi çözümünüzü oluşturmak istiyorsanız iyi bir başlangıç noktası olmalıdır. İki algoritmaları eklendi. Rastgele listesi değişikliğinin en büyük, en küçük ve başka bir giriş blok sıralar. Her madde daha sonra kovanın altından başlayarak (küçük kova) yerleştirilmiş ve sığdırmak için yeterli alana kadar hareketli olmaya çalıştı.

Giriş Türüne göre sıralama algoritması O iyi sonuçlar(n^2) verebilir. Burada sıralanmış bir örnek çıktı.

Sorted insertion

İşte sipariş algoritması Ekle.

function solve(buckets, input) {
  var buckets_length = buckets.length,
      results = [];

  for (var b = 0; b < buckets_length; b  ) {
    results[b] = [];
  }

  input.sort(function(a, b) {return b - a});

  input.forEach(function(blockSize) {
    var b = buckets_length - 1;
    while (b > 0) {
      if (blockSize <= buckets[b]) {
        results[b].push(blockSize);
        buckets[b] -= blockSize;
        break;
      }
      b--;
    }
  });

  return results;
}

Github proje - https://github.com/gradbot/Parabolic-Knapsack

Şube ve diğer algoritmaları eklemek için çekinmeyin bu yüzden ortak bir repo. Muhtemelen ilginç bir problem olarak daha ileride ekleyeceğim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • Bokeh

    Bokeh

    9 HAZİRAN 2014
  • WePlayWeWatch

    WePlayWeWatc

    3 Temmuz 2013

İLGİLİ SORU / CEVAPLAR