Vous êtes sur la page 1sur 6

Université de Paris

M1- Introduction à l’Intelligence Artificielle et Théorie des Jeux


Devoir — Octobre 2020

- Devoir à rendre au plus tard Dimanche 1er Novembre à 20h


- Toutes les réponses doivent être justifiées et clairement rédigées.

Exercice 1 : (Heuristiques)
Deux amis A et B se trouvent sur une grille finie. Leur but est de se retrouver
sur une même case.

Chaque case sur la grille possède des coordonnées entières (x,y). Certaines
cases contiennent des obstacles, dans ce cas nous parlons de cases
occupées. Une case est libre si elle ne contient pas d’obstacle. Initialement les
deux amis se trouvent dans des cases libres. La figure 1 ci-dessous montre
une configuration avec les positions des deux amis et des obstacles (en noir
sur la figure 1).

Le but est de déplacer A et B en effectuant des sauts sur la grille de telle sorte
que les deux amis se retrouvent à la fin sur une même case libre. Soit (x1, y1)
la position d’un des deux amis. Un saut, noté (x1, y1) → (x2, y2), consiste à le
déplacer soit sur la ligne (horizontalement) soit sur la colonne (verticalement),
c’est-à-dire, il est impossible de modifier les coordonnées x et y en même
temps. On suppose qu’il est interdit de sauter au-dessus des obstacles et qu’il
est interdit de placer un ami sur une case occupé par un obstacle.

Chaque saut prend un temps égal à la distance entre les deux positions, c’est-
à-dire, le temps d’un saut de (x, y1) à (x, y2) est |y1 −y2|, et le temps d’un saut
de (x1, y) à (x2, y) est |x1 −x2|.

Une configuration est représentée par un couple de positions [(xA,yA), (xB,yB)]


où (xA,yA) est la position de A et (xB,yB) la position de B.

Un pas consiste à effectuer un saut simultané par les deux amis. Puisque le
temps du saut de chaque ami peut être différent (car parcourant une distance
différente), on suppose qu’à la fin de chaque pas un ami qui termine son saut
plus tôt doit impérativement attendre que l’autre termine le sien. Ensuite les
deux amis peuvent effectuer le saut simultané suivant etc., jusqu’à ce que les
deux amis se retrouvent dans une même case. Noter bien qu’il est possible
qu’un ami, et un seul à chaque fois, effectue un saut de longueur 0, qui ne
change pas sa position et qui prend le temps 0.

Le temps total est la somme des temps de tous les pas. Le problème que l’on
considère est celui de minimiser le temps total nécessaire pour que les deux
amis se retrouvent dans une même case. Il s’agit d’un problème de recherche :
il faut trouver le plus court chemin (c’est-à-dire le temps le plus court) qui
permet d’aller de la configuration initiale vers une configuration terminale.

Question 1 : Ecrire la condition qui caractérise les configurations terminales


[(xA , yA ), (xB , yB)].

Question 2 : Supposons que

[(xA,yA),(xB,yB)] → [(x’A,y’A),(x’B,y’B)]

est un pas (saut simultané des deux amis). Ecrire la formule qui donne le
temps

temps([(xA,yA), (xB,yB)] → [(x’A,y’A), (x’B,y’B)])

que prend un pas. Rappel : un pas se termine quand les deux amis terminent
leurs sauts.

Question 3: Supposons que la configuration initiale est celle représentée par la


figure 1. Donner une configuration choisie par l’algorithme de coût uniforme à
partir de la configuration initiale (il existe plusieurs possibilités, il suffit de
donner juste un exemple d’une configuration qui est conforme avec l’application
de l’algorithme).

Question 4 : Est-ce que la fonction constante h1([(xA,yA),(xB,yB)]) = 0 pour


toute configuration, est une heuristique admissible pour le problème
considéré ?

Question 5 : Est-ce que la distance de Manhattan

h2([(xA,yA), (xB,yB)]) = |xA − xB| + |yA − yB|

est une heuristique admissible pour ce problème.

Question 6 : Est-ce que la fonction

h3([(xA,yA), (xB,yB)]) = min{ |xA −xB|, |yA −yB| }

est une heuristique admissible ?

Question 7 : Supposons que xA = xB (les deux amis sont sur la même ligne).
Quel est le temps minimal

temps([(xA , yA ), (xA , yB )])

pour mettre les deux amis sur la même case s’il n’y a pas d’obstacles ? Même
question pour le cas où les deux amis sont sur la même colonne.

Question 8 : Est-ce que la fonction

h4([(xA,yA), (xB,yB)]) = 1/2 . min{ |xA −xB|, |yA −yB| }

est une heuristique admissible ?

Question 9 : Est-ce que la fonction

