Guter Algorithmus zur erstellung einer "7D" Matrix (beschreiben)
-
Hallo,
wir haben in der Schule die Aufgabe bekommen, innerhalb einer Gruppe im 2. Schulhalbjahr ein Spiel zu programmieren! Wir programmieren unter anderem 4 gewinnt. Wir sprechen hier übrigens von 7x6 Matrixen!
(Übliche 4gewinnt eben) Nun sitze ich dran und hab ein kleines problem! Ich ermittel bei meiner KI 4 Simulationen vorraus. Das heißt ich schreibe in eine Matrix ALLE möglichkeiten, wie der Spieler und der Computer den Stein platzieren können! Nur nebenbei, es sind 2401 Matrixen!
Dies Funktioniert auch alles prima, keine fehler alles genau richtig, nur ein kleines problem --> DIE ZEIT! Ich brauche für die Simulationen eine Zeit von knappen 18-19 sek.!
Habt ihr viell. eine gute Idee um die Matrix einfacher zu beschreiben?! Es ist immerhin ein 7D Array und ich muss immer in die nächste array größe mit einer for schleife gehen! Habe also genug for-schleifen!Wenn jemand einen Tipp hat, bitte posten!
Greez phil29
-
Dein Array ist 2dimensional, 7dimensionale Arrays sehen so aus:
char Array7D[][][][][][][];
Die Dimension einer Matrix ist nichtmal definiert, es gibt höchstens die Zeilen- und die Spaltendimension (= Anzahl der Spalten bzw. Anzahl der Zeilen).
Wir können deinen Code kaum verbessern, wenn wir nicht wissen wie er aussieht ... also entweder Code zeigen oder beschreiben was du machst und wo du denkst wo man was besser machen könnte.
-
Hey du, also du hast es oben eventuell nicht richtig verstanden! Habe es aber auch nicht klar ausgedrückt!
Wie folgt mein code:
int beschreibmatrix2(int a3, int c3, int d3, int e3, int a2, int c2, int d2, int e2) { int a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, e4=0, d4=0; for(f=0; f<=6; f++) { for(e=0; e<=e2; e++) { for(d=0; d<=d2; d++) { for(c=0; c<=c2; c++) { for(e4=0; e4<=e3; e4++) { for(d4=0; d4<=d3; d4++) { for(g=0; g<=5; g++) { for(h=0; h<=6; h++) { simu[a2][c][d][e][f][g][h]=simu[a3][c3][d4][e4][f][g][h]; } } } } } } } } return 0; }
Dies ist mein UP wo jeweils, die Matrix in einer weiteren Stufe erhöht und sie dort hinein kopiert! Also "nichts" einfacher als dass!
Nun meine Frage, ob ich dies irgendwie optimieren kann, wie gesagt fast 20 sek. zum beschreiben!
Bringt dort etwas die Strukturierung, oder so?! Oder gibt es einen guten Algorithmus der mir dies macht?!Greez phil29
-
Wozu berechnest du 4 Schritte im Voraus? Evtl. ist der Minimax-Algorithmus (mit Pruning) was fuer dich.
-
Du hast eine 2-dimensionale Matrix mit 7 Zeielen und 6 Spalten und deine Lösung beinhaltet ein 7(!)-dimensionales Array? - 7 Deminsionen, Mann?!
-
Ja genau ich habe eine 7x6 Matrix. Aber ich benötige die anderen 5 Dimensionen einfach deshalb, da ich in jeder Matrix 7 verschiedene Möglichkieten hab einen Stein fallen zu lassen, dass heißt bei 4 Simulationen sollte ich eine Anzahl von über 2400 Simulationen haben (ALLE möglichkeiten, die sich wärend der 4 Züge erstellen können).
Ich hoffe ihr habt es nun richtig kapiert! Ich brauch deshalb eine so große matrix, kleines beispiel:Wenn ich die erste Simulation starte, habe ich natürlich bloß 7 verschiedene Möglichkeiten meinen Stein fallen zu lassen. Eine Simulation aber mehr, sprich die zweite, hab ich PRO vorherige Simulation wieder 7 Simulationen um sie auszuführen!
Entspricht glaub ich 7^2 und so weiter, ...
@ Blue-Tiger: Ja diesen Algorithmus hab ich auch schon angeschaut, allerdings ist er glaub sehr aufwändig! Und verstehen tu ich ihn auch nicht ganz *g*! Aber dies kann ja auch mal passieren!
Greez phil29
-
Dieses Thema hat sich erledigt! Es war die allgemeine ausgabe der Matrix, der meine KI zu langsam gemacht hat!
Greez phil29
-
So ein Problem löst man normalerweise, mit einem Suchbaum da brauchst du kein 7D Array.
-
Frag doch mal einen Kelosker (http://www.perrypedia.proc.org/Kelosker)