Vous êtes sur la page 1sur 2

Université Ferhat Abbas - Sétif 1

Algorithmique avancée et complexité


Département d’Informatique 2023-2024
M1 Informatique TD1: Complexite des algorithmes

Exercice 1: Pour chacune des séquences itératives suivantes estimer le nombre d’opérations OP exécutées.

1. for i =1 to n do 2. i=1 3. for i = 1 to n do 4. i=1


While i ≤ n do begin while i ≤ n do
for j = 1 to i do
for j = 1 to i do j=1 for j = 1 to i do
OP OP while j ≤ n do OP
end for OP i=2∗i
end for
i=i+2 j =2∗j end for
end for end while end while end while
end

Exercice 2
1. Montrer que si f ∈ O(g) et g ∈ O(h) alors f ∈ O(h).
2. Donner un ordre de grandeur pour chaque fonction en utilisant la notation O() et/ou Θ() en précisant
les constantes c1 ,c2 et n0 .

(a) 17n + 4 (b) n2 + 4n + 12 (c) n3 + 12n + 40 (d) nlogn + 12n + 6

3. considère les fonctions suivantes :

(a) f1 (n) = 17n (c) f3 (n) = 2log(n) + 1 (e) f5 (n) = 2n + n


(b) f2 (n) = 5n3 + 8n + 2 (d) f4 (n) = 3n + 1

Remplir un tableau 5 × 5 en mettant dans la case à l’intersection de la ligne i et de la colonne j le symbole


qui convient selon la règle :

• Θ si fi ∈ Θ(fj ), • O si fi ∈ O(fj ) , • × sinon.

4. Montrez que 500n7 est moins complexe que n8 /106.

Exercice 3
n
1. Mon problème de combinatoire me ramène à 3 méthodes: la méthode A en n!, la méthode
 √ B en n , et la
n2 n n
méthode C en 2 . Quelle méthode choisir ? (Utiliser la formule de Stirling n! ∼ e 2πn).

2. Le rectorat demande de trier d’urgence les dossiers des candidats bacheliers en utilisant le tri A de
complexité n log n ou le tri B de complexité n1.235 . Lequel choisir ?
3. Pour étudier la fiabilité du vaccin anti-Covid les informaticiens d’un laboratoire ont développé deux
algorithmes A et B ayant une complexité de O(logn) et O(n0.1 ) respectivement. Lequel est le plus efficace
(justifier votre réponse) ? .

Exercice 4
Donner la complexité des algorithmes suivants :

(a) Algo1 (b) Algo2 (c) Algo3 (d) Algo4

1
(a) Algo5 (b) Algo6 (c) Algo7 (d) Algo8

(a) Algo9 (b) Algo10 (c) Algo11 (d) Alg12

Exercice 5
1. Écrire un algorithme qui teste si un nombre entier n donné est premier.
2. Calculez sa complexité.

3. Montrez que n opérations suffisent pour décider si n est premier ou pas.
Exercice 6
1. Écrire un algorithme itératif qui fusionne 2 listes ordonnées L1 et L2 de dimensions n1 et n2.
2. Estimer sa complexité en nombre de comparaisons.

Exercice 7
1. Écrire un algorithme qui calcule le produit des matrices carrées A et B de n lignes et n colonnes.
2. Calculez la complexité de cet algorithme.

Exercice 8: Étant donné un tableau T de taille n, on veut écrire un algorithme qui trouve trois indices distincts
i,j et k de {0, ..., n − 1} tels que T [i] + T [j] = T [k], ou qui signale si trois tels indices n’existent pas.

1. Écrire un tel algorithme de complexité en temps O(n3 ).


2. On va essayer d’avoir un algorithme de complexité quadratique. Pour cela, on va traiter d’abord le sous
problème suivant : étant donné un tableau S trié de taille n et un nombre x , écrire un algorithme de
complexité linéaire en temps qui décide s’il existe deux indices distincts i et j tels que T [i] + T [j] = x
(on pourra commencer par comparer T [0] + T [n-1] = x)

3. Déduire un algorithme de complexité en temps quadratique pour résoudre le problème initial.


Exercice 9: Un palindrome est un mot qui se lit de la même façon de gauche à droite ou de droite à gauche.
Exemple : RADAR et ELLE sont des palindromes.
1. Ecrire un algorithme itératif qui décide si un mot donné est un palindrome ou pas. Estimez sa complexité.
2. Donnez une version récursive et estimez sa complexité.

Exercice 10: Résoudre les relations de récurrences suivantes (sans utiliser le Master Théorème) en donnant
des bornes dans la mesure du possible. On suppose que T (1) = 1,

1. T (n) = 2T (n/2) + 1 3. T (n) = 7T (n/2) + n2


2. T (n) = 2T (n − 1) + 1 et T (0) = 1 4. T (n) = 3T (n/2) + O(n).

Vous aimerez peut-être aussi