Hallo,
Gegeben sind zwei Gruppen von Elementen mit variabler Anzahl von Elementen und ein Operator(O). Das Ergebnis der Rechnung [Element(aus Gruppe 1) Operator Element(aus Gruppe 2)] hat den Wertebereich Null bis Eins.
Gesucht ist das Maximum der Summen aller Berechnungen, wobei jedes Element nur einmal einbezogen werden darf (bei ungleicher Elementanzahl in den Gruppen bleiben also Elemente einer Gruppe im Ergebnis unberücksichtigt).
Beispiel:
Gruppe 1: A, B, C, D
Gruppe 2: X, Y, Z
Im ersten Zwischenschritt würden alle Paarungen durchgegangen:
AOX, AOY, ..., DOZ (aber nicht AOA, AOB, ..., ZOZ)
Code:
$gruppe_1 = array(A, B, C, D);
$gruppe_2 = array(X, Y, Z);
$zw_ergebnis = array();
$count_1 = count($gruppe_1) - 1;
$count_2 = count($gruppe_2) - 1;
for($z1 = $count_1; $z1 >= 0; $z1--) {
for($z2 = $count_2; $z2 >= 0; $z2--) {
$zw_ergebnis[$z1][$z2]) = operator_O($gruppe_1[$z1], $gruppe_2[$z2]);
}
}
Nun das eigentliche Problem:
Wie kann ich alle Summen aller Berechnungen ermitteln, ohne, daß ein Element zwei mal einbezogen wird?
AOX + BOY + COZ
AOX + BOY + DOZ
AOX + BOZ + COY
AOX + BOZ + DOY
BOX + AOY + COZ
...
Ich finde keine beschreibbare Systematik die den unterschiedlichen Elementanzahlen gerecht wird.