Académique Documents
Professionnel Documents
Culture Documents
TD / TP
Il s'agit de placer n reines sur un échiquier (n x n) sans qu'elles se menacent. Deux reines ne doivent pas
se trouver sur la même ligne, sur la même colonne ou sur la même diagonale
Algorithme
La méthode utilisée consiste à écrire un algorithme récursif capable de retourner en arrière, on parle
souvent de backtracking. Pour cela il faut se souvenir des choix qui ont été faits précédemment. Les
algorithmes à retour arrière procèdent pas essais/erreurs. Le schéma général consiste à décomposer le
processus d'essais et erreurs en tâches partielles. Souvent ces tâches s'expriment naturellement de façon
récursives et consistent en l'exploration d'un nombre fini de sous tâches. On peut voir tout ce processus
comme un processus de recherche qui construit peu à peu et parcourt en l'élaguant un arbre des sous
tâches. En général, celui-ci croît très vite, souvent de manière exponentielle, en fonction d'un paramètre
donné. Fréquemment l'arbre de recherche doit être élagué à l'aide d'heuristique.
Pour écrire l'algorithme, on s'inspirera de ce qui a été présenté en cours.
L'objectif de ce TP est donc de mettre en œuvre une technique de recherche utilisant le backtracking ;
Exercice 3 : Tour de Hanoï
On considère une variante des tours de Hanoï avec trois piquets A, B, C et n disques.
- les n disques sont de taille différente
- initialement les n disques sont rangés sur le piquet A, du plus grand en bas, au plus petit en
haut
- on désire amener les n disques dans le même ordre sur le piquet C
- on ne peut déplacer qu’un seul disque à la fois
- on ne peut pas poser un disque sur un disque de taille inférieure
PROF: A.SABOUR
1
1. Déterminer et prouver l’équation de récurrence correspondant au nombre minimum de
déplacements de disques
Exercice 4 : Calcul de xn
Fonction Puissance (x, n) : réel
Début
Selon que :
N=1 : retourner x
N%2=0 : retourner carrée(puissance(x,n/2))
Défaut : retourner x*carrée(puissance(x,n/2))
Fin
Remarque : on saute de xi à x2i dans une seule multiplication, ce qui est plus difficile à gérer avec une boucle. Il
s’agit donc d’un bon exemple d’utilisation de fonction récursive.
Algorithme
PROF: A.SABOUR