• Aucun résultat trouvé

5.2 Quelques classes de strat´egies

5.2.2 Les m´emoires binaires

Le concept de base des strat´egies de la famille memory ne permet pas de prendre en compte le comportement de l’adversaire depuis le d´ebut de la partie. En effet la m´emoire ´etant limit´ee en taille il est impossible pour une strat´egie d’une des classes memory (mem, memd ou memld) de prendre en compte le comportement de l’adversaire de mani`ere globale. Ces strat´egies sont donc faiblement r´eactives, i.e. r´eactives `a court terme, puisqu’elles ne r´eagissent que par rapport `a un moment limit´e du pass´e.

Les strat´egies de la famille que nous allons d´ecrire maintenant proposent une adaptation de la structure de la classe memory afin de pouvoir tenter de prendre en compte le comportement global de l’adversaire depuis le d´ebut de la partie.

La classe binary

Les strat´egies de cette famille ont basiquement les mˆemes propri´et´es que celles de la famille memory, avec en plus la possibilit´e de diff´erencier `a chaque coup, les cas o`u l’adversaire a plus souvent trahi que coop´er´e depuis le d´ebut de la partie. Cette notion est une repr´esentation simplifi´ee du comportement global de l’adversaire depuis le d´ebut de la partie.

Si l’on reprend l’exemple des joueurs humains, il semble assez naturel de consid´erer que les joueurs ne se souviennent certes pas avec pr´ecision de tous les coups de l’adversaire, mais que globalement ils se font une id´ee de leur adversaire en se souvenant de son comportement en moyenne. La m´emoire des coups r´ecents reste cependant fraˆıche dans l’esprit des joueurs. Au moment de prendre leur d´ecision sur le comportement `a adopter, ils prennent donc en compte non seulement l’id´ee qu’ils se font du comportement g´en´eral de l’adversaire, mais aussi les cartes qu’il a jou´ees r´ecemment et qui peuvent donner une indication sur une ´eventuelle modification de ce comportement.

Pour rendre ce choix possible, nous allons ajouter une information `a la m´emoire disponible pour les strat´egies, `a savoir un indicateur mis `a jour lors de chaque coup. Cet indicateur ne repr´esente en fait qu’un moyen de compter les cartes D (ou C selon le point de vue) que l’adversaire a utilis´ees depuis le d´ebut de la partie. La mise en place pratique de cet indicateur est relativement ais´ee et n’a de sens que pour les strat´egies ayant la possibilit´e de se souvenir de la derni`ere carte jou´ee par l’adversaire, c’est-`a-dire pour les familles de strat´egies pour lesquelles O ≥ 1.

Au final, pour d´efinir une strat´egie de cette famille, il faut donc sp´ecifier : – la valeur de M,

– la valeur de O, – l’amorce de la partie,

– la d´efinition du comportement en fonction des historiques possibles pour le cas o`u l’adversaire a plus souvent trahi que coop´er´e dans le pass´e,

– la d´efinition du comportement en fonction des historiques possibles pour le cas o`u l’adversaire a plus souvent coop´er´e que trahi dans le pass´e.

Comme pour les familles de strat´egies pr´ec´edentes, le nom d’une strat´egie de cette famille sert de support `a la d´efinition de son comportement.

Le nom d’une strat´egie est cr´e´e par concat´enation : 1. du pr´efixe bin ; 2. du caract`ere _ ; 3. de la valeur de M ; 4. du caract`ere _ ; 5. de la valeur de O ; 6. du caract`ere _ ;

7. des cartes `a jouer pour chacun des coups de l’amorce dans l’ordre croissant des coups, i.e du coup 1 au coup max(M,O) ;

8. de la liste ordonn´ee des cartes `a jouer pour chacune des configurations de la m´emoire possible si l’adversaire a plus souvent trahi que coop´er´e dans le pass´e, au sens strict.

9. de la liste ordonn´ee des cartes `a jouer pour chacune des configurations de la m´emoire possible si l’adversaire a plus souvent coop´er´e que trahi dans le pass´e, au sens large.

Le sch´ema est ici encore le mˆeme que pr´ec´edemment, aussi bien pour le point 8 que le 9 et il n’est pas r´ep´et´e.

Une seule et mˆeme chaˆıne de caract`eres est utilis´ee pour les points 7, 8, et 9. Cette chaˆıne est donc compos´ee de (max(M,O) + 2 × 2M+O) soit (max(M,O) + 2(M+O+1)) caract`eres.

bin 1 1 cddddccccest un exemple de strat´egie de la famille binary. Elle appartient `a la classe des strat´egies `a m´emoire binaire qui n’utilisent que la derni`ere carte du joueur et la derni`ere carte de l’adversaire.

Elle peut ˆetre interpr´et´ee de la fa¸con suivante :

bin 1 1 cddddcccc 1. Au premier coup je joue la carte C ,

2. ensuite :

(a) si l’adversaire a strictement plus souvent trahi que coop´er´e depuis le d´ebut de la partie et : – si j’ai jou´e C, et que mon adversaire a jou´e C alors je joue D

– si j’ai jou´e C, et que mon adversaire a jou´e D alors je joue D – si j’ai jou´e D, et que mon adversaire a jou´e C alors je joue D – si j’ai jou´e D, et que mon adversaire a jou´e D alors je joue D (b) sinon :

