informatique (MP2I/MPI) · Chapitre 27 · Exercice de TD
Le cul-de-sac de
Jeux, stratégies et recherche heuristique · niveau 2
Énoncé
Un graphe à quatre positions : (à ) ; (à ) n'a aucun coup ; (à ) ; et est la cible. Que dit la définition de l'attracteur sur et sur ? Que rend le code du cours ? Conclure.
Corrigé
La définition. L'étage contient . Pour , qui n'a aucun successeur, cette condition porte sur un ensemble vide de coups : elle est vraie par vacuité. Donc , puis puisque peut y aller.
Le code. Il initialise restant au degré sortant et ne décrémente que lorsqu'un successeur est retiré de la file. Une position de de degré n'a aucun successeur, donc n'est jamais atteinte par la boucle, donc n'est jamais marquée. Exécution :
| position | code du cours | définition |
|---|---|---|
| (à ) | faux | vrai |
| (à , sans coup) | faux | vrai |
| (à ) | vrai | vrai |
| (cible) | vrai | vrai |
Les deux ne disent pas la même chose. La correction tient en trois lignes : avant la boucle, on met dans la file toute position de dont le compteur vaut déjà .
(* À ajouter APRÈS l'initialisation par la cible et AVANT la boucle :
une position de J2 sans aucun coup satisfait le « pour tout » par vacuité. *)
Array.iteri (fun p r ->
if ctrl.(p) = 2 && r = 0 && not dans.(p) then begin
dans.(p) <- true; Queue.push p f
end) restant;
Ce que ce cas signifie dans le jeu, et c'est là qu'il faut choisir. Un joueur qui ne peut plus jouer a perdu : c'est la convention normale, et elle rend la définition juste. Si l'on adopte au contraire la convention « la partie s'arrête et personne ne gagne », alors ce sont les positions terminales qu'il faut classer explicitement dans , ou « nul » — les trois types d'états finals du programme — et le code redevient juste, mais la définition doit être restreinte aux positions non terminales.
La règle générale, et elle vaut au-delà de ce chapitre : un quantificateur universel sur un ensemble vide est vrai, et c'est le cas que les implémentations oublient. On l'a déjà rencontré au chapitre chap:logique ; on le retrouvera partout où une boucle « pour tout successeur » se traduit par un compteur.
Exercices semblables
- Le jeu des allumettes corrigé
- Les feuilles qu'alpha-bêta ne regarde pas corrigé
- L'effet d'horizon corrigé
- Une heuristique qui surestime corrigé
- Admissible et pourtant non monotone corrigé