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