Académique Documents
Professionnel Documents
Culture Documents
Avril 2008
Algorithme 1 Classification :
• Linéaire
• Quadratique
Problème Algorithme 2 • Polynomial
• NP
Algorithme 3
• NP-complet
Indécidable
(problème de l’arrêt)
Plan
I Préliminaires
II Analyse de l'efficacité des algorithmes
III Diviser pour régner
IV Algorithmes voraces
V Programmation dynamique
VI Transformation du domaine
VII Algorithmes probabilistes
VIII Préconditionnement
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 3
Chapitre I : Préliminaires
Contenu
1 Notion d’algorithme
2 Efficacité des algorithmes
3 Nature de l’analyse
4 Pourquoi des algorithmes efficaces
5 Calcul des nombres de Fibonacci
Exemples :
• Multiplication des nombres entiers
• Division
• Calcul du PGCD
• Certaines recettes de cuisines
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 5
Exemple : multiplication des nombres
53 53 17
x 17 26 34
371 13 72
53 6 136
901 3 272
1 544
901
Analyse des ressources
Méthode classique : tables de multiplications + addition
Méthode russe : multiplication par 2 et division par 2 (décalages à
droite et à gauche dans une représentation en base 2) + addition
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 6
Représentation des algorithmes
Exercice : Faire la trace pour l'exemplaire (17,53). Modifier cet algorithme pour
avoir une seule boucle et en utilisant seulement des variables scalaires.
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 8
Autre algorithme de multiplication russe
Algorithme 1
Problème Algorithme 2
Algorithme 3
Exemples
- Tri : |x| est le nombre d'entiers à ordonner
- Multiplication : |x| est le nombre de chiffres (ou bits) des facteurs
Approches d’analyse
- Empirique : programmation + exécution avec plusieurs exemplaires
- Théorique : déterminer la quantité de ressources (temps, mémoire,...) en
fonction de la taille des exemplaires
- - - - 31405
2 1 1 oui
0 non 13405
3 4 2 non
4 0 3 oui
2 oui 13045
1 oui 10345
0 non 01345
5 5 4 non 01345
Trace
U : meilleur cas pour insert
V : pire des cas pour insert
V : meilleur cas pour select
U : pire des cas pour select
Conclusion
analyse au pire cas de insert et select
nous allons voir que insert et select sont de l'ordre de n2, où n = |x|
Autrement si
n : taille de l’exemplaire
t(n) : temps d'exécution de A sur M
t'(n) : temps d'exécution de A sur M'
t"(n) : temps d'exécution de A’ sur M
6 t'(n)
n t(n) t'(n) t"(n) 10
5
10 1/10 s 2 ms 10 s 10
20 2 mn 1s 1mn 4 1 jour
10
t"(n)
30 10 jours 3 heures 5 mn 3
10 1 heure
38 1 année 4 mois 10 mn 2
10
45 - 1 année 20 mn
1 minute
10
200 - - 1 jour
1500 - - 1 année
Taille de l'exemplaire
Définition
f0 = 0, f1 = 1
fn = fn-1 + fn-2 pour n ≥ 2
De Moivre
fn = 1/√5 [ Φn - (-Φ)-n ]
où Φ = (1 + √5)/2 le nombre d'or
fonction fib1(n)
si n < 2 alors retourner n
sinon retourner fib1(n-1) + fib1(n-2)
fonction fib2(n)
i 1, j 0
pour k 1 jusqu'à n faire
ji+j
ij-i
retourner j
fib1 8 ms 1s 2 mn 21 j - - - -
Contenu
1 Notations asymptotiques
2 Analyse des algorithmes itératifs
3 Résolution d’équations de récurrences
4 Analyse des algorithmes récursifs
Définitions
O(f(n)) est appelé l'ordre de f(n)
t(n) ∈ O(f(n)) ⇒ t(n) est dans l'ordre de f(n)
t(n) : temps d'exécution d'un algorithme ⇒ algorithme est de l'ordre de f(n)
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 28
t(n) ∈ O(f(n))
temps
c f(n)
t(n)
n0 n
Omega de f(n)
Ω(f(n)) = {t : N → R* / (∃ c ∈ R+) (∃ n0 ∈ N) (∀ n ≥ n0) [t(n) ≥ c f(n)]}
temps
c1 f(n)
t(n)
c2 f(n)
n0 n
Algorithmes analysés
Calcul de Fibbonacci
Tri par selection
Tri par insersion
Calcul du PGCD
fonction fib2(n)
i ← 1, j ← 0 a
⇒ t(n) ∈ O(log n)
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 38
Analyse de select
Procédure select (T[1...n])
pour i ← 1 jusqu'à n-1 faire
minj ← i, minx ← T[i] a
pour j ← i+1 jusqu'à n faire
si T[j] < minx alors
minj ← j b c
e
minx ← T[j]
T[minj] ← T[i]
d
T[i] ← minx
⇒ t(n) ∈ O(n2)
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 39
Analyse de l'algorithme d'Euclide
calcul du PGCD de deux nombres
fonction Euclide(m,n)
tant que m > 0 faire
t <-- n mod m
n <-- m
m <-- t
retourner n
fonction fib1(n)
si n < 2 alors retourner n
sinon retourner fib1(n-1) + fib1(n-2)
supposons que les k racines : r1, r2, ..., rk (réelles ou complexes) sont
distinctes alors :
tn = Σ1 ≤ i ≤ k ci(ri)n
où ci (1 ≤ i ≤ k) constantes déterminées par les conditions initiales
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 42
Calcul du nombre de Fibonacci
f0 = 0 et f1 = 1 (1)
fn = fn-1 + fn-2 (2)
⇒ fn = c1 r1n + c2 r2n
1 2 3
Exercice
1 Comment allez-vous faire pour déplacer 3 disques ?
2 Décrire un algorithme de la solution.
3 Faire la trace pour m = 3.
4 Déterminer le nombre de déplacements en fonction de m.
5 Déduire l’efficacité de l’algorithme.
6 Estimer le temps si m = 64 et si un déplacement prend 1 seconde.
7 Démontrer l’optimalité de l’algorithme.
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 47
Trace pour m = 3
1 2 3 1 2 3 1 2 3
1 2 3 2 3
1 1 2 3
1 2 3 2 3
1 1 2 3
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 48
Tours de Hanoï
1 2 3
Calculons t(m)
t(m) = 2[ 2 t(m-1) + 1 ] + 1 = 22 t(m-2) + 2 + 1
= 22[ 2 t(m-3) + 1 ] + 2 + 1 = 23 t(m-3) + 22 + 2 + 1
= ..........
= 2k t(m-k) + 2k-1 + ... + 2 + 1
= ..........
= 2m-1 t(1) + 2m-2 + ... + 2 + 1 = 2m-1 + 2m-2 + ... + 21 + 20
= (2m - 1) / (2 - 1) = 2m - 1
donc t(m) ∈ O(2m).
H(3,1,2)
H(0,1,3) 12 H(0,3,2) H(0,2,1) 23 H(0,1,3) H(0,3,2) 31 H(0,2,1) H(0,1,3) 12 H(0,3,1)
Plan
1 Fouille dichotomique
2 Multiplication des grands nombres
3 Multiplication matricielle
4 Exponentiation discrète
fonction DPR(x)
si x est suffisamment petit alors retourner ADHOC(x)
décomposer x en sous-exemplaires x1, x2, ..., xk
pour i 1 jusqu'à k faire yi <-- DPR(xi)
combiner les yi pour obtenir une solution y
retourner y
b pour n = 1
T(n) = aT(n/c) + bn pour n > 1
est :
O(n) si a < c
T(n) ∈ O(n log n) si a = c
O(nlog a) si a > c, où le logarithme en base c
fonction dichotomique(T[i..j],x)
si i = j alors retourner i
k (i+j+1) div 2
si x < T[k] alors retourner dichotomique(T[i..k-1],x)
sinon retourner dichotomique(T[k..j],x)
Solution :
Algorithme de multiplication classique ∈ O(n2)
Algorithme de multiplication DPR ∈ ?
n n/2 n/2
u w x v y z
u = 10sw + x
v = 10sy + z où 0 ≤ x, z < 10s et s = n/2
u = 10sw + x
v = 10sy + z où 0 ≤ x, z < 10s et s = n/2
Fouad
Ali p grand premier Bahia
g / 2 ≤ g ≤ p-1
A / A aléatoire B / B aléatoire
A<p B<p
a = gA mod p b = gB mod p
x = bA mod p y = aB mod p
fonction expod2(g,A,p)
a1
pour i 1 jusqu'à A faire a a g mod p
retourner a
20 Kg
15 Kg
10 Kg
Capacité = 40 Kg
8 Kg
Solution optimale
Pas de solution
alors qu’elle existe
1
50
10
étape v C D
100 30 - - {2,3,4,5} [50,30,100,10]
5 2
2 5 {2,3,4} [50,30,20,10]
10 2 4 {2,3} [40,30,20,10]
20 5 3 3 {2} [35,30,20,10]
4 3
50
Nous pouvons améliorer tout ordre de service où un client est servi avant un autre
nécessitant moins de temps
⇒ optimalité de l’algorithme
1 2 5
L'algorithme vorace :
4
- Choisir une couleur et un sommet comme point de départ
- Considérer les autres sommets et essayer de les colorer par cette couleur
- Lorsqu'on ne peut plus faire de progrès choisir une nouvelle couleur et un
nouveau point de départ non coloré
- Colorer tout ce qui est possible avec cette deuxième couleur
- ainsi de suite.
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 82
Exemple 4 : Coloration d’un graphe
2-coloration 3-coloration
Remarques
Un algorithme basé sur une heuristique vorace permet la possibilité de trouver une
"bonne" solution mais pas la certitude
l’algorithme exhaustif qui produit une solution optimale est exponentiel
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 83
Exemple 5 : Feux de signalisation
E
D
Considérons 5 artères : A, B, C, D et E.
A
C
D et E sont des artères à sens unique
BA BC BD
AC DA
DA DB DC
BD EB
EA EB EC ED
Solution optimale car le sous-graphe composé des sommets AC, DA, BD et EB est un
graphe complet de 4 sommets et nécessite par conséquent quatre couleurs.
Les sommets de la même couleur correspondent aux itinéraires sans collision. Les quatre
couleurs correspondent aux quatre phases nécessaires du système de signalisation
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 85
Exercices
Exercice 1 : Résoudre le problème de signalisation pour le carrefour suivant :
C A
Contenu
Coefficient du binôme
Principe d’optimalité
Multiplication chaînée de matrices
Plus courts chemins
Coefficient binomial
C(n,k) = C(n-1,k-1) + C(n-1,k) si 0 < k < n
= 1 autrement
fonction C(n,k)
si k=0 ou k=n alors retourner 1
sinon retourner C(n-1 , k-1) + C(n-1 , k)
C(4,1) C(4,2)
n 1 C(n,k)
Exercice : Décrire cet algorithme. Montrer qu’il demande un espace dans O(k) et un
temps dans O(nk) si on compte chaque addition à coût unitaire.
Exercice : Parmi les algorithmes du calcul des nombres de Fibonacci, lequel est un
algorithme de programme dynamique ?
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 90
Principe d’optimalité
La programmation dynamique est souvent utilisée pour résoudre des problèmes
d'optimisation qui satisfont le principe d'optimalité suivant :
Principe d'optimalité : Dans une séquence optimale de décisions ou de choix,
chaque sous-séquence doit être optimale.
Exemple : le problème du plus court chemin vérifie le principe d’optimalité
Exercice : Le principe d'optimalité s'applique-t-il au problème du plus long
chemin simple entre deux villes ? Un chemin simple va directement de ville en
ville sans passer deux fois par la même ville (sans cycle).
5 50 5 15
30
2 3
15
D0 = L = et D4 =
0 5 ∞ ∞ 0 5 15 10
50 0 15 5 20 0 10 5
30 ∞ 0 15 30 35 0 15
15 ∞ 5 0 15 20 5 0
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 99
Chapitre 6 : Transformation du domaine
Soit f : Dt → D une fonction à calculer.
Une transformation consiste en :
- domaine R t f
D D
- injection F : D → R
- fonction g : Rt → R Φ Φ −1
g
tel que : f = F-1 ogoF t
R R
Contenu
Multiplication symbolique de deux polynômes
Transformée de Fourrier
Transformée de Fourier inverse
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 100
Exemples de transformation du domaine
Produit de deux nombres positifs
D = ℜ+*, f(u,v) = u*v , R = ℜ et F (u)= ln u et g(x,y) = x+y
f
(u,v) u*v
ln
e
g
(ln u,ln v) ln u + ln v
algorithme classique
∈ O(d2) en comptant les opérations scalaires comme élémentaires.
Transformation du domaine f
p (x ),q (x ) r(x )
f : multiplication symbolique
−1
Φ : évaluation en 2d - 1 points ∈ O(d2) Φ Φ
g
g : multiplication ponctuelle) p ( x i) ,q ( x i) r ( x i) = p ( x i) q ( x i)
i= 0 ,1 ,...,2 d - 2 i= 0 ,1 ,...,2 d - 2
F-1 : interpolation
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 102
Exemple de la multiplication de deux
polynômes
p(x) = 2x - 1 et q(x) = x - 1
r(x) = p(x)q(x) = (2x – 1)(x – 1) = 2x2 – 3x + 1
Caractéristiques
Hasard peut prendre certaines décisions
Différentes exécutions sur le même exemplaire peuvent produire des résultats
différents
Conflit avec la définition d’un algorithme
Contenu
Ali Baba et les 40 voleurs
Calcul de Π
Intégration numérique
Test de primalité
Algorithmes génétiques
Algorithmique et complexité de calcul, M. Eleuldj, EMI, Avril 2008 113
Exemple 1 : Ali Baba et les 40 voleurs
Hypothèses
Valeur du trésor est T Trésor? 5 jours Trésor ?
les voleurs prélèvent chaque nuit un montant x
Une fois sur place Ali Baba peut reconnaître le trésor
4 jours de calcul pour déterminer le lieu exact 5 jours 5 jours
Indication de Jouha moyennant 3x
Solutions
S1 = T – (4 + 5)x = T – 9 x Ali Baba
S2 = T – (3 + 5)x = T – 8 x
S3 = T - 5x
=T - 10 x ⇒ espérance = (T - 5 x)/2 + (T – 10 x)/2 = T – 7,5 x
fonction intégration1(f,n)
k← 0
pour i = 1 à n faire
x ← uniforme(O,1)
y ← uniforme(0,1)
si y ≤ f(x) alors k ← k + 1
retourner k/n
Remarque
Algorithme1 et 2 sont intéressants car les algorithmes systématiques ne donnent
que des valeurs approximatives
Remarques
• Cas favorable : n =1 x 2 x 3 x … x (n-1) = n!
• Pire cas : n non premier mais est le produit de deux nombres premiers
• n = 2623 = 43x61 ⇒ fiabilité = 2%
• Plusieurs tests permettent d’augmenter la fiabilité
• Il existe d’autres moyens qui donnent des tests plus précis
j Algorithme A Algorithme Bj i’
Exemples
Réalisation d’une application = Compilation + exécution
Recherche dans un ensemble = Construction du tas + recherche binaire en O(log n)
Evaluation répétée d’un polynôme = forme pré-conditionnée + évaluation
Hypothèses
Coefficient entiers
Évaluation pour des valeurs entières
Polynôme unitaires
n = 2k – 1
Comptage du nombre de multiplications
Dynamique 12 2n – 2
Horner 6 n–1