– si j’ai jou´e C, et que mon adversaire a jou´e C alors je joue C – si j’ai jou´e C, et que mon adversaire a jou´e D alors je joue C – si j’ai jou´e D, et que mon adversaire a jou´e C alors je joue C – si j’ai jou´e D, et que mon adversaire a jou´e D alors je joue C

D’o`u finalement on obtient la partie int´eressante du g´enotype en concat´enant le tout :

C || D D D D || C C C C

On peut remarquer que cette modification n’a pas diminu´e le pouvoir d’expression de la descrip- tion des strat´egies de la classe memory. La strat´egie pr´ec´edente est un autre nom pour soft majo, qui ne pouvait pas ˆetre cod´ee dans les familles pr´ec´edentes. tit for tat est en fait bin 1 1 ccdcdcdcd, spitefulest bin 0 1 cddcd, tf2t est bin 0 2 cccccdcccd, etc.

Chaque classe de strat´egies de la famille binary permet donc de d´efinir Nbin(M,O) strat´egies compl`etement diff´erentes, puisque chaque caract`ere de la chaˆıne du g´enotype d’une strat´egie peut ˆetre choisi dans l’ensemble {c,d} :

Nbin(M,O) = 2(max(M,O)+2

(M+O+1))

(5.4)

La famille binary with dynamic start

De mˆeme que pour la famille memory, les strat´egies de la famille binary jouent sans r´eagir au comportement de l’adversaire lors des coups de l’amorce d’une partie. On peut donc lui faire les mˆemes reproches. La classe binary with dynamic start propose exactement la mˆeme solution que celle utilis´ee pour la classe memory with dynamic start.

Le nom d’une strat´egie est cr´e´e par concat´enation : 1. du pr´efixe bind ; 2. du caract`ere _ ; 3. de la valeur de M ; 4. du caract`ere _ ; 5. de la valeur de O ; 6. du caract`ere _ ;

7. de la carte `a jouer lors du premier coup ;

8. des cartes `a jouer pour chacun des coups suivants de l’amorce dans l’ordre croissant des coups, i.e du coup 2 au coup max(M,O) et en fonction de la carte jou´ee par l’adversaire au coup pr´ecedent.

Le sch´ema utilis´e dans ce cas est exactement le mˆeme que celui utilis´e dans le cas correspondant pour les strat´egies de la famille memory with dynamic start, page 84.

9. de la liste ordonn´ee des cartes `a jouer pour chacune des configurations de la m´emoire possibles si l’adversaire a plus souvent trahi que coop´er´e dans le pass´e, au sens strict.

10. de la liste ordonn´ee des cartes `a jouer pour chacune des configurations de la m´emoire possible si l’adversaire a plus souvent coop´er´e que trahi dans le pass´e, au sens large.

Le sch´ema est ici encore le mˆeme que pr´ec´edemment, aussi bien pour le point 9 que le 10. Une seule et mˆeme chaˆıne de caract`eres est utilis´ee pour les points 7, 8, 9 et 10. Cette chaˆıne est donc compos´ee de (1 + 2(max(M,O) − 1) + 2(M+O+1)) soit (2 max(M,O) − 1 + 2(M+O+1)) caract`eres.

Pour en finir avec la classe des strat´egies `a m´emoire binaire, on peut interpr´eter la strat´egie bind 0 2 ccdcdcdcdcd:

bind 0 2 ccdcdcdcdcd 1. Au premier coup je joue la carte C ,

2. au second coup si l’adversaire a jou´e C je joue C , s’il a jou´e D alors je joue D 3. ensuite :

(a) si l’adversaire a strictement plus souvent trahi que coop´er´e depuis le d´ebut de la partie et : – si mon adversaire a jou´e C, suivi de C, alors je joue C

– si mon adversaire a jou´e C, suivi de D, alors je joue D – si mon adversaire a jou´e D, suivi de C, alors je joue C – si mon adversaire a jou´e D, suivi de D, alors je joue D (b) sinon :

– si mon adversaire a jou´e C, suivi de C, alors je joue C – si mon adversaire a jou´e C, suivi de D, alors je joue D – si mon adversaire a jou´e D, suivi de C, alors je joue C – si mon adversaire a jou´e D, suivi de D, alors je joue D

D’o`u finalement on obtient la partie int´eressante du g´enotype en concat´enant le tout :

C | C D || C D C D || C D C D

On reconnaˆıt une fois de plus dans cette strat´egie la strat´egie tit for tat.

Chaque famille de strat´egies de la classe binary with dynamic start permet donc de d´efinir Nbind(M,O) strat´egies compl`etement diff´erentes, puisque chaque caract`ere de la chaˆıne du g´enotype d’une strat´egie peut ˆetre choisi dans l’ensemble {c,d} :

Nbind(M,O) = 2(2 max(M,O)−1+2

(M+O+1))

(5.5)

Apr`es avoir pr´esent´e les strat´egies bas´ees uniquement sur l’utilisation de la m´emoire, nous allons maintenant d´ecrire les deux derni`eres familles bas´ees sur un concept fondamental en informatique : les automates.