Hallo,
ich hoffe ich bin hier im richtigen Forum, ansonsten bitte verschieben
Also mein Problem sieht formal so aus:
Ich möchte n verschieden große Werte in m haufen gruppieren wobei die differenz des größten und des kleinsten Haufens (also die Summe der beinhalteten Zahlen) möglichst klein ist.
Dazu such ich einen Algorithmus
Konkret: Ich habe mehrere Kategorie-Boxen die verschieden hoch sind, weil sie verschieden viele Einträge haben. Die möchte ich in möglichst gleich ausgefüllte Spalten gruppieren. Das kann man sich hier ansehen:
http://www.2xgames.to
Natürlich muss man dann zu jedem "Haufen" noch dne Header und den Footer der Box hinzuaddieren aber das sollte kein problem sein
Ich brauche keine perfekte lösung, mir reicht schon ein Näherungsalgorithmus.
Ich habe das schon so probiert dass ich die total Summe nehme, durch die Spalten teile und eine Spalte solange auffülle bis der Wert erreicht ist wobei ich bei der letzten hinzugefügten Kategorie immer mit der nächst kleineren/größeren tausche bis der werte möglichst nah erreicht ist und dann zur nächsten kategorie gehe und so, aber das hat dann irgendwie nicht so schön funktioniert.
Das ganze wird natürlich nur berechnet wenn sich etwas ändert (ein paarmal am Tag) und dann in einem Cache-File gespeichert.
SQL-Query / Array Orgien sind also kein Problem.
Die Kategorien sind in der Datenbank und in einer seperaten Tabelle die eingräge mit KateogrieID abgespeichert. Es ist also kein Proble mit einem Join die Kategorien mit zugehöriger Zahl auszulesen (wobei man hier dann noch 1 oder 2 für den boxen header/footer addiert).
Ich habe Google und Wikipedia durchforstet und finde dazu das "Partition Problem" und das "3 Partition Problem" allerdings kein "n-Partition Problem".
Irgendeine Lösung, zumindest näherungsweise, muss es da ja geben, da ja etliche Seiten das Problem haben müssen!
Wäre echt toll wenn mir da jemand helfen kann!
Grüße,
Joe