Module ComplementIA
Package heuristic

Class Markov

java.lang.Object
heuristic.Markov
All Implemented Interfaces:
Heuristic

public class Markov extends Object implements Heuristic
Heuristique "Markov" basée sur une heatmap de probabilités. Principe : pour chaque longueur de navire restant, on parcourt toutes les positions valides de ce navire sur la grille et on incrémente une carte de chaleur (heatmap) pour chaque case couverte par un placement possible. Les heatmaps pour chaque longueur sont additionnées afin d'obtenir une estimation agrégée de la probabilité qu'une case contienne un navire. Améliorations appliquées : - Pondération périodique selon la plus petite longueur de navire restante pour favoriser certaines parités de cases (optimisation heuristique). - Si des impacts partiels (`currentHits`) sont fournis, on calcule une heatmap contrainte qui ne compte que les placements couvrant au moins une de ces cases touchées, puis on renforce (boost) ces valeurs pour prioriser la résolution des bateaux en cours. La méthode publique `choisir` renvoie la coordonnée non tirée ayant le score maximal dans la heatmap. En cas d'égalité, une case est choisie aléatoirement parmi les meilleures candidates.
  • Constructor Details

    • Markov

      public Markov()
  • Method Details

    • choisir

      public Coordonnee choisir(boolean[][] tirsEnvoyes, GrilleNavaleGraphique gng, List<Integer> naviresRestants, List<Coordonnee> currentHits)
      Description copied from interface: Heuristic
      Sélectionne la prochaine coordonnée d'attaque.
      Specified by:
      choisir in interface Heuristic
      Parameters:
      tirsEnvoyes - grille des cases déjà tirées (true si déjà tirée)
      gng - grille graphique de l'adversaire (utilisée pour la taille et des consultations éventuelles)
      naviresRestants - liste des longueurs de navires restant (peut être vide)
      currentHits - liste des coordonnées récemment touchées (cluster non encore coulé)
      Returns:
      la coordonnée choisie (doit être une case non tirée)