Guten Abend phpler
Folgendes Problem: Ich habe eine Tabelle mit dynamischer Größe, deren Felder mit bestimmten Werten gefüllt werden können. Die selben Werte können mehrfach auftreten, vergleichbar mit dem Urnenmodell mit Zurücklegen. Nun geht es darum, einen Algorithmus zu finden, der mir alle Möglichkeiten ausgibt. Ungefähr so:
[1|0|0] [2|0|0] [3|0|0] [1|0|0] [1|1|0]
[0|0|0] [0|0|0] [0|0|0] [0|0|0] [0|0|0]
[0|0|0] [0|0|0] [0|0|0] [0|0|0] [0|0|0]
..... (6561 Möglichkeiten)
[3|3|3] [3|3|3] [3|3|3] [3|3|3]
[3|3|3] [3|3|3] [3|3|3] [3|3|3]
[3|3|0] [3|3|1] [3|3|2] [3|3|3]
Das ganze Programm wird später warscheinlich in C/C++ umgesetzt um performanter zu sein und auf mehreren Rechnern (Kein richtiges Cluster) laufen. (Momentan in PHP, weil ich darin schneller entwickeln kann.) Deßhalb ist es wichtig, dass ich dem Algorithmus sagen kann, ab welchem Zustand er anfangen soll die folgenden Möglichkeiten zu berechnen.
Im Endeffekt soll das ganze bei einer größeren Tabelle mit mehr Möglichkeiten geschehen, die ingesamt 78 886 090 522 101 180 541 172 856 528 278 622 967 320 643 510 902 300 477 027 893 066 406 250 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 Möglichkeiten erzeugt.
Meine bisherige Überlegung ist, als Basis von allem die Felder von oben links nach unten recht durchzugehen:
Und genau jetzt fängt es an, dass mein Kopf abraucht... :/ Innerhalb des ganzen müssen alle Möglichkeiten abgedeckt werden, die ein Feld annehmen kann:
Damit werden aber halt nicht mal ansatzweise alle Möglichkeiten abgedeckt. Kann mir jemand damit helfen, egal ob ein Link zu einem ähnlichen Problem oder ein Stichwort, nachdem ich suchen kann?
Dankeschön
Gruß Rod
Folgendes Problem: Ich habe eine Tabelle mit dynamischer Größe, deren Felder mit bestimmten Werten gefüllt werden können. Die selben Werte können mehrfach auftreten, vergleichbar mit dem Urnenmodell mit Zurücklegen. Nun geht es darum, einen Algorithmus zu finden, der mir alle Möglichkeiten ausgibt. Ungefähr so:
[1|0|0] [2|0|0] [3|0|0] [1|0|0] [1|1|0]
[0|0|0] [0|0|0] [0|0|0] [0|0|0] [0|0|0]
[0|0|0] [0|0|0] [0|0|0] [0|0|0] [0|0|0]
..... (6561 Möglichkeiten)
[3|3|3] [3|3|3] [3|3|3] [3|3|3]
[3|3|3] [3|3|3] [3|3|3] [3|3|3]
[3|3|0] [3|3|1] [3|3|2] [3|3|3]
Das ganze Programm wird später warscheinlich in C/C++ umgesetzt um performanter zu sein und auf mehreren Rechnern (Kein richtiges Cluster) laufen. (Momentan in PHP, weil ich darin schneller entwickeln kann.) Deßhalb ist es wichtig, dass ich dem Algorithmus sagen kann, ab welchem Zustand er anfangen soll die folgenden Möglichkeiten zu berechnen.
Im Endeffekt soll das ganze bei einer größeren Tabelle mit mehr Möglichkeiten geschehen, die ingesamt 78 886 090 522 101 180 541 172 856 528 278 622 967 320 643 510 902 300 477 027 893 066 406 250 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 Möglichkeiten erzeugt.
Meine bisherige Überlegung ist, als Basis von allem die Felder von oben links nach unten recht durchzugehen:
PHP-Code:
for($w = 0; $w <= $width; $w++) {
for($h = 0; $h <= $height; $h++) {
}
}
PHP-Code:
$width = 3;
$height = 3;
$modes = array(0, 1, 2, 3);
$modeAmmount = count($modes);
$table = array();
for($w = 0; $w <= $width; $w++) {
for($h = 0; $h <= $height; $h++) {
for($m = 0; $m < $modeAmmount; $m++) {
}
}
}
Dankeschön
Gruß Rod
Kommentar