Update README.md #11

Open
Riad KARA-MOSTEFA wants to merge 1 commits from kara-mosr-patch-1 into master

View File

@@ -113,3 +113,59 @@ Voici un récapitulatif des commandes Git que vous utiliserez fréquemment :
## 5. Supprimer une branche ## 5. Supprimer une branche
git branch -d <nom_de_la_branche> git branch -d <nom_de_la_branche>
## Comment fonctionne lalgorithme de victoire (idée générale)
Dans Hex, un joueur gagne sil 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 lalgo (principe)
Lalgo fait un parcours de graphe (DFS avec une pile, ou BFS avec une file cest 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 lexploration on atteint lautre bord, alors il existe un chemin → victoire.
Pourquoi ça marche ?
Parce que ça revient à demander :
“Est-ce quil 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 quune 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.