bonjour,
voila dans le cadre de mes études j'ai eu un projet à effectuer en java :
l'intelligence artificielle du jeu othello.
on nous a fourni l'interface du jeu et à nous de faire le reste.
Maintenant le projet est fini mais je cherche toujours à l'améliorer et à optimiser les traitements.
j'ai mis en place une recherche de coup possible puis une création d'un arbre N-aire avec l'élagage alpha beta, où chacun des fils à une copie de la matrice (le plateau de jeu) du père ou il est ajouté le coup possible.
la matrice en question est de taille 8x8 de type Couleur (NOIR, BLANC, VIDE).
Mon problème se porte sur la copie de cette matrice
au départ j'ai écrit ceci :
mais mon IDE (NetBeans 7.0) m'a dit d'utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private Couleur[][] copyMatrice(Couleur matrice[][]){ int tailleMatrice = matrice.length; Couleur matriceCopy[][] = new Couleur[tailleMatrice][tailleMatrice]; for(int i = 0 ; i < tailleMatrice ; i ++){ for(int j = 0 ; j < tailleMatrice ; j ++){ matriceCopy[i][j] = matrice[i][j]; } } return matriceCopy; }
Le tout fonctionne bien, mais avec un niveau de recherche de profondeur 5 dans mon arbre, je trouve le programme long à répondre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 System.arraycopy(matrice[i], 0 matriceCopy[i], 0, tailleMatrice); //plutôt que ceci : for(int j = 0 ; j < tailleMatrice ; j ++){ matriceCopy[i][j] = matrice[i][j]; }
C'est pourquoi j'ai utilisé l'outil de profilage intégré à NetBeans et je passe plus de 300ms dans cette fonction à chaque appel.
ce qui au bout d'un certain nombre de coup représente des secondes.
Enfin la question :
existe-t-il un moyen de copier cette matrice plus rapidement que cela ?
Merci d'avance,
Ballerssd
Partager