Files
BUT3-JEU/TP1/MinimaxAlphaBeta.java
James Boutaric 84f5b7d973 TP finis
2025-09-18 14:49:39 +02:00

59 lines
1.6 KiB
Java

import java.util.*;
public class MinimaxAlphaBeta {
public static int compteur = 0; // nombre d'états visités
public static Random random = new Random();
public static int exploreMax(int n, int alpha, int beta) {
compteur++;
if (n <= 0) return -1;
int meilleur = Integer.MIN_VALUE;
// coups possibles
List<Integer> coups = Arrays.asList(1, 2, 3);
Collections.shuffle(coups, random); // ordre aléatoire
for (int c : coups) {
int res = exploreMin(n - c, alpha, beta);
meilleur = Math.max(meilleur, res);
alpha = Math.max(alpha, meilleur);
// coupure alpha-beta
if (alpha >= beta) break;
}
return meilleur;
}
public static int exploreMin(int n, int alpha, int beta) {
compteur++;
if (n <= 0) return +1;
int pire = Integer.MAX_VALUE;
// coups possibles
List<Integer> coups = Arrays.asList(1, 2, 3);
Collections.shuffle(coups, random); // ordre aléatoire
for (int c : coups) {
int res = exploreMax(n - c, alpha, beta);
pire = Math.min(pire, res);
beta = Math.min(beta, pire);
// coupure alpha-beta
if (alpha >= beta) break;
}
return pire;
}
public static void main(String[] args) {
int[] tests = {5, 7, 13, 19, 31};
for (int n : tests) {
compteur = 0;
int resultat = exploreMax(n, Integer.MIN_VALUE, Integer.MAX_VALUE);
System.out.println("n=" + n + "" + resultat + " | états visités=" + compteur);
}
}
}