Vous êtes sur la page 1sur 3

Université de Sfax Année Universitaire 2022/2023

Institut Supérieur d’Informatique Enseignant I. Kamoun Fourati


et de Multimédia de Sfax

Algorithmique avancée et complexité

Exercice 1

1. Factoriel itératif

(a) Écrire un algorithme itératif qui permet de calculer le factoriel d’un nombre N.
(b) Calculer la complexité de l’algorithme précédent.

2. Factoriel récursif

(a) Écrire un algorithme récursif qui permet de calculer le factoriel d’un nombre N.
(b) Trouver la relation de récurrence
(c) Calculer la complexité de l’algorithme précédent.

1
Exercice 2
Tours de Hanoi Le problème des tours de Hanoı̈ a été inventé par le mathématicien français
Édouard Lucas (1842-1891). Considérons trois piquets, notés A, B et C, et un nombre fini
de disques de tailles différentes que l’on suppose placés initialement par taille décroissante sur
le piquet A. Le but est ici de transférer cette tour de disques du piquet A au piquet C en
respectant les règles suivantes :

• un seul disque peut être déplacé à la fois,

• un disque ne peut être placé sur un disque de taille plus petite.

Ainsi le paramétrage de la procédure déplacer sera le suivant: Procédure déplacer(n:entier,


A,B,C: Caractère) Lorsque la tour A ne contient qu’un seul disque, la solution est évidente: il
s’agit de réaliser un transfert de la tour A vers C. Ce cas constitue donc la condition de sortie
(Cas d’arrêt). Ainsi, pour déplacer n disques de A vers B en utilisant éventuellement B, il faut:

1. déplacer (n-1) disque de A vers B en utilisant éventuellement C

2. réaliser un transfert du disque de A vers C

3. déplacer (n-1) disques de B vers C en utilisant éventuellement A.

Par exemple, pour trois disques, on peut déplacer la tour du piquet A au piquet C en effectuant
7 mouvements comme illustré ci-dessous.

1. Écrire l’algorithme de tours de Hanoı̈ qui permet de déplacer N disques de A vers C.

2. Trouver la relation de récurrence

3. Trouver la complexité de cet algorithme avec la méthode de substitution.

2
Exercice 3
Écrire une fonction récursive PGCD Euc qui retourne le PGCD de 2 entiers a et b en utilisant
l’algorithme d’Euclide qui s’appuie sur les propriétés suivantes:

• P GCD(a, b) = b si b est diviseur de a

• P GCD(a, b) = P GCD(b, amodb) sinon

Vous aimerez peut-être aussi