Le 9 janv. 06 à 15:17,
david.malek@... a écrit :
> En lisant le code source C j'ai l'impression que ça doit être assez
> lent (pas de
> hash, juste l'alpha beta sans heuristique spéciale). Par contre c
> super intéressant
> (d'où l'intérêt des tests de Peer) côté fonctions d'évaluation.
>
> J'ai pas bien compris sur quels critères, dans l'alpha-beta, la
> largeur de
> recherche est réduite. On trie les noeuds par valeur de la fonction
> d'évaluation.
>
> David.
Pour la fonction d'évaluation, les deux meilleures strategies
(Epaminondas et Hannibal) utilisent à la fois la compacité (calculée
fondamentalement comme somme des carres des distances entre les
boules, plus somme des carres des distances au centre), et la
mobilité (c'est l'intérêt d'avoir des alignements, après tout :
pouvoir pousser vers le centre).
C'est vrai que je n'ai pas pris le temps de mettre une table de hash
pour gérer les interversions (mais bon, Abalone, c'est qu'un hobby,
n'est-ce pas, des tables de hash il y en a dans mon prog d'Othello
<
http://cassio.free.fr> :-)
Dans la recherche alpha-beta, pour réduire la divergence de l'arbre,
je fais un truc assez drastique (mais qui nécessite une bonne
fonction d'évaluation pour être valable) : à chaque noueud interne,
je trie les fils d'après la fonction d'évaluation (et même en
utilisant une petite recherche auxiliaire a 2 coups de profondeur
pour les noeuds a distance 4 au moins de la frontiere), et je ne
garde que les six meilleurs fils.
Stéphane
... /// ... \\\ ...