PHP Hesapla Dengeli Diziler

1 Cevap php

Tamam, ben ile gelebilir onun en iyi başlık bu etkili olup olmadığından emin değilim ama.

Temelde burada senaryodur.

Ben 11 kategori var. Her kategoride, ben ürün yok, ama bir kategori 1 öğe olabilir, 1 20 olabilir.

Şimdi ben 5 yığınlarının veya sütunlara 11 kategorileri ayırmak istiyorum.

Ben eşit miktarda veya öğelerin hemen hemen eşit miktarda içeren ve hiçbir kategoride ürün bir yığın taşabilir yığınlarının her istiyorum.

Yani şu bilgiler veriliyor:

Category | Items
-------------------------
Cat 1 | 10 
Cat 2 | 3 
Cat 3 | 7 
Cat 4 | 11 
Cat 5 | 5 
Cat 6 | 13
Cat 7 | 19 
Cat 8 | 5  
Cat 9 | 3 
Cat 10 | 9 
Cat 10 | 15

Total = 100 Items

Yani ben öğeleri yığınlarının arasında eşit olarak yaymak istiyorum.

Böylece yığının başına 20 öğe olmalı eşit olduğu 5 yığınları vardır. Ama bir sorun var, 1 yığından ürün taşma olamaz. Peki nasıl ben böyle bir şey çıktı veri hesaplayabilirsiniz:

Stack 1|Stack 2|Stack 3|Stack 4|Stack 5
-------|-------|-------|-------|-------
Cat 10 |Cat 1  |Cat 11 |Cat 6  |Cat 7
Cat 4  |Cat 3  |Cat 8  |Cat 9  |
       |Cat 2  |       |Cat 5  |

20      20      20      21      19

Öğeleri yığınlarının arasında en eşit yayılır müddetçe yığını olduğu ne kategori farketmez.

Çözüm çok CPU ağır ise, hala post it yüzden alışkanlık çok sık hesaplamak gerekir gibi Şimdi bu yığın hesaplamanın sonuçları önbelleğe olacak.

Teşekkürler :)

1 Cevap

This is a knapsack problem. http://en.wikipedia.org/wiki/Knapsack%5Fproblem There are many resources is you google knapsack problem

Bir basit yolu, tüm olası kombinasyonları çalışmaktır. Size hesaplamak her kombinasyon da Standart sapmayı hesaplamak olacaktır. En iyi uyan kombinasyonunu kaydetmek için standart sapma kullanın.