Go to file
2024-09-22 18:15:24 +02:00
.idea e 2024-09-20 14:07:50 +02:00
out/production/BUT3JeuR5.5 e 2024-09-20 14:07:50 +02:00
BUT3JeuR5.5.iml e 2024-09-20 14:07:50 +02:00
graph.png ajout rapport 2024-09-22 18:15:24 +02:00
MiniMax.class e 2024-09-20 14:07:50 +02:00
MiniMax.java e 2024-09-20 14:07:50 +02:00
MiniMaxOptiCarnet.class e 2024-09-20 14:07:50 +02:00
MiniMaxOptiCarnet.java e 2024-09-20 14:07:50 +02:00
MiniMaxPetiteOpti.java Update MiniMaxPetiteOpti.java 2024-09-20 15:14:31 +02:00
MiniMaxSansOpti.java Add MiniMaxSansOpti.java 2024-09-20 15:19:50 +02:00
RapportNim.md ajout rapport 2024-09-22 18:15:24 +02:00
README.md e 2024-09-20 14:07:50 +02:00

BUT3JeuR5.5

Jeu de Nim : MiniMax

Utilisation de deux fonctions récursives pour dire si le premier joueur peut gagner à coup sûr au jeu de Nim +1 = J1 peut Gagner à coup sur -1 = J1 peut perdre à coup sur

ExplorationMax -> Tour du joueur 1, vérifie si il a un coup permettant de gagner à coup sûr ExplorationMin -> Tour du joueur 2, vérifie si le joueur 2 perd à coup sûr

Optimisations faites : Si le joueur 1 possède un coup permettant de gagner à coup sûr, la fonction remontera directement pour finir la fonction.

Optimisation en utilisant le systeme de cahier (MiniMaxOptiCarnet.java)

Cette optimisation utilise le système de carnet demandé afin de vérifier qu'une seule fois chaque situation. Ainsi, l'algorithme vérifie a chaque fois exactement n*6-17 noeuds, n étant le nombre d'allumettes au démarrage du jeu. Le carnet existe sous la forme de deux tableaux d'entiers, un par joueur. Chaque joueur à n-1 situations car le Joueur 1 ne peut pas se retrouver avec n-1 allumette et le Joueur 2 ne peut pas avoir n allumettes La limite du nombre d'allumettes est de 33736 (testé grace au bloc try/catch lançant en batch). Cependant lorsque le programme est lancé avec une valeur simple, la limite est beaucoup plus basse, étant à 9099 (sur ma machine). Cette limite est causée par la limite de récursivité de Java, causant une StackOverflowError.