Académique Documents
Professionnel Documents
Culture Documents
a) Appliquer cet algorithme pour trier la liste 60, 35, 81, 98, 14, 47.
b) Cet algorithme est-il stable ?
c) Est-il interne ?
Exercice 2. Décrire comment on peut implémenter chacune des opérations suivantes sur un
vecteur tel que le temps que ça prend ne dépende pas de la taille n du vecteur.
a) Supprimer le ième élément d’un vecteur ( 1 i n )
b) Supprimer le ième élément dans un vecteur trié (le vecteur restant doit bien entendu
rester trié)
Exercice 3. Si vous résolvez le problème de recherche dans une liste de n nombres, comment
pouvez-vous prendre avantage du fait que la liste est connu être trié ? Donnez des réponses
séparées pour :
a) les listes représentées sous forme de vecteur.
b) les listes représentées sous forme de liste chaînée.
Exercice 4. a) Montrer le contenu de la pile après chacune des opérations de la séquence
suivante en commençant par la pile vide :
push(a), push(b), pop, push(c), push(d), pop
b) Montrer le contenu de la queue après chacune des opérations de la séquence suivante en
commençant par la queue vide :
enqueue(a), enqueue(b), dequeue, enqueue(c), enqueue(d), dequeue
Exercice 5. Pour chacun des algorithmes suivants, indiquer (i) une métrique naturelle de la
taille de son entrée ; (ii) son opération de base ; (iii) si le compte de l’opération de base peut
être différent pour des entrées de même taille.
a) Calcul de la somme de n nombres
b) Calcul de n!
c) Recherche du plus grand élément dans une liste de n nombres
d) Algorithme d’Euclide
e) Le sieve de Eratosthenes
f) Algorithme du stylo-et-crayon pour la multiplication de deux nombres décimaux de n
chiffres.
Exercice 6.
a) Considérons l’algorithme basé sur la définition pour la somme de deux matrices d’ordre
n. Quelle est l’opération de base ? Combien de fois elle est effectuée comme une
fonction de l’ordre n des matrices ? Comme une fonction du nombre total d’éléments
dans les matrices d’entrée ?
b) Répondre aux mêmes questions pour l‘algorithme basé sur la définition pour la
multiplication de deux matrices.
Exercice 7. Considérons une variante de la recherche séquentielle qui parcourt une liste pour
retourner le nombre d’occurrences de la clé de recherche donnée dans la liste. Son efficacité
sera-t-elle différente de l’efficacité classique de la recherche séquentielle ?
Exercice 8. Sélection des gants Il y a 22 gants dans un tiroir : 5 paires de gants rouges, 4
paires de gants jaunes et 2 paires de gants verts. Vous sélectionnez des gants dans l’obscurité
et vous ne pouvez les vérifier qu’après que la sélection soit effectuée. Quel est le plus petit
nombre de gants que vous avez besoin de sélectionner pour avoir au moins une paire de gants
identiques dans le meilleur cas ? dans le pire cas ?
Exercice 9. L’élimination de Gauss, l’algorithme de base pour la résolution des systèmes de n
1
équations linéaires à n inconnues, requiert environ n 3 multiplications, qui est l’opération de
3
base de l’algorithme.
a) Combien plus longtemps devriez-vous vous attendre à ce que l’élimination de Gauss
travaille sur un système de 1000 équations contre un système de 500 équations ?
b) Vous voulez acheter un ordinateur qui est 1000 fois plus rapide que celui que vous avez
actuellement. Par quel facteur l’ordinateur le plus rapide augmentera la taille des
systèmes solubles dans la même quantité de temps comme sur l’ancien ordinateur ?
Exercice 10. Pour chacune des fonctions suivantes, indiquer de combien la valeur de la fonction
changera si son argument augmente quatre fois.
a) log 2 n b) n c) n d) n 2 e) n 3 f) 2 n
Exercice 11. Indiquer si la première fonction de chacune des paires suivantes a un ordre de
croissance plus inférieur, égal ou supérieur (à une constante près) que la deuxième fonction.
(i )
n −1 n −1
lg i
2
a) 2
+1 b) 2
i =0 i =1
n n −1 i −1
c) (i + 1)2
i =1
i −1
d) (i + j )
i =0 j =0
Utiliser la notation (g (n) ) avec la fonction g (n) la plus simple possible.
Exercice 14. La variance empirique de n observations x1 ,, xn peut être calculée comme
n n
( xi − x ) 2 x
i =1
où x = i =1 i
n −1 n
ou
x − (i =1 xi ) 2 / n
n 2 n
i =1 i
n −1
Trouver et comparer le nombre de divisions, multiplications, et additions/soustractions
(additions et soustractions sont souvent prises ensemble) qui sont nécessaires pour calculer la
variance suivant chacune des deux formules.
Exercice 19. Considérons la version suivante d’un algorithme important que nous étudierons
plus tard dans ce cours.
Exercice 28. Quelle est l’efficacité de l’algorithme de la force brute pour le calcul de a n comme
une fonction de n ? Comme une fonction du nombre des bits de la représentation binaire de n ?
b) Si vous devez calculer a n mod m , où a 1 et n est un grand entier positif, comment pouvez-
vous contourner le problème d’une très magnitude de a n ?
p( x) = an x n + an−1 x n−1 + + a1 x + a0
a11 a1n
A =
an1 ann
Dénoté det(A), peut être définie par a11 pour n = 1, et pour n 1 par la formule récursive
n
det( A) = s j a1 j det( A j )
j =1
où s j est égale à +1 si j’est impair et -1 si j’est pair, a1 j est l’élément de la première ligne et la
colonne j, et A j est la matrice d’ordre n – 1 obtenue à partir de A en supprimant sa ligne 1 et sa
colonne j.
a) Ecrire une relation de récurrence pour le nombre de multiplications effectuées par
l’algorithme qui implémente cette définition récursive.
b) Sans résoudre cette récurrence, que pouvez-vous dire concernant l’ordre de croissance
de la solution comparé à n! ?
Exercice 21
Pouvez-vous concevoir un algorithme plus rapide que celui basé sur la stratégie de la force
brute pour résoudre le problème de la paire la plus proche pour n points x1 ,, xn de la droite
réelle ?
Exercice 32
Soient x1 x2 xn des nombres réels représentant les coordonnées de n villages situés le
long d’une route droite. Un poste de police doit être construit dans l’un de ces villages.
a) Concevoir un algorithme efficace pour déterminer la position du poste de police qui
minimise la distance moyenne entre les villages et le poste de police.
b) Concevoir un algorithme efficace pour déterminer la position du poste de police qui
minimise la distance maximum d’un village au poste de police.
Exercice 33
Le problème de la paire la plus proche peut être posé dans un espace k-dimensionnel dans lequel
la distance euclidienne entre deux points x = ( x1 ,, xs ) et y = ( y1 ,, ys ) est définie par
k
d ( x, y ) = (x − ys ) .
2
s
s =1
Exercice 34
a) Ecrire un pseudocode pour l’algorithme du diviser-pour-régner pour trouver les valeurs
du plus petit et du plus grand élément dans un vecteur de n nombres.
b) Ecrire et résoudre (pour n = 2k ) la relation de récurrence du nombre de comparaisons
clés effectuées par votre algorithme.
c) Comparer votre algorithme avec l’algorithme de la force brute de ce problème.
Exercice 35
Exercice 36
Soit un vecteur de n nombres réels distincts. Une paire (A[i], A[j]) est dite être une inversion si
ces nombres ne sont pas dans l’ordre, c’est-à-dire i j mais A[i] A[j]. Concevoir un algorithme
(n log n) pour compter le nombre d’inversions
Exercice 37
Concevoir un algorithme qui réarrange les éléments d’un vecteur de n nombres réels tels
que ses éléments négatifs précèdent tous ses éléments positifs. Votre algorithme doit être à la
fois efficace en temps et en mémoire.
Exercice 38
Résoudre la récurrence Cworst (n) = Cworst (n / 2) + 1 , pour n 1, Cworst (1) = 1, pour n = 2 k par
substitution arrière.
Exercice 39
b) Montrer que Cworst (n) = log 2 n + 1 vérifie la relation (4.2) pour tout entier positif impair
n.
Exercice 40
Ecrire un pseudocode pour un des algorithmes de parcours classiques pour un arbre binaire. En
supposant que votre algorithme est récursif, trouver le nombre d’appels récursifs effectués.
Exercice 41
Lequel des algorithmes classiques de parcours produit une liste triée si elle appliquée à un arbre
binaire de recherche ? Démontrer cette propriété.
Exercice 42
Parcourir l’arbre binaire suivant : a) en préordre, b) en inordre, c) en postordre
b c
d e f
Exercice 43
a) Dessiner un arbre binaire ayant dix nœuds étiquetés de 0 à 9 de telle sorte que les parcours
en inordre et postordre de l’arbre produisent les listes suivantes : 9, 3, 1, 0, 4, 2, 7, 6, 8, 5
(inordre) et 9, 1, 4, 0, 3, 6, 7, 5, 8, 2 (postordre).
Exercice 44
Est-il possible d’implémenter le tri par insertion pour trier les listes chaînées ? Aura-t-elle la
même efficacité (n 2 ) que la version vecteur ?
Exercice 45
Considérons la version suivante du tri par insertion
ALGORITHME InsertSort2(A[0..n – 1])
for i 1 to n – 1 do
ji–1
while (j 0) and (A[j] A[j + 1]) do
swap(A[j], A[j + 1])]
jj–1
Quelle est son efficacité temporelle ? Comment est-elle comparée à celle de la version donnée
dans le cours ?
Exercice 45
Soit A[0..n −1] un ensemble de n éléments ordonnables. (Pour la simplicité, vous pouvez
supposer que tous les éléments son distincts.) Une paire ( A[i], A[ j ]) est appelée une inversion
si i j et A[i] A[j].
a) Quels sont les vecteurs de taille n qui ont le plus grand nombre d’inversions et quel est
ce nombre ? Répondre aux mêmes questions pour le plus petit nombre d’inversions.
b) Montrer que le nombre de comparaisons clés dans le cas moyen du tri par insertion est
donné par la formule
n2
Cavg (n) .
4
Exercice 46
Le tri par insertion dichotomique utilise la recherche binaire pour trouver une position
appropriée pour insérer A[i] parmi les éléments déjà triés A[0] A[i −1]) . Déterminer la
classe d’efficacité au pire de cet algorithme.
Exercice 47
Le Shellsort est un algorithme important qui marche en appliquant le tri par insertion à plusieurs
sous listes entremêlées d’une liste donnée. A chaque passage à travers la liste, les sous listes en
question sont construites en faisant des pas dans la liste avec un incrément hi pris une suite
certaine suite prédéfinie de tailles de pas h1 hi 1 , devant se terminer par 1.
(L’algorithme marche n’importe quelle suite de ce genre, bien que certaines suites sont connues
produire une meilleure efficacité que d’autres. Par exemple, la suite 1, 4, 23, 40, 121,…, utilisé
bien entendu dans l’ordre inverse, est connue être la meilleure à ce propos).
a) Applique le shellsort à la liste
S H E L L S O R T I S U S E F U L