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 1−d
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 (ais−1,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, ..., xn−1), 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.