h4([(xA,yA), (xB,yB)]) = 1/2 . max{ |xA −xB|, |yA −yB| }

est une heuristique admissible ?

Question 10 : Supposons xA ≠ xB et yA ≠ yB. Quel est le temps minimal

temps([(xA , yA ), (xB , yB )])

pour mettre les deux amis sur une même case s’il n’y a pas d’obstacles ?

Question 11 : Donner une heuristique admissible qui est meilleure que les
autres heuristiques admissibles vues dans cet exercice.
Exercice 2 : (Recherche informée A*)

Soit le graphe suivant :


4
A
3 3
1

3 1
0 B C D 0
7
2 5
1
1
F E
0 1

La figure ci-dessous représente les transitions possibles entre un ensemble de sommets


A, …, F. Le coût associé à chaque transition est donné sur l’arc correspondant.
On s’intéresse au problème de trouver le chemin de coût minimal allant de « A » à « F ».
On considère une heuristique « h » dont les valeurs sont indiquées à chaque sommet.
- Est-ce que l’heuristique « h » est admissible ?
- Appliquer l’algorithme A* avec l’heuristique « h », le sommet « A » est le sommet initial
et « F » est le sommet final (but). Est-ce que le chemin trouvé est de coût minimal ?
- Donner une heuristique admissible «  h’  » pour laquelle A* trouve le chemin de coût
minimal le plus rapidement possible.

Exercice 3 : (Recherche non informée, informée)


Donner pour chaque cas de figure ci-dessous un arbre pour lequel :

- A* est plus efficace que la recherche en largeur et la recherche en profondeur.


- la recherche en largeur et la recherche en profondeur sont plus efficaces que A*.
- A* est plus efficace que la recherche gloutonne et la recherche à coût uniforme.
- la recherche gloutonne est plus efficace que la recherche à coût uniforme et A*.
- la recherche à coût uniforme est plus efficace que la recherche gloutonne et A*.

NB :
- L’efficacité est mesurée en nombre de noeuds développés.
- Pour chaque cas, donner toute l'information nécessaire : le coût de chaque arc, la
valeur de l'heuristique pour chaque noeud, le noeud final.
- Pour chaque cas, l'heuristique utilisée doit être admissible.
- Il faut choisir les arbres les plus simples possible (le moins de noeuds possible, et le
plus faible degré possible).
Exercice 4 : (Min-Max, Alpha-beta)

On considère l’arbre suivant :

Max

Min

Max

6 5 4 5 9 3 2 3 2 1 7 2 5 7 4 3 0 8 9

- Appliquer l’algorithme min-max à cet arbre. Quelle est la valeur que le joueur Max est
sûr de gagner quelque soit la façon de jouer du joueur Min ?
- Appliquer l’algorithme alpha-beta à cet arbre.

Exercice 5 : (Alpha-beta)

On considère l’arbre suivant :

MAX A

MIN B C D

E F G H I J MAX

a b c d e f g h i j k l
Les feuilles a, b, c, …, k, l sont des entiers quelconques dans Z. On veut
étudier le fonctionnement de l’algorithme de parcours avec élagage Alpha-Beta
en fonction des valeurs des feuilles, et aussi des valeurs initiales de alpha et de
beta. En effet, tout ce qu’on suppose dans cet exercice est que alpha et beta
sont deux valeurs quelconques dans Z U {-∞, +∞}, telles que alpha < beta. On
considère que l’algorithme alpha-beta parcours l’arbre de gauche à droite.

Question 1 : On suppose que l’algorithme élague les branches E-b et F-d.


Donner les conditions que doivent satisfaire dans ce cas les valeurs des
feuilles, de alpha, et de beta. Décrire le comportement de l’algorithme dans ce
cas, et donner la valeur calculée pour le joueur MAX.

Question 2 : On suppose maintenant que l’algorithme élague la branche B-F.


Est-ce que dans ce cas il existe des valeurs des feuilles, de alpha et de beta
pour lesquelles l’algorithme peut élaguer aussi la branche E-b ? (Si oui, en
donner une instance, sinon, le prouver).

Question 3 : On suppose toujours que l’algorithme élague la branche B-F.


Même question que la précédente concernant cette fois-ci la branche A-C (au
lieu de E-b).

Question 4 : On suppose maintenant que l’algorithme élague les branches B-F


et C-H. Donner les conditions que doivent satisfaire dans ce cas les valeurs
des feuilles, de alpha, et de beta. Décrire le comportement de l’algorithme dans
ce cas, et donner la valeur calculée pour le joueur MAX. Donner des valeurs
concrètes pour les feuilles, alpha, et beta qui correspondent à ce cas.

Vous aimerez peut-être aussi