Vous êtes sur la page 1sur 2

Département d’Informatique – Faculté des Sciences – UFAS1

ALGORITHMIQUE AVANCEE ET COMPLEXITE


SERIE 01 : notions de complexité

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

For i =1 to N do i=1
For j = 1 to i do OP While i < N do i = i + 2
endfor For j = 1 to i do OP
endfor endfor
endwhile

For i = 1 to N do i=1
begin While i < n do i = 2*i
j=1 For j = 1 to i do OP
While j < n do j = 2*j ; OP endfor
endwhile endwhile
endfor

EXERCICE 02

 Mon problème de combinatoire me ramène à 3 méthodes : la méthode A en n!, la


méthode B en nn, et la méthode C en 2^n2 . Quelle méthode choisir ? (Utiliser la
formule de Stirling).
 Le rectorat demande de trier d’urgence les dossiers des candidats bacheliers en
utilisant le tri A de complexité nlogn ou le tri B de complexité n 1 .2 3 5 . Lequel choisir ?

EXERCICE 03
Donner un ordre de grandeur pour chaque fonction en utilisant la notation O() et/ou () en
précisant les constantes c 1 ,c2 et n0 .
17n + 4 n2 +4n +12 n3 + 12n + 40 nlogn + 12n +6
Montrez que 500n est moins complexe que n8 /10 6
7

EXERCICE 04
Ecrire un algorithme qui teste si un nombre entier n donné est premier. Calculez sa
complexité. Montrez que √𝑛 opérations suffisent pour décider si n est premier ou pas.

EXERCICE 05
Ecrire une version récursive de la recherche dichotomique vue en cours. On utilisera la notation
dicho(L,X,k,m) X est l’élément recherché, L est la liste de dimension n et k et m sont les bornes
du tableau en cours. Donnez la relation de récurrence qui estime sa complexité en nombre de
comparaisons. Résoudre cette relation.

EXERCICE 06
Ecrire un algorithme itératif qui fusionne 2 listes L1 et L2 de dimensions n et m. Estimer sa
complexité en nombre de comparaisons.
EXERCICE 07
Etant donné un tableau L composé de n éléments entiers, on voudrait déterminer l’élément
maximum par un algorithme récursif basé sur le paradigme « diviser pour régner » en
considérant que le maximum est le plus grand entre les maximums des deux moitiés du
tableau. Estimez sa complexité.
EXERCICE 08
1. Proposer un algorithme naïf de recherche du maximum et du minimum d'un ensemble
de n éléments. Quelle est sa complexité en nombre de comparaisons ?
2. Proposer un algorithme plus efficace basé sur le paradigme diviser pour régner.Estimer
sa complexité.
EXERCICE 09
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. Ecrire un algorithme itératif qui décide si un
mot donné est un palindrome ou pas. Estimez sa complexité. Donnez une version récursive et
estimez sa complexité.
EXERCICE 10
1. Ecrire un algorithme naif qui calcule Xn. Estimer sa complexité.
2. Considérer la méthode suivante pour calculer Xn :

Xn = Xn/2 * Xn/2 si n est pair

Xn = X(n-1)/2*X(n-1)/2*X sinon

Ecrire un algorithme récursif pour calculer Xn


Donner une formule récurrente estimant sa complexité et la calculer.
EXERCICE 11
Donnez une version de :
1. L’algorithme qui réalise le tri par bulles (« bubblesort » en Anglais) sur un tableau de
dimension n. Estimer sa complexité en nombre de comparaisons. Améliorer votre
algorithme de façon qu’il se termine aussitôt que le tableau est trié.

2. L’algorithme qui réalise le tri par insertion sur un tableau de dimension n. Estimer sa
complexité en nombre de comparaisons.
EXERCICE 12
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
 T(n) = 2T(n/2) + 1
 T(n) =2T(n−1) + 1 et T(0) =0
 T(n) = 7T(n/2) + n2
 T(n)=3T(n/2) +O(n).

Vous aimerez peut-être aussi