Bin mir nicht sicher, ob ich es ganz richtig verstanden habe, aber ich versuche es mal in eigenen Worten wiederzugeben:
Code:
FilterA
| - 0004 = FilterC
| | - 5 = FilterD
| | - 4 = OBJ1
| - 054 = FilterB
| | - 1 = FilterC
| | | - 1 = OBJ3
| | - 2 = FilterC
| | | - 3 = OBJ2
Das Problem bei der gezeigten Anordnung ist, dass da einmal FilterC direkt unter /FilterA auftaucht und einmal unter /FilterA/FilterB, was unnötig kompliziert ist, weil man es auch so gliedern könnte:
Code:
FilterA
| - 0004- FilterC
| | - 1 = FilterB
| | - 1 = OBJ 3
| | - 2 = OBJ 2
| | - 5 = FilterD
| | - 4 = OBJ1
Verstehe ich das richtig?
Also um noch mal zum ersten Baum zurückzukommen, eigentlich steht da ja implizit:
Code:
FilterA
| - nicht Filter B
| | - 0004 = FilterC
| | | - 5 = FilterD
| | | - 4 = OBJ1
| - 054 = FilterB
| | - 1 = FilterC
| | | - 1 = OBJ3
| | - 2 = FilterC
| | | - 3 = OBJ2
Du hast bloß das "nicht Filter B" gleich weggelassen. Aber wenn ich mir das so hingeschrieben mal ansehe und die Kapazitäten mal ignoriere, dann erinnert mich das stark an das
Problem der Minimierung von Schaltungen. Dieses "(Filter B) oder (nicht Filter B)" wäre genau so ein Block, denn man z.B. im
KV-Diagramm finden und wegoptimieren würde. Für die algorithmische Umsetzung eignen sich natürlich andere Verfahren wie
Quine-McCluskey besser. Dein Problem ist leider wohl NP-vollständig.