Algorithme alpha-bêta : pseudo code
Bonjour,
Je voudrais une explication par rapport à ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
int alphabêta(int depth, int alpha, int bêta)
{
if (game over or depth <= 0)
return winning score or eval();
move bestmove ;
for (each possible move m) {
make move m;
int score = -alphabêta(depth - 1, -bêta, -alpha)
unmake move m;
if (score >= alpha){
alpha = score ;
bestMove = m ;
if (alpha >= bêta)
break;
}
}
return alpha;
} |
En première lecture je pensais à une erreur d'indentation en ligne 6 , mais j'ai trouvé la même chose en différents endroits sur internet.
Je ne comprend pas : la première fois que l'on appelle alphabeta() on ne passe pas dans le if ligne 4 donc on commence systématiquement par jouer "bestmove" mais d'où sort-il ? On n'a pas encore déterminé m !
Je vous remercie par avance pour une explication éclairée :P