Hallo zusammen,
ich habe eine Menge von Objekten, welche alle die Eigenschaft
A besitzen. Zudem kann jedes Objekt optional noch die Eigenschaften
B,
C,
D und
E definieren. Alle diese Eigenschaften geben den Index in einer dazugehörigen Filter-Tabelle an.
Die Filter-Tabellen haben unterschiedliche Kapazitäten:
Code:
A = 256
B = 3
C = 5
D = 5
E = 4
Aus diesen Filter Tabellen baue ich mir nun einen Baum. Kleines Beispiel:
Code:
OBJ1 = {A = 4, B = /, C = 5, D = 3, E = /}
OBJ2 = {A = 54, B = 2 C = 3, D = /, E = /}
OBJ3 = {A = 54, B = 1, C = 1, D = /, E = /}
FilterA
| - 001
| - 002
| - 003
| - 0004 = FilterC
| | - 1
| | - 2
| | - 3
| | - 4
| | - 5 = FilterD
| | - 1
| | - 2
| | - 4 = OBJ1
| | - 3
| | ...
| - 005
| ...
| - 053
| - 054 = FilterB
| | - 1 = FilterC
| | | - 1 = OBJ3
| | | ...
| | | - 5
| | - 2 = FilterC
| | | - 1
| | | - 2
| | | - 3 = OBJ2
| | | - 4
| | | - 5
| | - 3
| - 055
| ...
Und hier sieht man bereits das Problem. Bisher ist die Reihenfolge der Filter Tabellen statisch von
A nach
E festgelegt. Im Falle von OBJ2 und OBJ3 benötige ich deshalb
1x FilterB (Kapazität 3) und
2x FilterC (Kapazität 5), womit ich auf eine
Gesamtkapazität von 13 komme. Hätte ich die Tabellen aber anders angeordnet; sprich zuerst
C und dann
B, würde ich für diesen Ast
1x FilterC (Kapazität 5) und
2x FilterB (Kapazität 3) benötigen, was eine
Gesamtkapazität von 11 zur Folge hätte.
Wie würdet ihr an dieses Problem rangehen, um für jeden Einzel-Ast (und somit letztlich auch für den kompletten Baum) die jeweils optimale Konfiguration zu ermitteln?
Gibt es eventuell schon effiziente Alogrithmen, die ich für meine Zwecke umbauen könnte (generell wird es wohl auf Bruteforce/Backtracking hinauslaufen, nehme ich an)?
Viele Grüße
Zacherl