From 0c0e065103669d773879c35cce5e44a5ae5f6abc Mon Sep 17 00:00:00 2001 From: Riad KARA-MOSTEFA Date: Wed, 14 Jan 2026 11:06:36 +0100 Subject: [PATCH] Update README.md --- README.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6fcd83a..4a5c751 100644 --- a/README.md +++ b/README.md @@ -112,4 +112,60 @@ Voici un récapitulatif des commandes Git que vous utiliserez fréquemment : ## 5. Supprimer une branche - git branch -d \ No newline at end of file + git branch -d + + +## Comment fonctionne l’algorithme de victoire (idée générale) + +Dans Hex, un joueur gagne s’il existe un chemin continu de ses pions connectant ses deux bords : + +PLAYER1 : relier gauche → droite + +PLAYER2 : relier haut → bas + +Un “chemin” = une suite de cases adjacentes sur la grille hexagonale (6 voisins possibles) appartenant au joueur. + +Ce que fait l’algo (principe) + +L’algo fait un parcours de graphe (DFS avec une pile, ou BFS avec une file c’est pareil pour le résultat) : + +On prend toutes les cases du bord de départ du joueur (ex: bord gauche pour PLAYER1). + +On ne garde que celles qui contiennent un pion du joueur. + +À partir de ces cases, on explore toutes les cases voisines contenant aussi un pion du joueur, et ainsi de suite. + +Si pendant l’exploration on atteint l’autre bord, alors il existe un chemin → victoire. + +Pourquoi ça marche ? + +Parce que ça revient à demander : + +“Est-ce qu’il existe une composante connexe de pions du joueur qui touche les deux bords ?” + +Le DFS/BFS explore exactement la composante connexe. + +Les 6 voisins en Hex (grille hexagonale) + +Dans ton code, tu as : + +private static final int[][] NEIGHBORS = { + {-1, 0}, {+1, 0}, + { 0, -1}, { 0, +1}, + {-1, +1}, {+1, -1} +}; + + +Ça signifie qu’une case (r,c) a jusqu’à 6 voisins : +''' +(r-1,c), (r+1,c) : “haut/bas” + +(r,c-1), (r,c+1) : “gauche/droite” + +(r-1,c+1) et (r+1,c-1) : les 2 diagonales propres au pavage hexagonal +''' +Complexité + +Au pire, on visite chaque case une seule fois → O(N²) pour un plateau N×N. + +Très correct pour Hex. \ No newline at end of file -- 2.52.0