Académique Documents
Professionnel Documents
Culture Documents
Cours 03
Master Théorème
Multiplication de matrices
Algorithme de Strassen
Limite inferieure de la complexité des algorithmes de tri qui utilisent la
comparaison comme opération fondamentale
Prof. Allaoua Refoufi
Université de Setif
Dpt Informatique
Email :allaoua.refoufi@univ-setif.dz
Lien du cours 03 sur Youtube :https://youtu.be/6csxAolWliM
Master théorème
𝐴𝐸 + 𝐵𝐺 𝐴𝐹 + 𝐵𝐻
XY= Il ne nous reste plus qu’à appliquer
𝐶𝐸 + 𝐷𝐺 𝐶𝐹 + 𝐷𝐻
la stratégie « diviser pour régner » en calculant récursivement les
produits matriciels AE, BG et ainsi de suite, qui sont des matrices de
dimension n/2 par n/2
On a alors 8 sous problèmes de dimension n/2. Pour recomposer la
solution initiale on doit faire 4(n/2)2 additions, en effet le produit AE
par exemple contient (n/2)2 éléments.
Il vient alors que T(n) = 8T(n/2) + n2 ce qui donne d’apres le Master
Théorème (a=8,b=c=2) T(n) =(n3) ce qui n’est guère une amélioration
par rapport à la méthode classique.
En 1969, le mathématicien allemand Volker Strassen annonça une
amélioration significative de la complexité du produit matriciel basée
sur le paradigme “diviser pour régner”
L’idée de Strassen est d’utiliser seulement 7 multiplications au lieu de
8 par une décomposition un peu étrange :
𝑃5 + 𝑃4 − 𝑃2 + 𝑃6 𝑃1 + 𝑃2
XY =
𝑃3 + 𝑃4 𝑃1 + 𝑃5 − 𝑃3 − 𝑃7
où
P1 = A(F −H) P5 = (A+D)(E+H)
P2 = (A + B)H P6 = (B-D)(G+H)
P3 = (C + D)E P7 = (A-C)(E+F)
P4 = D(G−E)
On vérifie par exemple que P3+P4 =(C+D)E+D(G-E) =CE +DG
La relation de récurrence devient T(n) = 7T(n/2) + O(n2), qui a pour
solution O(nlog7) ≈ O(n2.81).
Une limite inferieure (nlogn) pour les algorithmes
de tri
a<c b<c
Une flèche vers la gauche indique que la condition est FAUSSE, à droite la
condition est VRAIE
Par exemple si a < b et b < c alors on aura comme sortie la liste (a,b,c)
La hauteur de cet arbre –le nombre de comparaisons sur le plus long chemin
de la racine à une feuille de l’arbre , dans cet exemple 3 – est precisément la
complexité dans le pire des cas de cet algorithme.
Si on généralise on peut affirmer que tout arbre qui tri n éléments doit avoir n!
feuilles, c’est-à-dire toutes les permutations des n nombres en entrée. Sinon
l’algorithme serait faux.
Sachant qu’un arbre binaire de hauteur h possède 2 h feuilles (preuve par
induction), il en ressort que notre algorithme va avoir comme complexité
log(n!) .
Il suffit donc d’evaluer log(n!) en utilisant la formule de Stirling.
On a alors n! 𝑛𝑛 𝑒 _𝑛 2𝑛
2