
5 Intelligence Artificielle et Algorithmes de Jeux
5.1 Apprentissage Automatique (Machine Learning)
Il faut systématiquement centrer et réduire (normaliser) les données avant de calculer des distances.
—Supervisé (K-NN - K Plus Proches Voisins) : On calcule la distance entre un inconnu et toute la base. On
prend les Kplus proches, et la classe majoritaire l’emporte. On évalue la fiabilité avec une Matrice de Confusion
(Diagonale = bonnes prédictions).
—Non-Supervisé (K-Means) : On veut regrouper un nuage de points sans étiquette en kclusters. On itère en
attribuant les points au centre le plus proche, puis on recalcule les centres.
5.2 Algorithme Min-Max (Jeux à deux joueurs)
S’applique aux jeux à information parfaite (Échecs, Wythoff). L’arbre des possibles est un graphe biparti. Le joueur MAX
cherche le coup qui maximise le score, en simulant que le joueur MIN jouera toujours le coup qui minimise ce score.
Implémentation de l’Algorithme Min-Max
1def min_max(position, profondeur, joueur_max):
2# Condition d'arrêt : fin du jeu ou limite de profondeur
3if profondeur ==0or est_partie_terminee(position):
4return evaluer_heuristique(position)
5
6if joueur_max == True:# Tour du joueur 1 (MAX)
7max_eval = -float('inf')
8for coup in coups_possibles(position):
9# On simule le coup et on passe le tour (False)
10 evaluation =min_max(jouer_coup(position, coup), profondeur - 1,False)
11 max_eval =max(max_eval, evaluation)
12 return max_eval
13
14 else:# Tour du joueur 2 (MIN)
15 min_eval =float('inf')
16 for coup in coups_possibles(position):
17 # On simule le coup et on repasse le tour (True)
18 evaluation =min_max(jouer_coup(position, coup), profondeur - 1,True)
19 min_eval =min(min_eval, evaluation)
20 return min_eval
6 Bases de Données (SQL) - Maîtrise des Requêtes
En prépa, on exige de maîtriser les jointures (JOIN), les fonctions d’agrégation avec filtrage (GROUP BY ... HAVING), et
les sous-requêtes.
6.1 Principes Fondamentaux
—Clé Primaire : Attribut unique identifiant une ligne (ex : isbn).
—Clé Étrangère : Attribut qui fait référence à la clé primaire d’une autre table (création du lien relationnel).
—Différence WHERE / HAVING :WHERE filtre les lignes avant le regroupement. HAVING filtre après un GROUP
BY (indispensable si on veut filtrer avec un COUNT ou un AVG).
6.2 Requêtes d’Annale (BDD Bibliothèque)
Noms des bibliothèques possédant au moins 3 livres différents
SELECT Bibliotheque.nom, AVG(Livre.annee) AS annee_moyenne
FROM Bibliotheque
JOIN Inventaire ON Bibliotheque.id =Inventaire.biblio
JOIN Livre ON Inventaire.isbn =Livre.isbn
GROUP BY Bibliotheque.id, Bibliotheque.nom
HAVING COUNT(DISTINCT Livre.isbn) >= 3;
4