Multiplication rapide de matrices et applications
Préparation à l’agrégation - option Calcul formel
Antoine Chambert-Loir
On discute dans ce texte de quelques algorithmes permettant de multiplier rapide-
ment des matrices et de l’utilité que cela peut avoir.(1)
Le premier est algorithme de multiplication rapide est dû à V. STRASSEN (1969) et
son amélioration à S. WINOGRAD (1971). Si la multiplication naïve de matrices carrées
de taille nrequiert O(n3) opérations (i.e. additions et multiplications), il est possible
d’utiliser seulement O(n2.81) opérations par une technique de division pour régner. En
poursuivant dans cette direction, il serait possible de considérer des algorithmes plus
sophistiqués n’utilisant que O(n2.38) opérations (COPPERSMITHWINOGRAD, 1981)
mais cela dépasse le niveau de ce texte. Nous étudierons aussi un algorithme rapide
d’inversion de matrice, toujours de type diviser pour régner.
Parallèlement, nous vérifierons rapidement qu’un produit de matrices est correct :
il s’agit du test probabiliste de R. FREIVALDS (1979) qui ne demande que O(n2) opéra-
tions.
Les applications proposées concernent l’algorithmique des grpahes, notamment la
détection de cycles ou l’existence d’un couplage parfait dans un graphe biparti.
1. Multiplication rapide
1.1. Strassen. — Le premier algorithme de multiplication rapide est fondé sur l’ob-
servation de STRASSEN que le produit de matrices 2 ×2 peut être effectuée avec
seulement 7 multiplications, et non 8 avec les formules classiques. En effet, si
A=µa11 a12
a21 a22,B=µb11 b12
b21 b22, on peut poser
M1=(a11 a22)(b21 +b22)M2=(a11 +a22)(b11 +b22)
M3=(a11 a21)(b11 +b12)
M4=(a11 +a22)b22 M5=a11(b12 b22)
M6=a22(b21 b11)M7=(a21 +a22)b21.
Alors, posant
c11 =M1+M2M4+M6c12 =M4+M5
c21 =M6+M7c22 =M2M3+M5M7,
(1)Plus que largement inspiré d’un projet d’informatique proposé par F. Magniez, cf. http://www.
enseignement.polytechnique.fr/informatique/IF/projets/magniez/sujet.html
2ANTOINE CHAMBERT-LOIR
on a C=AB =µc11 c12
c21 c22.
Lorsque A,B,Csont des matrices de taille 2m, on peut les écrire par blocs et calculer
Cà l’aide de 7 produits de matrices de taille m. De la sorte, notant M(n) le nombre de
multiplications de scalaires requises par la multiplication de matrices de taille n, on a
l’inéquation fonctionnelle
M(n)67M(dn/2e),
d’où M(n)6O(nσ), avec σ=log7/log2 2.807 62.81.
En pratique, le O contient une « constante implicite » et il convient de vérifier en
pratique à partir de quel entier n, la méthode de STRASSEN devient plus compétitive
que la méthode naïve.
1.2. Winograd. — La méthode de Winograd est fondée sur des formules analogues,
mais plus compliquées : avec les mêmes notations pour A,B,C, on peut en effet cal-
culer Cvia les formules
c11 =M2+M3c12 =T1+M5+M6
c21 =T2M7c22 =T2+M5
dans lesquelles on a posé
S1=a21 +a22 S2=S1a11 S3=a11 a21 S4=a12 S2
S5=b12 b11 S6=b22 S5S7=b22 b12 S8=S6b21
M1=S2S6M2=a11b11 M3=a12b21 M4=S3S7
M5=S1S5M6=S4b22 M7=a22S8
T1=M1+M2T2=T1+M4.
1.3. Vérification. R. FREIVALDS a observé que pour deux matrices Aet Bdistinctes,
la proabilité que AX 6= B X lorsque Xest un vecteur aléatoire à coordonnées 0 ou 1
(équiprobables) est au moins égale à 1/2.
Pour vérifier la justesse d’un produit C=AB, on peut se contenter de vérifier que
pour un certain nombre de tels X, on a bien l’égalité C X =A(B X ). Le nombre d’opéra-
tions utilisées pour chaque vérification est en O(n2).
Si C=AB, alors on a toujours C X =A(B X ). Dans le cas contraire, si C6= AB et qu’on
répète Tfois cette vérification avec Tvecteurs tirés au sort (indépendants), la proba-
bilité d’avoir C X 6= A(B x) au moins une fois est égale à 1 1/2T. La probabilité de se
tromper, c’est-à-dire de croire à tort que le calcul est juste, est donc de 1/2T.
2. Calcul d’inverse
Dans cette partie il conviendra de se placer sur les réels ou dans un corps fini.
MULTIPLICATION RAPIDE DE MATRICES ET APPLICATIONS 3
Supposons que Aest une matrice inversible. Or, pour une telle matrice A=
µA11 A12
A21 A22, alors A1se calcule par blocs, à savoir :
A1=µA1
11 +A1
11 A12S1A21 A1
11 A1
11 A21S1
S1A21 A1
11 S1,
où la matrice Sest donnée par S=A22 A21 A1
11 A12.
Les formules suivantes, à la Strassen, conviennent aussi : on pose
P=A1
11 Q=A21P R =PA12
S=A21R T =SA22U=T1
B12 =RU B21 =UQ B22 = −U B11 =PRB21
et A1=µB11 B12
B21 B22.
En fait, ces formules ne conviennent que lorsque A11 et A22 sont inversibles (c’est la
situation générique dans l’ensemble des matrices inversibles). Lorsque la matrice Aest
à coefficients réels, la formule A1=(ATA)1TAentraîne que, au prix d’une multipli-
cation de matrice supplémentaire, il suffit de savoir inverser les matrices symétriques
inversibles définies positives.
3. Théorie des graphes
3.1. Couplages parfaits. On appelle graphe équibiparti la donnée d’un triplet G=
(A,B,E), où Aet Bsont des ensembles disjoints (sommets) de même cardinal (fini) et E
une partie de A×B: le couple (a,b) est une arête reliant l’élément ade Aà l’élément b
de B. Un couplage parfait C est un sous-ensemble de Equi apparie chaque sommet
de Aavec un (et un seul) sommet de B. On présente ici l’approche de MULMULEY et.
al. (1987) pour détecter l’existence de couplages parfaits.
Soit nle cardinal de Aet notons {a1, .. ., an}, {b1,..., bn} les éléments de Aet de B.
Introduisons alors des indéterminées xi,jpour 1 6i,j6n. Considérons la matrice M
de taille n×ndonnée par Mi,j=1 si (ai,bj) est une arête de Eet Mi,j=0 sinon.
Le déterminant det(M) de Mest donc un polynôme de degré nen les xi,j. La formule
générale pour le déterminant montre que ce polynôme est formé des monômes de la
forme x1,σ(1)x2,σ(2) · · · xn,σ(n)σest une permutation de {1,...,n} telle que chacune
des arêtes (a1,bσ(1)),.. . ,(an,bσ(n)) soit dans E. Une telle permutation fournit immédia-
tement un couplage parfait ; autrement dit, le graphe équibiparti G admet un couplage
parfait si et seulement si le polynôme det(M)n’est pas identiquement nul.
Cette dernière vérification peut être faite de manière probabiliste en spécifiant des
valeurs aléatoires aux indéterminées et en testant l’annulation du déterminant obtenu.
On a en effet le lemme suivant :
4ANTOINE CHAMBERT-LOIR
Lemme 3.2. — Soit P un polynôme non nul de degré d en m variables à coefficients
dans un corps commutatif K . Soit S une partie de K de cardinal s >d ; la probabilité
que P ne s’annule pas en un élément de Smpris au hasard est au moins 1d
s.
3.3. Cycles. — Soit G=(S,E) un graphe, c’est-à-dire la donnée d’un ensemble S(som-
mets) et d’une partie Ede S×S, l’arête (a,b) reliant le sommet aau sommet b. Suppo-
sons Sfini, de cardinal n, et notons {a1, .. ., an} ses sommets. La matrice d’adjacence du
graphe Gest la matrice Adont le coefficient (i,j) vaut 1 si (ai,aj) est une arête de G,
et 0 sinon.
On considérera cette matrice comme à coefficients dans l’algèbre de Boole Bdéfini
comme suit : B={0,1}, muni des deux lois binaires (ou logique) et (et logique). La
multiplication booléenne des matrices à coefficients dans Best définie comme la mul-
tiplication usuelle, l’addition et la multiplication étant remplacées par et respecti-
vement. Alors, le coefficient (i,j) de la matrice Akvaut 1 si et seulement s’il existe un
chemin de longueur kreliant aiàaj, c’est-à-dire une suite d’entiers i=i0,i1,... , ik=j
tels que (ais1,ais) soit une arête de Gpour s{1,. . . ,k}. (Si l’on considérait la matrice A
comme à coefficients dans Z, le coefficient (i,j) de la matrice Akserait égal au nombre
de tels chemins reliant aiàaj.)
Grâce à l’algorithme d’exponentiation binaire (élévations successives au carré), le
calcul de Akpeut être fait par O(logk) multiplications de matrices. Chacune de ces
multiplications sera effectuée avec l’algorithme de STRASSEN convenablement adapté.
(On peut aussi considérer que les coefficients de Asont entiers.)
4. Suggestions
On pourra programmer les algorithmes proposés, en évaluer le temps de calcul en
fonction de la taille des matrices en jeu (prendre des matrices aléatoires) et le comparer
à la complexité théorique (nombre d’additions et surtout de multiplications dans le
corps de base).
Pour l’implémentation éventuelle, vous pourrez supposer que les matrices sont de
taille une puissance de 2, c’est-à-dire n=2k; vous pourrez éventuellement expliquer
comment traiter le cas général, voire le faire.
Le test de Freivalds permettra de vérifier la véracité (probable) des calculs donc la
correction des programmes. Quelques raffinements de ce test sont possibles :
(1) Plutôt que de choisir des vecteurs aléatoires dans {0, 1}n(ou dans un en-
semble Sn,Sétant une partie de K), vous pourrez étudier la possibilité de choisir
des vecteurs de la forme (1, x, .. ., xn1), où xest aléatoire ;
(2) Vous pourriez choisir un nombre premier passez grand, mais pas trop, et
tester la relation C X =A(B X ) modulo p.
On pourra aussi adapter l’algorithme d’inversion pour détecter si une matrice
réelle est inversible. Que se passe-t-il sur un corps fini ? Adapter aussi cet algorithme
pour calculer le déterminant d’une matrice.
MULTIPLICATION RAPIDE DE MATRICES ET APPLICATIONS 5
Démontrer le lemme du paragraphe 3.1. Essayer aussi de choisir des vecteurs aléa-
toires d’une forme particulière, comme dans le test de Freivalds. Pour l’application aux
couplages parfaits, pouvez-vous faire les calculs modulo un petit nombre premier ?
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !