G. Falquet, CUI, Université de Genève 5 de 13
Exemple pn bien amélioré
Observation :
p2n = (pn)2
p2n+1 = (pn)2 . p1
Exemple :
p26 = (p13)21 multiplication
où p13 = (p6)2 . p 2 multiplications
où p6 = (p3)21 multiplication
où p3 = (p)2 . p 2 multiplications
EN TOUT 6 multiplications (à la place de 25)
Nombre d’étapes : log2(n)
À chaque étape 1 ou 2 multiplications ==> T(n) ≤ 2 . log2(n)
G. Falquet, CUI, Université de Genève 6 de 13
Algorithme (récursif)
On définit une fonction récursive
fonction puissance(p, n) {
si ( n = 0 )
retourne 1
sinon {
y ← puissance(p, n/2)
y ← y * y
si ( n mod 2 = 1) y ← y * p
retourne y
}
}
G. Falquet, CUI, Université de Genève 7 de 13
Cas de complexité
À cause des instructions si et tant que
Un algorithme ne suite pas toujours le même chemin pour résoudre un problème.
=> Pour deux problèmes de taille n il peut exécuter des nombres différents
d’opérations.
=> La complexité n’est pas constante pour un problème de taille n
Exemple intuitif
Pour un "processeur" humain, il est plus facile de trier la liste
(2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
que la liste
(34, 1, 101, 3, 8, 221, 14, 71, 6, 106, 93, 2, 88)
G. Falquet, CUI, Université de Genève 8 de 13
Définition des cas de complexité
Pour un algorithme donné et un problème de taille n on distingue
Le meilleur des cas
les données qui font que la complexité est minimale
– pour certains algo de tri: liste déjà dans l’ordre
– résoudre une équation dont tous les coefficients sont nuls
Le pire des cas
nombre maximum d’opération que peut faire l’algorithme
— pour certains algo de tri: liste dans l’ordre inverse ou liste déjà triée
Le cas moyen
le nombre moyen d’opérations calculé sur tous les problèmes de taille n
difficile à définir