Multiplication rapide de matrices et applications - IMJ-PRG

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.
Deux types d’applications sont proposées. La première, concerne l’algorithmique
des graphes, par exemple la détection de cycles ou l’existence d’un couplage parfait
dans un graphe biparti.
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.
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=(a12 a22)(b21 +b22)M2=(a11 +a22)(b11 +b22)
M3=(a11 a21)(b11 +b12)
M4=(a11 +a12)b22 M5=a11(b12 b22)
M6=a22(b21 b11)M7=(a21 +a22)b11.
(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
Alors, posant
c11 =M1+M2M4+M6c12 =M4+M5
c21 =M6+M7c22 =M2M3+M5M7,
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 probabilité 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(Bx) 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.
MULTIPLICATION RAPIDE DE MATRICES ET APPLICATIONS 3
2. Calcul d’inverse
Dans cette partie il conviendra de se placer sur les réels ou dans un corps fini.
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 A12S1
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 =SA22 U=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 A
est à coefficients réels, la formule A1=(tA A)1 tAentraî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
(sommets) et d’une partie Ede S×S, l’arête (a,b) reliant le sommet aau sommet b.
Supposons Sfini, de cardinal n, et notons {a1, ..., an} ses sommets. La matrice d’ad-
jacence 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 multiplication usuelle, l’addition et la multiplication étant
remplacées par et respectivement. 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=jtels que (ais1,ais) soit une arête de Gpour s{1,...,k}.
(Si l’on considérait la matrice Acomme à 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%

Multiplication rapide de matrices et applications - IMJ-PRG

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 !