You are on page 1of 93

Licence dinformatique.

Algorithmique et programmation.
Cours avanc
Jacques Stern
Anne 20102011

Table des matires


1 Algorithmes : conception et valuation
Algorithmes approchs et analyse amortie

1.1
1.2

Algorithmes approchs . . . . . . . . . . . . . . . . . . . . . .
Analyse amortie . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
7

2 Tri et hachage
11
Le tri de Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Tris de Shell deux passes . . . . . . . . . . . . . . . . . . . . 12
Tris plus de deux passes . . . . . . . . . . . . . . . . . . . . 18

Tri de Shell

2.1
2.2
2.3

3 Recherche de motifs
21
Extraction et alignements pour deux suites . . . . . . . . . . . 21
Alignement de plusieurs suites . . . . . . . . . . . . . . . . . . 25

Algorithmes dalignement en bio-informatique

3.1
3.2

4 Arbres
29
Arbres binomiaux et tas binomiaux . . . . . . . . . . . . . . . 29
Tas de Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . 31

Structures de donnes fusionnables

4.1
4.2

5 Graphes
36
Graphes dexpansion et valeurs propres . . . . . . . . . . . . . 36
Applications algorithmiques . . . . . . . . . . . . . . . . . . . 38

Graphes dexpansion

5.1
5.2

6 Flots
42
Flots bloquants . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Graphes unitaires et applications . . . . . . . . . . . . . . . . 47

Mthode de flot bloquant

6.1
6.2

7 Entiers
51
Symboles de Legendre et de Jacobi . . . . . . . . . . . . . . . 51
Tests de primalit . . . . . . . . . . . . . . . . . . . . . . . . . 56
Dcomposition dun entier en somme des quatre carrs . . . . 58

Tests de primalit ; sommes de quatre carrs

7.1
7.2
7.3

8 Transformation de Fourier rapide


63
Transformation de Fourier dans un anneau . . . . . . . . . . . 63
Multiplication rapide des entiers . . . . . . . . . . . . . . . . . 67

Algorithme de multiplication rapide des entiers

8.1
8.2

9 Algbre linaire et gomtrie des nombres


71
Rseaux coordonnes entires . . . . . . . . . . . . . . . . . 71
Algorithme LLL . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Algorithme LLL de rduction des rseaux

9.1
9.2

10 Programmation linaire
Algorithme de Khachyan

10.1 Ellipsodes . . . . . . . . . . . . . . . .
10.2 Lalgorithme de Khachyan . . . . . . .
10.3 Conclusion : algorithme de complexit
programmation linaire . . . . . . . . .

80
. . . . . . . . . . . . . 80
. . . . . . . . . . . . . 81
polynomiale pour la
. . . . . . . . . . . . . 84

11 Polynmes une variable


87
11.1 Lalgorithme de Berlekamp . . . . . . . . . . . . . . . . . . . . 87
11.2 Algorithme de Cantor-Zassenhaus . . . . . . . . . . . . . . . . 90
Algorithme de Berlekamp

Cours 1

(5 octobre)

Algorithmes : conception et
valuation
Algorithmes approchs et analyse amortie

1.1
1.1.1

Algorithmes approchs
Prsentation

Le but de cette partie est de prsenter des exemples dalgorithmes permettant de rsoudre de manire approche un problme doptimisation dont
le problme de dcision associ est connu comme NP-complet. Le problme
choisi est le bin packing (en franais problme de placement ou empaquetage). Lintrt du problme est double. Dune part, il existe des algorithmes
pratiques et efficaces avec une garantie de performance, ce qui veut dire que la
solution trouve par lalgorithme est dans un rapport constant de loptimum.
Dautre part, il existe des algorithmes (thoriques) donnant ce rapport une
valeur aussi proche que possible de 1. En dautres termes, mme si le problme est NP-complet, on peut sapprocher autant quon veut de loptimum
par un algorithme polynomial. Toutefois, le degr du polynme qui mesure
la complexit augmente avec la prcision choisie.
Le problme du bin packing snonce de la manire suivante : tant
donns un entier n et un ensemble U = (u1 , , un ) de n objets, auxquels
est associe une taille s(ui ) [0, 1], trouver une partition de U en k sousensemble X de U , k tant choisi minimum et chaque ensemble X de la
partition tel que
X
s(ui ) 1
iX

En dautres termes, on place les objets ui dans des botes de taille 1 et on


cherche minimiser le nombre de botes ncessaires.

1.1.2

Algorithmes pratiques

Lalgorithme le plus simple est first fit ou FF : on prend les objets de U


lun aprs lautre et on place chaque objet dans la premire bote possible. En
notant Xj [`] lensemble des objets placs dans la j-ime bote aprs quaient
t traits les objets u1 , u`1 , on choisit donc le plus petit indice j, tel que
X
s(ui ) + s(u` ) 1
iXj [`]

et on ajoute u` Xj [`] pour former Xj [` + 1], les autres Xq [`], q 6= j, tant


inchangs.
Lemme 1 Soit I une instance du problme bin packing et soit OP T (I)
loptimum correspondant ; on a
F F (I) 2.OP T (I) + 1
Preuve On note dabord que, puisque pour chaque lment Xj de la partition
optimale, on a :
X
s(ui ) 1,
iXj

il vient

n
X
i=1

s(ui )

XX
j

s(ui ) k = OP T (I).

iXj

Par ailleurs, on ne peut trouver dans la partition obtenue par lalgorithme


FF deux botes Xj et Xj 0 , j < j 0 , moiti vides, cest dire telles que
X
s(ui ) 1/2;
iXj

en effet, au moment o un premier objet est plac dans Xj 0 , la place disponible


dans Xj permet lajout de cet objet, contredisant ainsi la rgle de placement
de lalgorithme. En notant j0 lindice de lunique bote moiti vide, si elle
existe, a donc pour j 6= j0 :
X
s(ui ) 1/2.
iXj

En sommant, il vient :
n
X
i=1

s(ui )

XX

s(ui ) (k 1) 1/2 =

j6=j0 iXj

P
Finalement, la somme ni=1 s(ui ) est minore par
quon la vu plus haut, par OP T (I). Il vient

F F (I) 1
.
2

F F (I)1
2

et majore, ainsi

F F (I) 1
OP T (I),
2
et donc
F F (I) 2.OP T (I) + 1.
On peut en fait dmontrer par une combinatoire un peu plus fine que
F F (I) 17/10.OP T (I) + 2 (voir [2]). En effectuant, pralablement lexcution de lalgorithme FF, un tri rangeant les objets par taille dcroissante, on
amliore la garantie de performance qui devient F F D(I) 11/9.OP T (I)+2.

1.1.3

Un algorithme thorique

Le rsultat expos dans cette section est d de la Vega et Lueker [5]. Il


apparat galement dans [4].
Thorme 1 Pour tout , 0 < 1/2, il existe un algorithme polynomial
A qui calcule pour toute instance I du problme bin packing une solution
utilisant un nombre de botes major par (1 + 2)OP T (I) + 1.
La preuve se fait en plusieurs tapes.
On commence par se restreindre aux instances telles que s(ui ) soit toujours et ne prenne que K valeurs distinctes, et K tant fixs. On pose
M = b1/c. Pour tout placement, chaque bote contient au plus M objets.
En notant t1 , , tK , les valeurs possibles prises par s, on dfinit le type
dune bote comme la suite n1 , , nK , chaque ni tant le nombre de fois o
un objet de taille ki apparat dans la bote. Le nombre de types possibles de
botes est major par une constante T qui est le nombre de possibilits de
rpartir M objets en K sous
 ensembles.
 On peut voir que cette constante
M +K
est le coefficient du binme
, ce que le lecteur est invit tablir
K
titre dexercice.
On dit que deux placements sont quivalents, si lun est obtenu partir
de lautre en appliquant U une permutation qui respecte la taille s(u) des
5

objets. A tout placement, on peut associer la fonction dfinie sur U par le


type de la bote dans laquelle un objet est plac. Cette fonction est constante
sur chaque classe et elle est injective sur les classes dquivalence. En effet,
on peut linverser quivalence prs en associant chaque bote un ensemble
dobjets ayant les tailles et les rptitions de tailles prescrites par le type de
la bote. Finalement, le nombre de classes
 est major
 par le nombre de faons
n+T
de rpartir n objets en T , et donc par
, qui est un polynme en
T
n. Loptimum peut ainsi tre trouv par recherche exhaustive sur ce nombre
polynomial de classes.
La seconde tape se restreint toujours aux instances telles que s(ui ) soit
mais abandonne la condition sur le nombre de valeurs distictes. On
commence par trier les objets de U en ordre croissant de taille et on cre
K = d1/2 e groupes dobjets conscutifs ayant tous Q = bn2 c lments
exactement, sauf le dernier groupe moins nombreux. En arrondissant par
excs chaque valeur de s la taille du plus grand objet de chaque groupe, on
est ramen une instance J du cas prcdent.
Lemme 2 On a OP T (J) (1 + ).OP T (I).
Preuve du lemme On introduit linstance J 0 o chaque valeur de s est
arrondie par dfaut la taille du plus petit objet de chaque groupe. A partir
dun placement optimal pour I, on obtient directement un placement pour J 0
ayant le mme nombre de botes, par simple arrondi des tailles. On a donc :
OP T (J 0 ) OP T (I).
De mme, partir dun placement optimal pour J 0 , on dfinit un placement
pour J en remplaant dans chaque bote chacun des Q objets dun groupe
donn par les Q objets du groupe prcdent. Cette opration, qui est le
cur de la preuve est possible car la taille (dans J) de chaque remplaant
est celle (dans J 0 ) de lobjet quil remplace. Bien entendu, lopration de
remplacement ne peut sappliquer aux objets du premier groupe, pusquil ny
a pas de groupe prcedent. On place ces objets dans Q botes supplmentaires.
Finalement,
OP T (J) OP T (J 0 ) + Q OP T (I) + Q OP T (I) + n2 .
On note enfin
P que, en suivant largument de la preuve du lemme 1, on a
OP T (I) i s(ui ) et que cette quantit est n, puisque les objets ont une
taille . En reportant dans lingalit ci-dessus, il vient, comme annonc
dans le lemme :
OP T (J) OP T (I) + .OP T (I).
6

On peut maintenant prsenter lalgorithme dapproximation polynomial


A :
1. enlever les objets de taille ,
2. appliquer lalgorithme dfini la seconde tape linstance J, obtenu
en arrondissant par excs,
3. restaurer les tailles originales des objets,
4. placer les objets de taille par FF.
Si aucune bote supplmentaire nest cre ltape 4, le lemme 2, montre
quon a A (I) (1 + )OP T (I). Sinon, toutes les botes, sauf ventuellement
la dernire sont remplies au moins 1. Il vient, par un argument analogue
celui du lemme 1 :
X
(1 )(A (I) 1)
s(ui ) OP T (I),
i

ce qui donne
A (I)

OP T (I)
+ 1.
1

Comme est 1/2, on peut majorer

1
1

par 1 + 2 On obtient ainsi :

A (I) (1 + 2).OP T (I) + 1.

1.2
1.2.1

Analyse amortie
Prsentation

Le but de cette partie est de prsenter le principe de lanalyse amortie.


Dans certains cas, lanalyse de la complexit dun algorithme par majoration du cot dans le cas le pire nest pas significative. dautres mesures sont
possibles :
lanalyse en moyenne, qui value lesprance mathmatique du temps
de calcul, pour une distribution de probabilit donne sur les instances,
lanalyse amortie qui value la complexit cumule dun grand nombre
dexcutions successives de lalgorithme.
On tudie un algorithme trs simple qui effectue des insertions et des
suppressions dans un tableau et gre lallocation mmoire. Cet algorithme
opre comme suit sur le tableau T , la taille du tableau size, lindice de la
premire place disponible num :
1. initialisation. Un tableau de taille 1 avec num = 0 est cr ;
7

2. insertion non critique si num < size un objet est insr la premire
place disponible ; num est incrment dune unit ;
3. insertion critique si num = size un tableau de taille 2.size est cr ;
les objets de lancien tableau sont recopis ; un nouvel objet est insr
la premire place disponible ; num est incrment dune unit ;
4. suppression non critique si num size/4 lobjet en position num est
supprim ; num est dcrment dune unit ;
5. insertion critique si num = size/4 un tableau de taille size/2 est cr ;
les objets de lancien tableau sont recopis ; lobjet en position num est
supprim ; num est dcrment dune unit ;
Le rsultat quon se propose dtablir est le suivant :
Thorme 2 Le cot dune suite de m insertions et suppressions successives
partir dune initialisation est un O(m).
Preuve On introduit une fonction potentiel (T ) gale
(T ) = 2.num size, si num size/2
(T ) = size/2 num, si num size/2.
Lemme 3 Si ci est le cot de la i-me opration dinsertion ou de suppression et si i est la valeur du potentiel aprs cette i-me opration, on a :
1 ci (i i1 ) 3.
Avant dtablir le lemme, on observe que le thorme sen dduit facilement. En effet, en sommant les ingalits ci-dessus pour les diffrentes valeurs
de i, on obtient
m
X
m
ci m + 0 3m.
i=1

Comme m est major par la taille size du tableau T aprs les m oprations
et que cette taille ne peut dpasser la plus petite puissance de deux qui excde
m, et donc pas 2m, on a bien
m
X

ci = O(m).

i=1

Reste tablir le lemme. Il y a quatre cas traiter. On se borne en


examiner deux.
insertion critique : Le potentiel avant lexcution dune telle insertion est
2.num size = size. Aprs doublement de la taille et insertion, le potentiel
8

devient 2(size + 1) 2.size = 2. La diffrence de potentiel est donc


size 2. Quant au cot c de lopration, il se compose du cot de copie du
plus petit tableau au plus grand, soit size, et de linsertion proprement dite
de cot unitaire. On a ainsi c = 3.
suppression non critique : La quantit size retant inchange, la diffrence
de potentiel est de 2 ou +1 suivant la partie de la fonction linaire par
morceaux qui est utilise. Quant au cot c de lopration, il est unitaire.
On a ainsi c = 3 ou 0.

Bibliographie
[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[2] D. S. Johnson, A. Demers, J. D. Ullman, M. R. Garey, and R. L. Graham.
Worst-case performance bounds for simple one-dimensional packing algorithms. SIAM J. Comput., 3 :256278, 1974.
[3] M. R. Garey and D. S. Johnson. Computers and Intractability. Freeman,
1979.
[4] V. V. Vazirani. Approximation Algorithms, Springer (2001)
[5] W. de la Vega, G. Lueker. Bin packing can be solved within 1 + in
linear time. Combinatorica, 1(4) :349-355, 1981.

10

Cours 2

(12 octobre)

Tri et hachage
Tri de Shell

2.1
2.1.1

Le tri de Shell
Prsentation

Le tri de Shell est ainsi appel la suite du nom de lauteur de larticle [3]
o il a t introduit. Lide est simple : on se donne une suite dcroissante
dentiers appels incrments, soit ht , ht1 , , h1 , et on trie successivement,
pour i allant de t 1, un tableau donn en prenant les lments de hi en hi ,
cest dire en triant sparment les tableaux extraits dont les indices valent
1 modulo hi , 2 modulo hi , et ce jusqu hi modulo hi . Dun point de vue
heuristique, il apparat que les tris grossiers, raliss avec des incrments de
taille levs, rduisent la complexit des tris fins excuts ultrieurement
avec des incrments petits.
De manire surprenante, il nest pas simple de donner cette observation
heuristique un contenu mathmatique prcis, comme on va le voir dans la
suite. Lexpos qui suit sinspire largement de Knuth [4].

2.1.2

Le thorme de commutation

Le rsultat qui suit montre que la succession de tris fait sens dans la
mesure o un tri ne dtruit pas les progrs obtenus prcedemment. Soit k
un entier, on dit quun tableau est k-tri si les tableaux extraits en prenant
les lments de k en k sont tris. En notant le tableau A, cette dfinition
exprime quon a A[i] A[i + k], pour tous entiers i tels que i et i + k soient
des indices du tableau. Un k-tri est un algorithme qui retourne un tableau
k-tri.
11

Thorme 3 Soient k > h deux incrments. En appliquant un h-tri un


tableau k-tri, on obtient un tableau qui est la fois k-tri et h-tri.
La preuve se fonde sur le lemme suivant :
Lemme 4 Soient m, r, n r, des entiers. Soient (x1 , , xm+r ) et (y1 , , yn )
deux suites telles que lon ait pour tout j, 1 j r, yj xm+j . Si lon trie
sparment les deux suites, alors, en notant (x1 , , xm+r ) et (y 1 , , y n ),
les suites tries obtenues, on a y j xm+j .
Preuve du lemme Dans la suite trie, xm+j domine les lments xi pour
i m + j, qui sont au nombre de m + j. Parmi ces m + j lments, il y en a
au moins j qui proviennent dlments de la suite initiale de la forme xm+` .
Ces j lments dominent respectivement les y` correspondants. Il y a donc j
indices ` de la suite non trie (y1 , , yn ) infrieurs ou gaux xm+j . Donc
le j-ime lment de la suite trie y j est bien xm+j .
Preuve du thorme A partir du lemme, il est facile dtablir le thorme.
En effet, il sagit de montrer que dans le tableau final A, on a A[i] A[i + k].
En notant u = i mod h et v = i + k mod h ; puisque u v = k mod h et que
|u v| h < k, on peut poser m = uv+k
. On considre alors la suite la
h
suite des lments du tableau initial pris de h en h qui contient A[i + k], soit
x` = A[v + `h]. Llment xm vaut A[u + k] et, comme lindice u + k est
lindice i + k, on reste bien dans le tableau. On considre de mme la suite
y` = A[u + `h] des lments du tableau initial pris de h en h qui contient
A[i]. On note que
y` = A[u + `h] A[u + k + `h] = A[v + (

uv+k
+ `)h],
h

soit y` xm+` , cette ingalit valant pour autant que les deux termes y` et
xm+` soient dfinis, soit pour ` au plus gal un entier r. On se trouve dans
les conditions du lemme. En posant ` = iu
, il vient :
h
A[i] = y[u + `h] xm+` = A[v + (

uv+k iu
+
)h] = A[i + k],
h
h

ce qui achve la dmonstration.

2.2
2.2.1

Tris de Shell deux passes


La suite dincrments (2, 1)

On considre ici le cas le plus simple du tri de Shell, consistant en un


2-tri suivi dun 1-tri. La question qui se pose est de mesurer le gain sur
12

le tri le plus lmentaire par insertion. La complexit de cet algorithme de


tri, quand il est appliqu un tableau donn A ralisant une permutation
des n premiers entiers est gal au nombre dinversions de cette permutation,
2
' n2 . Effectuer deux 2-tris
ce qui donne dans le plus mauvais cas n(n1)
2
la place (par insertion galement), rduit cette complexit dun facteur
multiplicatif 2. Reste examiner la complexit rsiduelle du tri appliqu
une permutation 2-trie, ce qui est un joli problme combinatoire. On va voir
que cette complexit est en moyenne O(n3/2 ), mais ce nest pas si simple...

2.2.2

Le nombre dinversions dune permutation 2-trie





n
Il y a en tout
permutations 2-tries des entiers de 1 n. En
bn/2c
effet, pour dfinir compltement une permutation 2-trie il suffit de prciser
les bn/2c entiers qui sont en position paire.
Par ailleurs, une reprsentation graphique dune permutation 2-trie est
possible sous forme dune escalier construit partir du tableau A qui dfinit la permutation. Cet escalier est form de sommets Pk obtenus en examinant les entiers successifs k et en partageant lensemble {1, , k} en deux
sous-ensembles Oddk et Evenk respectivement forms des entiers j placs
en position impaire et paire dans le tableau A. Le sommet Pk est gal
(|Evenk |, |Oddk |), o |X| dsigne le nombre dlements de X. Lescalier est
form en partant de (0, 0) et en joignant les sommets correspondant des
k conscutifs. En se reportant aux transparents du cours - en page 13 - on
trouve une reprsentation de lescalier correspondant au tableau
2, 1, 3, 4, 6, 5, 7, 10, 8, 11, 9, 12, 14, 13, 15.
On constate que larte correspondant k va vers la gauche si k est en
position paire et vers le bas si k est en position impaire. Lescalier rgulier,
correspondant la permutation identit est en pointills. Il se trouve que
le nombre dinversions est gal la surface enserre entre lescalier rgulier
et lescalier correspondant la permutation. Pour le voir, on imagine quon
place successivement les entiers k dans le tableau A, soit en position paire
soit en position impaire. On observe que pour k impair, on a :
1. Si Even(k 1) = Odd(k 1), ladjonction dun k en position paire ou
impaire ne produit pas de nouvelle inversion avec les ` dj placs.
2. Si Even(k 1) > Odd(k 1), ladjonction dun k en position paire ne
produit pas de nouvelle inversion avec les ` dj placs, tandis que ladjonction dun k en position impaire produit un nombre de de nouvelles
inversions gal Even(k 1) Odd(k 1).
13

3. Si Even(k 1) < Odd(k 1), ladjonction dun k en position impaire


ne produit pas de nouvelle inversion avec les ` dj placs, tandis que
ladjonction dun k en position paire produit un nombre de de nouvelles
inversions gal Odd(k 1) Even(k 1) 1.
En interprtant gomtriquement, on constate que seules les artes verticales
allant de Pk1 Pk situes en dessus de lescalier, ainsi que les artes horizontales allant de Pk1 Pk situes en dessous de lescalier, apportent une
contribution au nombre dinversions et que cette contribution est gale la
surface de de la bande horizontale (respectivement verticale) allant de larte
Pk1 , Pk larte de lescalier rgulier de mme ordonne (respectivement de
mme abscisse).
On laisse au lecteur le soin de justifier le mme rsultat pour k pair.
Muni de cette interprtation gomtrique, on peut calculer le nombre
de permutations dont lescalier passe par larte verticale allant de (i, j)
(i, j + 1). On trouve



i+j
nij1
.
i
bn/2c i
Le premier coefficient du binme vient de la manire de placer i artes horizontales et j artes verticales pour former un escalier allant de (0, 0)
(i, j). Le second vient de la manire de placer bn/2c i artes horizontales
et dn/2e j 1 artes verticales pour former un escalier allant de (i, j + 1)
(bn/2c, dn/2e).
Chaque arte contribuant la surface de la bande horizontale allant jusqu lescalier rgulier par |i j|, le nombre total dinversions de toutes les
permutations 2-tries est pour n pair, n = 2q :
A2q =

q
q
X
X


|i j|

i=0 j=0

i+j
i



2q i j 1
qj


,

et pour n impair, n = 2q + 1 :
A2q+1 =

q
q
X
X
i=0 j=0


|i j|

i+j
i



2q i j
qj


,

Il se trouve que An a la forme simple bn/2c 2n2 , mais que ce nest pas
trop simple tablir.

14

2.2.3

Une forme close pour le nombre dinversions dune


permutation 2-trie

On commence par noter, en changeant i et j, que 2A2q vaut


q
q
X
X
i=0 j=0


|ij|

i+j
i



 X



q
q
X
i+j
2q i j 1
+
|ij|
.
i
qj1

2q i j 1
qj

i=0 j=0

Par une formule standard, ceci mne :


q
q
X
X


|i j|

i=0 j=0

i+j
i



2q i j
qj


,

et donc A2q+1 = 2A2q .


En utilisant maintenant la symtrie en i, j, on a



X
i+j
2q i j
A2q =
(i j)
;
i
qj
jiq

Il reste donc tudier la suite un dfinie par :





X
i+j
2n i j
un =
(i j)
.
i
nj
jin

On introduit la srie (z) =


Lemme 5 On a (z) =

n=0

un z n .

z
.
(14z)2

En dveloppant en srie le second membre, il vient :

z d X q q
(z) =
(
4 z ),
4 dz q=0

ce qui donne immdiatement uq = q4q1 . Cette galit permet de trouver la


formule close propose plus haut pour An .
Le lemme est tabli en plusieurs tapes :
1
Etape 1. Decomposition en srie de 14z
.
1/2
La fonction (1 4z)
se dcompose en une srie de terme gnral


2i 1 (4z)i i
(1/2)(3/2)
z ,
2
!i
15

lequel scrit
1.3. .(2i 1)2i z i
1.3. .(2i 1)2.4. .(2i)z i
=
=
!i
(!i)2
avec la convention !0 = 1.
P

Etape 2. Calcul de la srie


sait dj que f0 (z) =

i=1

2i + s
i

2i
i

zi.


. Notant fs (z) cette somme, on

1
.
14z





2i + 1
2i + 2
1
A partir de lgalite
= 2
, on dduit que f1 =
i
i+2


1 f0 (z)1
. Notant u = 1 4z, on trouve f1 (z) = u1 1u
.
2
z
2z
On se propose de gnraliser la formule

s
1 1u
fs (z) =
.
u
2z
A partir de lidentit

 
 

2i + s
2i + s 1
2i + s 1
=
+
,
i
i
i1
on dduit que fs (z) = fs1 (z) + zfs+1 (z). Il suffit donc de montrer que la
formule propose satisfait la mme rcurrence. On considre :

s1

s+1
1 1u
1 1u
+z
.
u
2z
u
2z
s
En mettant en facteur f0 (z) = u1 1u
, on trouve la somme :
2z
2z
1u
+z
.
1u
2z
En observant que u2 = 1 4z et donc que 4z = 1 u2 , on peut transformer
cette somme en
1+u 1u
+
= 1,
2
2
ce qui donne la relation cherche.
Etape 3. Fin du calcul. On a calculer
(z) =

X
X
n=0 jn


(i j)

i+j
i

16



2n i j
nj

zn.

En introduisant s = i j et t = n j, il vient :



X
X

X
2i + s
2t + s
s
zszizt.
i
t
i=0 s=0 t=0

Pour s fix, la somme des termes o z s apparat


s est le produit de s et de
. On a donc sommer
deux sries, chacune de somme fs (z) = u1 1u
2z

X
1 s
s ,
u2
s=0

avec


= z.

Sachant que

ss vaut

(1 u)2
4z 2

,
(1)2


=

(1 u)2
1u
=
.
4z
1+u

on trouve pour (z) :



2
2
1 1u
1u
2u
1 1u
( 1
(
= 2
,
u2 1 + u
1+u
u 1+u 1+u
soit enfin

2.2.4

z
1
(1 + u)(1 u) =
.
4
4u
(1 4z)2

Performance optimale du tri deux passes

La nombre moyen dinversions dune permutation 2-trie est, daprs ce


qui prcde,
2n2
.
bn/2c 
n
bn/2c
En
la formule de Stirling on constate que cest asymptotiquement
p utilisant
/128n3/2 , qui est bien comme annonc en O(n3/2 ).
On dmontre plus gnralement que le nombre moyen
dune
dinversions
3/2 1/2
permutation h-trie est major par un quivalent de /8n h
(cette
majoration est un peu moins fine que celle ci-dessus pour h = 2). Il en
rsulte quun tri de Shell deux passes correspondant la suite dincrments
(h, 1) a une complexit majore par
h n 2
( ) + /8n3/2 h1/2 .
2 h
n 1/2
En equilibrant les deux termes on est amen poser n = ( 4
) , ce qui donne
une complexit en O(n5/3 ).

17

2.3
2.3.1

Tris plus de deux passes


Incrments premiers entre eux

Lutilisation dincrments premiers entre eux se rvle partculirement


efficcace cause du rsultat suivant.
Thorme 4 Soient k et h deux incrments premiers entre eux. Si un tableau A est la fois h tri et k tri, alors pour tout couple dindices i < j
tels que la diffrence j i soit au moins (k 1)(h 1), on a A[i] A[j].
Le thorme est consquence du lemme suivant :
Lemme 6 Soient h et k deux entiers positifs premiers entre eux. Tout entier
n (h 1)(k 1) scrit sous la forme ah + bk pour des entiers positifs ou
nuls a, b convenables.
Preuve du lemme On pose a = nh1 mod k (cest l quon utilise lhypothse). Lentier a est compris entre 0 et k 1 et donc a(h 1) est major par
(k 1)(h 1) et aussi par n. Il en rsulte que ah n + a < n + k. Comme en
outre n ah est divisible par k, on en dduit que ah est n. La diffrence
n ah est divisible par k donc de la forme bk.
Preuve du thorme A partir du lemme, il est facile dtablir le thorme.
En effet, en crivant ji sous la forme ah+bk, a 0, b 0, on peut considrer
la suite dindices i, i + h, i + ah, puis i + ah, i + ah + k, , i + ah + bk.
Chaque saut se fait en croissant car les tableaux sont h-tris et k-tris. Donc
A[i] A[j].

2.3.2

Incrments de la forme 2s 1

On considre ici la suite dincrments hs = 2s 1, pour s dcroissant de


blog nc 1. On pose t = blog nc et on majore la complexit des t/2 premires
passes par la somme
 2
t
X
hs n
2 hs
s=t/2

Pt
2

1
2
t/2
qui est un O(n
) = O(n3/2 ).
s=t/2 2s ), soit donc un O(n /2
Reste les t/2 dernires passes. On note que hs+2 et hs+1 sont premiers
entre eux. Le lemme 6 montre que, lorsque lon aborde le hs -tri, les inversions correspondent des indices i et j distants de (hs+2 1)(hs+1 1) au
plus. Comme on prend les indices de hs en hs , les indices j qui produisent une

18

inversion avec un indice i au sein dun mme tableau extrait sont dans un ensemble qui a hs+2hhs s+1 lments. En faisant varier i, on voit que lensemble des
hs+1
hs -tris a une complexit cumule majore par nhs+2
, qui est un O(n.2s ).
hs
Pt/2 s
En sommant on obtient un O(n. s=1 2 ) qui est un O(n.2t/2 ) = O(n3/2 ).
La complexit du tri de Shell pour la suite dincrments 2s 1 est donc
en 0(n3/2 ). Ce rsultat a t prouv dans [2]. Le problme gnral de la
complexit du tri de Shell reste ouvert.

19

Bibliographie
[1] D. Knuth. The Art of Computer Programming, Volume 3 : Sorting and
Searching. Addison-Wesley, Reading, MA, 1973.
[2] A. Papernov and G. Stasevich. A method for information sorting in
computer memories. Problems Inform. Transmission, 1(3) :6375, 1965.
[3] D. L. Shell. A High-Speed Sorting Procedure. CACM, 2(7) :30-32, July
1959.

20

Cours 3

(19 octobre)

Recherche de motifs
Algorithmes dalignement en
bio-informatique

3.1
3.1.1

Extraction et alignements pour deux suites


Motivation bio-informatique

De nombreux problmes de bio-informatique conduisent des algorithmes


ayant pour but lextraction de motifs communs deux ou plusieurs suites de
symboles et lalignement de suites par adjonction despaces :
Reconstruction de squences DNA partir de fragments,
stockage et recherche dans les bases de donnes de squences DNA,
comparaison de squences.
Le but de cette section et de la suivante est de donner un aperu de ces
algorithmes.

3.1.2

Algorithme dextraction de sous-suite

Soient X = (x1 , , xm ) et Y = (y1 , , yn ) deux suites de symboles. Une


suite extraite U de X est obtenue partir dune suites dindices j1 , , jk ,
1 ji m en posant U = (xj1 , , xjk ). On appelle plus longue suite
extraite commune (PLSEC) X et Y une suite extraite la fois de X et Y
de longueur k maximale.
Lextraction dune PLSEC est un exemple typique de programmation dynamique. On construit un tableau c[i, j] qui contient la valeur optimale de
la longueur dune PLSEC pour des suites Xi et Yj obtenues par troncature,
cest dire que Xi = (x1 , , xi ), 0 i m et de mme pour Yj (X0 ou Y0
21

est la suite vide). Le tableau est rempli par rcurrence en utilisant le lemme
suivant :
Lemme 7 Soient i, j > 0.
i) Si xi = yj , alors c[i, j] = c[i 1, j 1] + 1 ;
ii) Si xi 6= yj , alors c[i, j] = max{c[i, j 1], c[i 1, j]}.
La preuve du lemme est facile. Le lecteur pourra se reporter au cours
dalgorithmique de Cormen et al. [3]. En maintenant dans un second tableau
lindication -, , de la provenance de loptimum (de c[i1, j 1], de c[i
1, j], ou de c[i, j 1]), il est immdiat dcrire un algorithme qui calcule non
seulement la longueur de la PLSEC, soit c[m, n], mais galement une PLSEC
de longueur maximale. Un tel algorithme est reproduit dans les transparents
du cours, en page 9.

3.1.3

Algorithme dalignement de deux suites

Soient deux suites S et T et soit - un symbole qui napparat ni dans S,


ni dans T . Un alignement est form de deux suites S et T , de mme longueur
obtenues respectivement partir de S et T en insrant dans chacune des
symboles - supplmentaires. On peut dfinir le cot dun alignement partir
dune fonction score (a, b) 0, dfinie sur les couples de symboles : le cot
dun alignement est la somme des scores des lettres alignes. Le problme
pos est celui de la recherche dun algorithme qui calcule le cot minimal
Opt align(X, Y ) dun alignement de X et Y . Il est rsolu en calculant par
programmation dynamique le cot V [i, j] de lalignement de suites tronques
et en utilisant le lemme suivant :
Lemme 8 Soient i,j > 0.

V [i 1, j 1] + (si , tj )
V [i, j 1] + (si , )
On a V [i, j] = min
.

V [i 1, j] + (, tj )
La preuve du lemme est immdiate. Comme dans le cas de la PLSEC, on
peut obtenir un alignement optimal en maintenant dans un tableau lindication -, , de la provenance de loptimum.

3.1.4

Pnalit pour les espacements

Il existe naturellement de nombreuses variantes de lalgorithme prsent


la section prcdente. Lune delles, lie des contraintes issues de la
22

bio-informatique, tient compte dune pnalit sappliquant aux longs espacements. En faisant le choix dune pnalit linaire de la forme Wg + qWs ,
o q dsigne le nombre despaces conscutifs insrs et o Ws , Wg sont 0,
on est amen une rcurrence plus complexe : lalgorithme maintient outre
V [i, j], trois tableaux E[i, j], F [i, j], G[i, j] contenant loptimum respectif
correspondant chacun des trois cas suivants :
1. optimum E[i, j] du cot dun alignement o le symbole - nest pas
insr la fin du mot Xi , mais est insr la fin du mot Yj ;
2. optimum F [i, j] du cot dun alignement o le symbole - est insr
la fin du mot Xi , mais nest pas insr la fin du mot Yj ;
3. optimum G[i, j] du cot dun alignement o le symbole - nest insr
ni la fin du mot Xi , ni la fin du mot Yj ;
Le lemme qui suit permet lcriture dun algorithme qui procde par rcurrence. On suppose que la pnalit prend compltement en compte le rle
des alignements : en dautres termes (a, ) = (, a) = 0.
Lemme 9 Soient i, j > 0.
V [0, 0] = G[0, 0] = 0,
V [i, 0] = E[i, 0] = Wg + iWs ,
V [0, j] = F [0, j] = Wg + jWs .
De plus,
i) V [i, j] = min{E[i, j], F [i, j], G[i, j]}.
ii) E[i, j] = min{E[i, j 1] + Ws , V [i, j 1] + Ws + Wg }.
iii) F [i, j] = min{F [i 1, j] + Ws , V [i 1, j] + Ws + Wg }.
iv) G[i, j] = V [i 1, j 1] + (si , tj ).
Preuve : La preuve est une simple tude de cas. Par exmple, pour ii), on
observe que loptimum du cot dun alignement o le symbole - nest pas
insr la fin du mot Xi , mais est insr la fin du mot Yj peut provenir
dun alignement optimum de Xi1 et Yj du mme type, avec un cot supplmentaire de Ws , ou dun alignement optimum de lun des autres types, avec
un cot supplmentaire de Wg + Ws . Ceci conduit la formule
E[i, j] = min{E[i, j 1] + Ws , F [i, j 1] + Ws + Wg , G[i, j 1] + Ws + Wg }.
La formule plus simple du lemme est obtenue en observant que le minimum
est infrieur E[i, j 1] + Ws + Wg et donc quon ne change pas sa valeur
en le remplaant par
min{E[i, j 1] + Ws , V [i, j 1] + Ws + Wg }.
23

3.1.5

Gestion de lespace

Tous les algorithmes dcrits prcdemment ont une complexit en temps


et en espace quadratique en O(mn). Si une telle complexit nest pas critique
sagissant du temps, elle peut ltre, notamment dans les applications bioinformatiques, sagissant de lespace.
On prsente dans cette section un algorithme rcursif qui opre en espace
linaire. On se place dans le contexte de lalignement de deux suites dvelopp dans la section 3.1.3, mais la mthode sapplique mutatis mutandis
aux autres algorithmes. Lide est de calculer loptimum (ici un minimum)
simultanment en tronquant les suites au dbut ou la fin, cest dire - dans
le second cas - en lisant les suites lenvers.
Lemme 10 Soient V [i, j], V 0 [i, j] les valeurs optimales de lalgorithme de
programmation dynamique tronquant respectivement les suites la fin et au
dbut. On a :
V [m, n] = min {c[dm/2e, k] + c0 [bm/2c, n k].
0kn

Preuve : Lingalit est claire : partir dun alignement de Xdn/2e et


Yk et dun alignement de X bn/2c et Y nk , on forme par concatnation un
alignement de S et T (o S i dsigne le mot form en ne conservant que les
i derniers symboles de S). Pour tablir lingalit inverse, on considre un
alignement optimal et on choisit k de manire ce que cet alignement mette
en regard Xdn/2e et Yk .
On observe ensuite que, pour u donn, le calcul dun vecteur form des
scores optimaux dun alignement de Su et Tv pour v allant de 0 m, ne
ncessite quun espace O(n). En effet, lors du remplissage dynamique, ligne
par ligne du tableau des valeurs V [i, j], il est seulement ncessaire de conserver en mmoire deux lignes conscutives du tableau. Bien videmment, on
perd ainsi la possibilit de retourner un alignement optimal. On peut toutefois, compte tenu du lemme, calculer en espace O(n) lentier k qui ralise le
minimum du second membre de la formule donnant V [m, n].
Lalgorithme rcursif Rec Opt align(X, Y ) retourne un alignement
optimal de X et Y , en oprant en espace linaire comme suit :
1. Calculer en espace O(n) lentier k qui ralise le minimum du second
membre de la formule donnant V [m, n] ; sauvegarder le rsultat et librer la mmoire.
2. Appeler Rec Opt align(Xdm/2e , Yk ) ; sauvegarder le rsultat et librer la mmoire.

24

3. Appeler Rec Opt align(X bm/2c , Y nk ) ; sauvegarder le rsultat et


librer la mmoire.
4. Concatner les deux alignements obtenus aux tapes 2 et 3 ; librer la
mmoire et retourner le rsultat.

3.2

Alignement de plusieurs suites

Etant donnes plusieurs suites et - un symbole qui napparat dans aucune de ces suites, un alignement de ces suites est obtenu en insrant dans
chacune des symboles - supplmentaires de manire ce que les suites produites soient toutes de mme longueur. Comme dans le cas de deux suites on
peut attribuer un cot un alignement multiple partir dune fonction score
(a, b). On se restreindra au cas o est symtrique ((a, b) = (b, a)), vrifie
lingalit triangulaire ((a, c) (a, b) + (b, c)) et est telle que (a, a) = 0.
Egalement, on supposera quil ny a pas de pnalit pour les espacements.
Dans cette section, on scarte des notations utilises auparavant en notant Si la i-me suite. En prenant les suites deux deux, on peut considrer le
cot de lalignement correspondant soit D(Si , Sj ). Le cot SP (sum of pairs)
est la somme
X
D(Si , Sj ).
i<j

On peut galement proposer une autre mesure - nomme erreur de consensus ou EC- calcule partir dun alignement en dterminant une suite S
reprsentant le consensus qui minimise :
X
D(S, Si ).
i

Les problmes de dcision associs la recherche doptimum pour SP ou


EC sont NP-complets. Il est donc naturel de sintresser des algorithmes
approchs.

3.2.1

Lalgorithme Center-Star

Cet algorithme calcule pour chaque indice t, la somme


X
D(Si , St ),
i

et choisit un indice t minimisant cette somme. Quitte renumroter les


indices, on peut supposer que t = 1. A partir de S1 , lalgorithme construit
25

par rcurrence un alignement des u premieres suites. Au moment dajouter


Su , lalgorithme considre lalignement entre S1 et Su produisant la valeur
minimum D(Su , S1 ), et insre des - de faon recaler les positions de S1
dans cet alignement et dans lalignement des u 1 premires suites obtenu
rcursivement.
La complexit de lalgorithme est en O(k 2 n2 ) o k est le nombre de suites
et n la longueur maximale. Le terme n2 provient de lalgorithme qui calcule
D(Si , St ) par programmation dynamique. Le terme k 2 est li la taille de
lensemble dans lequel varients les paires {i, j}.
Thorme 5 La performance pour SP de lalgorithme Center-Star est dans
< 2 de loptimum.
un rapport 2(k1)
k
Preuve : Soit le cot de lalignement optimal pour SP. On considre
lalignement optimal et on note d (i, j) le cot induit de lalignement de Si
et Sj . De mme, on note d(i, j) le cot induit de lalignement de Si et Sj
rsultant de la solution trouve par lalgorithme. Par optimalit, on a :
X
X
=
d (i, j)
d(i, j).
i<j

i<j

Par lingalit triangulaire, pour i et j 6= 1, on a :


d(i, j) d(i, 1) + d(1, j).
En sommant, on obtient
X
X
X
2
d(i, j) =
d(i, j) 2(k 1)
d(i, 1).
i<j

i>1

i6=j

Compte tenu de la P
stratgie de lalgorithme,
P la somme apparaissant dans le
dernier terme, soit i>1
P d(i, 1) est gale i>1 D(Si , S1 ) et est majore par
les sommes analogues i6=j D(Si , Sj ) pour j fix. En prenant la moyenne, on
trouve pour loptimum SP un majorant de la forme
(k 1) X
2(k 1) X
D(Si , Sj ) =
D(Si , Sj ).
k
k
i<j
i6=j
En utilisant la majoration D(Si , Sj ) d (i, j), on trouve finalement :

d(i, j)

i<j

ce qui achve la preuve.


26

2(k 1)
,
k

3.2.2

Alignement avec consensus

Etant donnes plusieurs suites, on peut, reprenant


P les notations de la
section prcdente, chercher minimiser la somme i D(S, Si ). On appelle
suite de Steiner une suite S ralisant loptimum. A partir dune telle suite
S , il est facile, en sinspirant de lalgorithme Center-Star de construire un
alignement avec consensus de ces suites en insrant dans chacune et dans S
des symboles - supplmentaires de manire ce que les suites produites Si
soient toutes de mme longueur et quelles ralisent avec une suite S obtenue
partir de S un alignement de cot D(S , Si ).
Il est difficile de calculer S efficacement. Toutefois, on a :
ThormeP6 La suite S produite par lalgorithme Center-Star est telle que
< 2 de la valeur optimale
la somme i D(S, Si ) est dans un rapport 2k1
k
obtenue pour une suite de Steiner S .
P
Preuve : Soit la valeur de i D(S , Si ), St la suite ralisant le minimum
de D(S , Si ) et Sc la suite retourne par lalgorithme Center-Star. Compte
tenu de la stratgie de cet algorithme, on a :
X
X
D(Sc , Si )
D(St , Si ).
i6=c

i6=t

En utilisant lingalit triangulaire, le second terme peut tre major par


X
D(St , S ) + D(S , Si ) (k 1)D(St , S ) + .
i6=t

Par dfinition de St , on a D(Si , S ) D(St , S ) pour tout i et donc, en


sommant kD(St , S ). En reportant dans lingalit ci-dessus, il vient :
X

D(Sc , Si ) (1 +

i6=c

ce qui, compte tenu de lingalit


attendu.

27

i6=c

k1
),
k
D(Sc , Si ), conduit au rsultat

Bibliographie
[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[2] R. Shamir Algorithms for Molecular Biology : Course Archive.
http ://www.math.tau.ac.il/ rshamir/algmb.html

28

Cours 4

(26 octobre)

Arbres
Structures de donnes fusionnables
On a vu dans le cours diffrentes structures darbre permettant de grer
un ensemble de donnes et doprer des oprations de recherche, dinsertion
et de suppression dun lment repr par une cl, tout en maintenant le
caractre quilibr des arbres et en assurant ainsi que chaque opration a
une complexit O(log n), o n est le nombres de nuds de larbre.
Ces structures en revanche ne permettent pas facilement la fusion de deux
ensembles de donnes, du moins pas avec la mme complexit. Dautres structures y parviennent et lobjet de ce chapitre est den prsenter le principe.

4.1
4.1.1

Arbres binomiaux et tas binomiaux


Arbres binomiaux

On dfinit un arbre binomial de manire rcursive : un arbre un seul


sommet B0 est un arbre binomial et on forme larbre binomial Bn partir de
deux copies de larbre binomial Bn1 en ajoutant un unique lien faisant de
la racine du premier le fils an de la racine du second. On pourra se reporter
la page 25 des transparents du cours ou louvrage [3] pour une figure.
Le lemme suivant rsume les proprits des arbres binomiaux, tablies
par des rcurrences simples laisses au lecteur.
Lemme 11 Larbre binomial Bn
i) a exactement 2n nuds,
ii) a exactement hauteur
  n,
n
iii) a exactement
nuds de profondeur i < n, et en particulier exaci
29

tement n fils de la racine,


iv) est obtenu partir de la suite Bn1 , , B0 , prise dans cet ordre, en faisant de la suite des racines de ces arbres, prise dans le mme ordre, la suite
des fils dun nouveau nud, lequel devient la racine de larbre obtenu.

4.1.2

Tas binomiaux

Un tas binomial est une structure de donnes forme dun suite darbres
binomiaux dont les racines constituent une liste chane. Chaque nud est
de plus tiqut de telle manire que, dans chaque arbre binomial ltiquette
dun pre est infrieure celle de son fils. Enfin, pour chaque entier i, il ny
a quun seul arbre binomial Bi au plus.
On note que si I est lensemble des indices des arbres binomiaux qui
apparaissent dans le tas binomial, on a, en notant n le nombre de nuds du
tas,
X
n=
2i .
i

On reconnat la dcomposation de n en base 2 et I est donc lensemble des


indices o un 1 apparat dans la dcomposition binaire de n. Ceci montre
que le nombre dlments de I est < dlog ne et le lemme 11 montre quil en
est de mme pour la hauteur de chacun des arbres du tas.

4.1.3

Fusion de deux tas binomiaux

Pour fusionner deux tas binomiaux, donns par un pointeur vers la liste
chane des racines, on fusionne les deux listes en ordre croissant des indices
des arbres binomiaux. Lindice est exactement le nombre de fils de chaque
nud racine, cest dire le degr de la racine, ce qui permet de le calculer,
moins quon ne prfre maintenir ce degr dans un champ attach chaque
nud.
Le problme cest que lon obtient pas ainsi en gnral un arbre binomial. En effet on peut avoir deux arbres de mme indice i, correspondant
au cas o i apparat ma fois dans la dcomposition binaire des entiers n
et m reprsentant respectivement le nombre dlments de chacun des tas
fusionner.
Pour rsoudre ce problme, on sinspire de laddition binaire avec retenue. On parcourt la suite des racines des arbres binomiaux de la liste
fusionne et on rduit le nombre des arbres par les rgles suivantes :
1. un unique arbre dindice i reste inchang,

30

2. deux arbres successifs dindice i sont groups en un arbre dindice i + 1


dont la racine correspond celui des deux arbres dont ltiquette est
minimale,
3. trois arbres dindice i sont remplacs par deux arbres, lun dindice i et
lautre dindice i + 1, en laissant le premier inchang et en appliquant
aux deux derniers la mme mthode que pour la rgle 2,
Laspect algorithmique de cet algorithme de rduction est dtaill dans [3]. Le
principe est de maintenir un pointeur qui avance dans la liste. Bien entendu,
un arbre dindice i + 1 cr par la rgle 2 ou 3 peut tre ensuite regroup
avec un autre pour crer un arbre dindice i + 2. Toutefois, il est facile de
voir quaucun autre cas que ceux mentionns ci-dessus napparat. Comme
on ne fait que parcourir la liste obtenue par fusion des deux listes chanes
initiales, en raffectant un nombre born de pointeurs pour chaque nud, on
a une complexit en O(n) o n est la taille du plus grand des deux tas.

4.1.4

Autres oprations

Les autres oprations se ramnent la fusion : linsertion se fait par fusion


avec un tas rduit un nud unique ; la recherche du minimum correspond
au parcours de la liste chane des racines ; la suppression de ce minimum
passe par la suppression du nud correspondant dans la liste chane des
racines, la cration dun second tas partir des fils de la racine, lesquels sont
naturellement chans par le pointeur dun nud son frre, et la fusion des
deux tas ainsi obtenus.
Il reste la suppression dun lment non ncessairement minimal, accd
par un pointeur : ltiquette de ce nud est change en et la proprit
de tas est restaure par un algorithme standard, analogue ceux prsents
dans la leon numro 2 sur les tris. Llment - qui est devenu dtiquette
minimale - est alors supprim. Tous les algorithmes dcrits prcdemment
ont une complexit O(n).

4.2

Tas de Fibonacci

Un tas de Fibonacci est une structure de donnes forme dun ensemble


darbres dont les racines constituent une liste cyclique doublement chane.
Les fils de chaque nud sont de mme organiss en une liste cyclique doublement chane. Chaque nud est galement tiquet de telle manire que,
dans chaque arbre ltiquette dun pre soit infrieure celle de son fils. Enfin, dans un tas de Fibonacci, certains lments sont marqus, dautres non.
On accde la structure par un pointeur vers llment minimal.
31

Toutefois, toute structure ayant les proprits dcrites ci-dessous nest pas
ncessairement un arbre de Fibonacci. En effet, il ny a pas proprement
parler de dfinition synthtique et ne sont des tas de Fibonacci que les
structures qui peuvent tre rcursivement cres partir dun tas vide, par
les oprations dinsertion, de suppression du minimum, de dcrmentation
dune cl et de fusion.
La complexit des oprations mentionnes ci-dessus se mesure par rfrence un potentiel, comme expliqu dans la leon 1 : il sagit donc de
complexit amortie. Le potentiel est dfini par la quantit t + 2m, o t est le
nombre total darbres dans le tas et m le nombre de nuds marqus.

4.2.1

Les oprations simples

Les oprations dinsertion, de recherche du minimum sont de complexit


amortie O(1).
Insertion Linsertion dun nouvel lment se fait sur la liste doublement
chane par exemple gauche de llment minimal. Le pointeur vers cet
lment minimal est raffect si ncessaire. Le nouvel lment est non marqu.
Recherche du minimum La recherche du minimum se fait par lecture
directe en drfrenant le pointeur vers cet lment minimal.
Fusion La fusion se fait en fusionnant les deux listes doublement chanes
des racines. Les potentiels sajoutant, le cot amorti est bien en O(1).

4.2.2

Lopration dextraction du minimum

Lopration dextraction du minimum commence par insrer les fils du


nud supprim dans la liste doublement chane des racines. Le pointeur
vers llment minimal est raffect si ncessaire.
Cette opration est suivie dune opration de consolidation destine
assurer que toutes les racines ont mme degr (cest dire mme nombre de
fils). Cette opration est reprsente en page 35 des transparents de cours.
Elle est analogue lopration de rduction du tas obtenu aprs fusion de
deux tas binomiaux. On recherche deux lments de mme degr dans la liste
doublement chane des racines et, chaque fois quon en trouve deux, on les
regroupe exactement comme on a regroup dans la section 4.1.3 deux arbres
binomiaux, ce qui a pour effet daugmenter dune unit le degr de la racine.

32

On supprime galement la marque de celle des racines place sous lautre,


si elle est marque.
On organise lalgorithme de consolidation partir dun tableau de pointeurs A indic par tous les degrs possibles en parcourant la liste chane des
racines en en regroupant les arbres laide des rgles suivantes :
1. quand on rencontre un arbre dont la racine est de degr d avec A[d] =
N IL, on affecte A[d] cet arbre ;
2. quand on rencontre un arbre dont la racine est de degr d avec A[d] 6=
N IL, on regroupe A[d] et cet arbre, on libre le pointeur A[d] et on
propage les retenues en traitant par la rgle 2 larbre de degr d + 1
ainsi obtenu.
Le cot de la premire tape est un O(D) o D est le degr maximal considrer. Le cot de la seconde est un O(D + t), puisque chaque regroupement
diminue dune unit le nombre de racines dans la liste des racines, ce en partant de t + D 1. Le potentiel quant lui passe de t + 2m au plus D + 2m :
en effet, la fin de la consolidation, il ny a plus que D lments au plus dans
la liste des racines. Le cot amorti est donc un O(D).

4.2.3

Lopration de dcrmentation dune cl

Lopration de dcrmentation de la cl dun nud x qui nest pas dans la


liste des racines, commence par placer ce nud dans la liste des racines, avec
sa suite son sous arbre. La marque du nud ainsi dplac est supprime si
elle tait prsente.
Cette opration est suivie dune opration en cascade consistant dplacer aussi dans la liste des racines le pre du nud x, son grand-pre etc.,
tant quils sont marqus. La marque du nud ainsi dplac est supprime si
elle tait prsente. Lorsquun ascendant non marqu est rencontr, la cascade
sarrte et lascendant en question est marqu.
Une fois la cascade termine, le pointeur vers llment minimal est raffect si ncessaire.
Le cot total de ces trois tapes est un O(c) o c est le nombre dascendants touchs par la cascade. Le potentiel, qui est initialement t + 2m voit
la valeur de t augmenter de c et la valeur de m diminuer de c. Le bilan est
une diminution de c puisque m compte double, ce qui compense bien le cot.
Finalement, en ajustant les constantes, on trouve un cot amorti O(1).

33

4.2.4

Complexit amortie des oprations

On a vu que toutes les oprations avaint une complexit amortie O(1) sauf
la consolidation, qui a une complexit amortie O(D). Reste donc borner
D.
Thorme 7 Soit x un nud de degr k dun tas de Fibonacci. Alors la
taille du sous arbre issu de x est minore par la k + 1-ime valeur Fk+1 de la
suite de Fibonacci.
On note quil rsulte de ce thorme que pour un tas qui a n lments,
tous les nuds ont au plus degr k, o k est le plus grand entier tel que
Fk+1 n. Comme Fk+1 est minor par k1 , reprsentant le nombre dor,
on en conclut que D est bien un O(log n).
Le thorme est quant lui consquence du lemme suivant.
Lemme 12 Soit x un nud de degr k dun tas de Fibonacci et soit y1 , , yk
la suite de ses fils ordonne suivant le moment o ils ont t lis x lors de
lexcution des algorithmes oprant sur les tas de Fibonacci ; alors, le degr
de yi est minor par i 2.
Preuve du lemme Au moment o yi est li x, x a pour degr i 1 au
moins, puisque y1 , , yi1 ont t lis auparavant. De plus, yi a mme degr
que x. Donc yi a degr i 1. Pour conclure, il suffit dobserver quun nud
ne perd des fils que lors de la cascade qui commence par le dplacement
dun lment conscutif une dcrmentation de sa cl et se poursuit avec
le dplacement de son pre, son grand pre etc. Un pre qui perd un fils
est marqu. Sil devait perdre un autre fils, il serait plac dans la liste des
racines. Comme yi est fils de x, il nest pas dans ce cas et a donc au moins
i 2 fils.
On revient maintenant la preuve du thorme. Soit si la taille maximum
du sous-arbre issu dun nud de degr i dun tas de Fibonacci. On a s0 = 1.
On a de plus, daprs le lemme prcdent,
sk 2 +

k
X

si2 .

i=2

En utilisant lhypothse de rcurrence, il vient


sk 2 +

k1
X

Fi = 1 +

i=1

k1
X

Fi

i=0

Il est bien connu (et facile vrifier si on ne le sait pas) que 1 +


Fk+1 , ce qui achve la preuve du lemme.
34

Pk1
i=0

vaut

Bibliographie
[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[2] J. Vuillemin. A data structure for manipulating priority queues Communications of the ACM Volume 21 (4), 309315, 1978.
[3] M. L. Fredman and R. E. Tarjan . Fibonacci heaps and their uses in
improved network optimization algorithms, Journal of the ACM, Volume
34 (3) 596615 , 1987.

35

Cours 5

(2 novembre)

Graphes
Graphes dexpansion
Dans cette leon, on tablit un lien entre les proprits dexpansion dun
graphe et les valeurs propres de sa matrice dadjacence. On tudie aussi les
applications algorithmiques de graphes ayant de bonnes proprits dexpansion.

5.1
5.1.1

Graphes dexpansion et valeurs propres


Dfinitions

Les graphes tudis dans cette section sont non orients. Etant donn un
ensemble de sommets W dun graphe G, on note |W le nombre dlments
de W et on appelle voisins de W lensemble des sommets lis un lment
de W par une arte de G.
Un graphe n sommets admet la constante dexpansion c, si pour tout
ensemble de sommets W tel que |W | n/2, lensemble des voisins de W a
au moins c|W | lments.

5.1.2

Lien avec la seconde valeur propre

On dit quun graphe est d-rgulier si chaque sommet a exactement d voisins. La thorie qui suit prsente, dans le cadre simplifi des graphes rguliers,
le lien profond qui unit les proprits dexpansion dun graphe aux valeurs
propres de sa matrice dadjacence A. On note que la matrice A est symtrique et quelle admet d comme valeur propre, puisque la matrice A dI
a la somme de toutes ses colonnes nulle et est donc non inversible. Cest la

36

plus grande valeur propre : en effet, pour tout > d, la matrice A I


est diagonale dominante, cest dire que, sur chaque ligne, la somme des
coefficients non diagonaux est majore en valeur absolue par le coefficient
diagonal. Il est bien connu - et le lecteur peut le dmontrer titre dexercice - quune telle matrice est non inversible. Il nest pas exclu que d soit
valeur propre multiple, mais dans ce cas, il nest pas difficile de voir - par la
mme mthode que pour lexercice suggr ci-dessus - que G se dcompose
en un certain nombre de sous-graphes sur lesquels d est valeur propre simple,
chaque sommet dun sous-graphe ntant li qu des sommets du mme sousgraphe. Dans ce qui suit, pour simplifier, on se restreindra implicitement
des graphes d-rguliers, nadmettant pas de dcompostion en sous-graphes,
cest dire pour lesquels d est valeur propre simple.
Thorme 8 Soit G un graphe d-rgulier et la seconde plus grande valeur
propre de la matrice dadjacence A, alors G admet la constante dexpansion
d
.
2d
La preuve de ce thorme repose sur le lemme suivant.
Lemme 13 Soit X le complment de W, b et c le nombre dlments de W
et X respectivement ; alors, le nombre e(W, X) dartes joignant un sommet
||X|
de W un sommet de X est minor par (d)|W
.
n
Pour dduire le thorme du lemme, il suffit dobserver que chaque arte
allant dun sommet de W un sommet de X a pour extrmit un voisin de
W . Comme un tel voisin peut tre atteint par d artes, on en dduit que le
. Pour |W | n, on a |X|
21 ,
nombre de voisins est minor par |W | (d)|X|
dn
n
do le rsultat.
Preuve du lemme On considre un vecteur x n coordonnes indexes par
les sommets de G. Les coordonnes xu de x dont lindice u est dans W sont
gales c et celles xv dont lindice v est dans X sont gales b. On observe
que x est orthogonal au vecteur propre 1 correspondant la valeur propre d,
dont toutes les coordonnes sont gales 1.
Il est bien connu quune matrice symtrique relle est diagonalisable et
que ses sous espaces propres sont deux deux orthogonaux. En appliquant
cette proprt la matrice d.I A, dont toutes les valeurs propres sont
d et en considrant le sous-espace propre orthogonal au vecteur propre
1, auquel x appartient, il vient
((d.I A)x, x) (d )||x||2 = (d )(bc2 + cb2 ).

37

Par ailleurs, le produit scalaire ((d.I A)x, x) est donn par la formule matricielle habituelle t (x)(d.I A)(x), et on voit facilement que ce produit vaut :
X
X
dx2u 2
xu xv ,
u

A[u,v]=1

soit en notant E lensemble des artes de G


X
(xu xv )2 ,
{u,v}E

soit encore e(W, X)(b + c)2 .


Il vient
e(W, X) (d )

bc2 + cb2
bc
= (d ) ,
2
(b + c)
n

qui est lingalit dmontrer.


Une rciproque du thorme ci-dessus a t tablie par Alon [1] : elle
affirme que, pour un graphe d qui admet c comme constante dexpansion, la
c2
seconde valeur propre est d 4+2c
2.

5.2
5.2.1

Applications algorithmiques
Marche alatoire dans un graphe

Soit G un graphe d rgulier. Une marche alatoire de longueur t dans le


graphe G est obtenue
en choisissant alatoirement une origine u0 ,
en choississant alatoirement, tant donne la i-me valeur ui , i < t,
un sommet ui+1 voisin de ui .
Thorme 9 Soit G un graphe d-rgulier et la seconde valeur propre en
valeur absolue de la matrice dadjacence ; soit W un ensemble de sommets
de G ; on note c la quantit |Wn | et on suppose que lingalit
((1 c)d2 + 2 )1/2

d
21/4

est satisfaite ; alors, la probabilit quune marche alatoire de longueur t nait


aucun lment dans W est majore par 2t/4 .
Ce thorme est consquence du lemme suivant.

38

Lemme 14 Le nombre de marches alatoires de longueur t qui vitent W


est major par n(1 c)1/2 ((1 c)d2 + 2 )t/2 .
Le nombre total de marches alatoires de longueur t tant n(d)t la probabilit est, daprs le lemme, majore par
n(1 c)1/2 ((1 c)d2 + 2 )t/2
,
n(d)t
ce qui, daprs lhypothse du thorme, est bien born par 2t/4 .
Preuve du lemme : On considre la projection P qui un vecteur x
n coordonnes indexes par les sommets de G associe le vecteur obtenu en
annulant toutes les coordonnes qui nappartiennent pas W . Le nombre
nu de chemins de longueur i qui vitent W et dont lextrmit est un sommet donn u sinterprte, avec les notations de la section 5.1.2, comme la
coordonne dindice u du vecteur (P A)i P 1. Pour le voir, on procde par rcurrence. Le cas i = 0 est clair. Pour passer de i i + 1, on observe que,
par hypothse de rcurrence, le vecteur y dont les coordonnes sont nu , est
donn par y = (P A)i P 1. Chaque marche alatoire de longueur i + 1 vitant
W est dfinie en prolongeant dun dernier choix une marche de longueur i.
Celles qui atteignent un sommet donn v sont donc en nombre
X
X
X
A[u, v]nu .
nu =
nu =
{u,v}E

A[u,v]=1

On reconnat l la v-ime coordonne de A(P A)i P 1, et on multiplie par P


pour annuler les coordonnes qui nappartiennent pas W , afin de tenir
compte de ce que le dernier choix doit lui aussi viter W .
Pour valuer nu , on procde un peu comme dans la preuve du lemme 13
et on tablit que lapplication linaire P A a une norme `2 majore par ((1
c)d2 + 2 )1/2 . Pour cela, on tudie sparment laction de P A sur le sousespace propre engendr par le vecteur propre 1 correspondant la valeur
propre det sur son orthogonal. Sur le sous espace engendr par 1, la norme
`2 est d 1 c, comme on le voit par un calcul direct. Sur lorthogonal, les
valeurs propres de A sont majores en valeur absolue par || et donc - comme
on le voit immdiatement en diagonalisant la matrice- la norme de A est
majore par ||. Comme celle de P est majore par 1, il vient ||P A|| ||.
En sommant les deux applications, on trouve bien, par lingalit de Schwarz,
une norme majore par ((1 c)d2 + 2 )1/2 .
Il rsulte du calcul qui prcde que la norme `2 de (P A)t P 1 est au plus
((1 c)d2 + 2 ))t/2 ||P 1||. En fait, cest la norme `1 quil faut majorer mais
lingalit de Schwarz donne pour cette denire un majorant de la forme
p

n((1 c)d2 + 2 ))t/2 (1 c)n,


39

ce qui achve la preuve du lemme.

5.2.2

Constructions explicites et applications

Les constructions explicites connues de graphes dexpansion, dues Lubotzky, Phillips, Sarnak [4] et Margulis [5], sont trop difficiles pour tre exposes ici. On se contentera de mentionner quil est possible de trouver
des
familles explicites de graphes dexpansion de degr d avec || 2 d 1
pour toute valeur de d gale p + 1, p tant un nombrepremier congru 1
modulo 4. Par exemple, pour d = 30, on obtient || 2 29 et donc


1 2
d + ||2
2

1/2
' 23.79

d
21/4

' 25.23.

Les conditions du thorme sont donc satisfaites ds que |W | est au moins


n/2. Il nest pas possible de choisir n quelconque mais cela est peu restrictif
car, pour une fonction tendant vers zro, il existe un n dans tout intervalle
[m, (1 + )m].
A partir des paramtres explicits ci-dessus, il est donc possible dexcuter un algorithme probabiliste dpendant du choix dune unique variable
alatoire suivant une loi uniforme sur les entiers 1, m, et dont la probabilit de succs est - pour fixer les ides - 1/2, en utilisant une marche alatoire
de longueur t. La probabilit dchec est alors borne par 2t/4 . On peut aussi
rpter t/4 fois lalgorithme en faisant des tirages indpendants pour obtenir
la mme probabilit dchec. La difference est le nombre de bits dalas dans
chaque cas : il est de O(t log m) dans le second cas et de O(log m + t) dans
le premier, ce qui est bien moins asymptotiquement. Mme sil na pas de
consquence pratique, il sagit l dun rsultat algorithmique profond.

40

Bibliographie
[1] N. Alon. Eigenvalues and expanders, Combinatorica 6(1986), 8396.
[2] N. Alon, and J. H. Spencer. The Probabilistic Method, John Wiley &
Sons, Inc., New York, 1992.
[3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[4] A. Lubotzky, R. Phillips, and P. Sarnak. Ramanujan graphs, Combinatorica, 8 (1988), 261277.
[5] G. A. Margulis. Explicit group-theoretic constructions of combinatorial
schemes and their applications in the construction of expanders and
concentrators. Problemy Peredachi Informatsii, 24(1), 5160, 1988.

41

Cours 6

(9 novembre)

Flots
Mthode de flot bloquant
Dans cette leon, on cherche amliorer les algorithmes de flot maximum
prsents dans le cours de base et notamment lalgorithme dEdmonds-Karp,
bas sur la recherche dun chemin de longueur minimal dans le graphe rsiduel. Cette amlioration passe par la notion de flot bloquant. On applique
ensuite les rsultats obtenus la recherche de couplages dans les graphes
bipartis.

6.1
6.1.1

Flots bloquants
Dfinitions

On conserve les notations du cours de base, que lon rappelle. Soit G


un graphe orient. On note E lensemble de ses artes et V lensemble de
ses sommets. On dsigne par m et n respectivement le nombre de ses artes
et le nombre de ses sommets. On suppose toujours m n. Dans toute la
suite, on distingue deux sommets s et t de G, quon nomme respectivement
source et but et on munit G dune fonction capacit C(u, v) qui prend comme
arguments deux sommets u et v lis par une arte et retourne une valeur
entire strictement positive. Par convention, on tend C tous les couples
de sommets en posant C(u, v) = 0 si (u, v) nest pas une arte.
On rappelle quun flot sur G est une fonction f qui prend comme argument deux sommets u et v et retourne une valeur entire, positive ou
ngative, qui satisfait les trois proprits suivantes :
antisymtrie f (u, v) = f (v, u) quels que soient u et v.

42

conservation Pour tout sommet u autre que s et t, on a


X
f (u) =
f (u, v) = 0
v

contrainte de capacit f (u, v) C(u, v) quels que soient u et v.


P
La valeur |f | du flot P
f est la quantit v f (s, v), dont il est facile de
vrfier quelle vaut aussi u f (v, t) . On dit quun couple de sommets (u, v)
est satur si f (u, v) = C(u, v). Le graphe rsiduel de f admet V comme
ensemble de sommets et pour artes les couples de sommets (u, v) non saturs
par f . On le notera Rf dans toute la suite en omettant lindice f sil ny a pas
ambigut. Le graphe rsiduel Rf est muni dune capacit rsiduelle dfinie
par C(u, v) f (u, v). Un chemin amliorant est un chemin de s t dans le
graphe rsiduel. Soit df (s, u) ou simplement d(s, u) la fonction distance du
sommet s au sommet u dans le graphe rsiduel, chaque arte comptant pour
une unit. Le graphe de niveau Lf admet comme artes celles des artes (u, v)
de Rf qui vrifient
d(s, u) + 1 = d(s, v) <
Ce graphe est sans cycle et il est immdiat de vrifier que tout chemin amliorant nemprunte que des artes de Lf . Il est tout aussi immdiat dobserver
quun simple parcours en largeur du graphe Rf permet le calcul de Lf , avec
une complexit O(m).
Un flot f sur un graphe G est dit bloquant si tout chemin de s t (dans
G) a au moins une de ses artes sature. Le principe des algorithmes de flot
bloquant est de calculer un flot bloquant f 0 du graphe Lf pour la capacit
rsiduelle et daugmenter f en f + f 0 . On converge ainsi plus rapidement vers
le flot maximal.

6.1.2

Algorithme de calcul dun flot bloquant

Lalgorithme de calcul dun flot bloquant opre sur des variables globales
qui reprsentent :
1. un flot f sur G,
2. un graphe H, sur les mmes sommets que G,
3. un chemin p de G dorigine s reprsent sous forme dune liste chane
avec accs en temps constant lextrmit last(p) de p.
Cet algorithme met en uvre quatre fonctions.
INITIALISER
p [s];
43

RECULER
v last(p) ;
si v = s alors retourner(chec) sinon
supprimer v de p ;
u last(p) ;
supprimer (u, v) de H ;
retourner(succs) ;
AVANCER
v last(p) ;
si v na pas darte sortante dans H alors retourner(chec) sinon
calculer une telle arte sortante (v, w) ;
ajouter w la fin de p ;
retourner(succs) ;
AUGMENTER
v last(p) ;
calculer minimum de C(u, v) f (u, v) quand (u, v) dcrit les artes de p ;
supprimer de H les artes o le minimum est atteint ;
pour chaque arte (u, v) de p ajouter f (u, v) et f (v, u) ;
Lalgorithme lui-mme est dcrit par :
H G; f 0;
INITIALISER
test-fin succs ;
tant que (test-fin = succs) faire
test-av succs ;
tant que (test-av = succs) faire test-av AVANCER ;
si last(p) 6= t alors test-fin RECULER sinon
AUGMENTER ;
INITIALISER ;
On prouve dabord que, sil se termine, lalgorithme calcule un flot bloquant f . Si ce nest pas le cas, il existe un chemin q de s t dont aucune
arte nest sature. Ce chemin q ne peut emprunter uniquement des artes
du graphe dfini par la valeur de H la fin du programme. En effet, lalgorithme ne se termine que si un appel de la fonction RECU LER retourne une
valeur dchec pour la variable test f in, ce qui ne se produit que si elle est
appele avec une valeur de p telle que last(p) = s. La fonction RECU LER
nest elle-mme appele que si la fonction AV AN CER retourne une valeur
dchec pour la variable test av, ce qui dans le contexte implique quaucune
arte du graphe dfini par la valeur finale de H ne sort de s. Les artes du
44

chemin q ne sont donc pas toutes dans H. Soit (u, v) la premire arte de q
avoir t supprime de H. Il y a deux cas considrer :
premier cas : cette arte a t supprime par la fonction AU GM EN T ER.
Cette fonction a galement satur larte (u, v) en augmentant la valeur courante du flot f . Do une contradiction.
deuxime cas : cette arte a t supprime par la fonction RECU LER un
moment o, par dfinition de (u, v), larte suivante du chemin q, soit (v, w)
tait encore dans H. Or, la fonction RECU LER nest appele que si la fonction AV AN CER retourne une valeur dchec pour la variable test av, ce
qui dans le contexte implique quaucune arte du graphe dfini par la valeur
courante de H ne sort de v. Do, nouveau une contradiction.
On montre ensuite la terminaison : chaque excution des deux fonctions
RECU LER ou AU GM EN T ER supprime au moins une arte ; il y en a
donc au plus m. Les excutions conscutives de AV AN CER sont en nombre
au plus n1, puisque chacune augmente la longueur du chemin p dune unit
et que, le graphe Lf tant sans cycle, cette longueur ne peut dpasser n 1.
Le nombre total des appels de fonction est donc en O(m) pour les fonctions
RECU LER ou AU GM EN T ER et en O(mn) pour la fonction AV AN CER.
La complexit est galement en O(nm) si on prend soin de reprsenter
les graphes par des structures de donnes mixte composes dune matrice
dadjacence, dune liste dadjacence et de pointeurs indiquant, pour chaque
arte (u, v), la position de v dans la liste dadjacence de u. Une telle structure
de donne permet de raliser en temps constant les oprations de base telles
que : suppression dune arte ou accs une arte issue dun sommet donn.
En effet, RECU LER et AV AN CER ont alors un cot constant, tandis que
AU GM EN T ER a un cot linaire en n.

6.1.3

Calcul dun flot maximum

Pour calculer un flot maximum, on itre le calcul dun flot bloquant sur
le graphe flot graphe Lf pour la capacit rsiduelle et laugmentation de f en
f + f 0 . On arrte litration lorsque le flot est maximum, ce que lon constate
- par exemple - par la condition d(s, t) = .
Lemme 15 Soit R0 le graphe rsiduel du flot f + f 0 et d0 (s, u) la fonction
distance la source pour ce graphe R0 . Pour tout sommet u on a d(s, u)
d0 (s, u).
Preuve : Largument est analogue celui donn dans le cours pour lalgorithme dEdmonds-Karp. Si la conclusion du lemme est en dfaut, on choisit
un contre-exemple tel que lentier k
k = d0 (s, u) < d(s, u)
45

soit minimal. On note que k est diffrent de zro et on dsigne par w un


sommet juste avant u dans un chemin de R0 de longueur minimale k allant
de s u. Par minimalit, on a
k 1 = d0 (s, w) d(s, w).
On distingue deux cas :
premier cas : larte (w, u) est prsente dans Rf . Lingalit triangulaire
donne alors
d0 (s, u) = d0 (s, w) + 1 = k d(s, w) + 1 d(s, u).
Do une contradiction.
deuxime cas : larte (w, u) est absente de Rf . Puisque cest une arte de
R0 cest que le flot bloquant f 0 a emprunt (avec une valeur positive) larte
inverse (u, w), laquelle appartient donc Lf . Il vient, puisquon se trouve sur
un graphe de niveau :
d(s, u) = d(s, w) 1 d0 (s, w) 1 = k 2,
ce qui contredit, l encore, lhypothse d0 (s, u) < d(s, u).
Lemme 16 On conserve les notations du lemme prcdent. On a alors d(s, t) <
d0 (s, t).
Preuve : lingalit au sens large rsulte du lemme prcdent. Sil y a galit,
on choisit un chemin p = (u1 , uk ) de longueur minimale allant de s t
dans le graphe R0 . Ce chemin nest pas un chemin de Rf . En effet, comme
le flot est bloqant, p aurait au moins une arte sature pour le flot f 0 , ce qui
veut simplement dire quelle nest pas une arte de R0 ! Soit i le plus grand
tel que (ui , ui+1 ) ne soit pas une arte de Rf . cette arte tant dans R0 , le
flot bloquant f 0 a emprunt (avec une valeur positive) larte inverse (u, w),
laquelle appartient donc Lf . Il vient, puisquon se trouve sur un graphe de
niveau :
d(s, ui+1 ) = d(s, ui ) 1 d0 (s, ui ) 1 = i 1.
Comme le chemin p nemprunte partir de ui+1 que des artes de Rf , on
dduit de ce qui prcde :
d(s, t) d(s, ui+1 ) + d(ui+1 , t) i 1 + k i 1 = k 2,
ce qui donne la contradiction cherche.
Le lemme montre que lon ne peut itrer que n 1 fois au plus un algorithme de flot bloquant, puisque la distance d(s, t) est majore par n 1. Le
calcul dun flot maximum par une mthode de flot bloquant peut donc tre
ralise avec une complexit O(mn2 ), ce qui consitue un progrs vis vis de
la complexit O(mn2 + nm2 ) de lalgorithme de Edmonds-Karp.
46

6.2
6.2.1

Graphes unitaires et applications


Dfinitions

Un graphe G muni dune capacit C est unitaire sil nadmet pas darte
allant de s t et si tout sommet u diffrent de s et t est dun des deux types
suivants :
type I : u admet au plus arte entrante (cest dire une arte de la forme
(v, u)) et cette arte, si elle existe, est de capacit 1,
type II : u admet au plus arte sortante (cest dire une arte de la forme
(u, v)) et cette arte, si elle existe, est de capacit 1.
On se donne un flot f sur un graphe unitaire. Pour un sommet de type I,
le flot sur larte entrante ne peut valoir que zro ou un, et dans ce dernier cas,
il existe une unique arte sortante sur lequel il vaut 1 galement. Toujours
dans le cas o le flot vaut 1 sut larte entrante, celle-ci disparat du graphe
rsiduel, mais linverse de lunique arte sortante sur lequel le flot vaut 1
apparat comme unique arte entrante avec capacit 1. Le sommet reste donc
de type I dans le graphe rsiduel.
De mme, pour un sommet de type II, le flot sur larte sortante ne
peut valoir que zro ou un, et dans ce dernier cas, il existe une unique arte
entrante sur lequel il vaut 1 galement. Larte sortante disparat du graphe
rsiduel, mais linverse de lunique arte entrante sur lequel le flot vaut 1
apparat comme unique arte sortante avec capacit 1. Le sommet reste donc
de type II dans le graphe rsiduel. Le graphe rsiduel est donc galement
unitaire.
Lemme 17 Soit G un graphe unitaire. Un chemin amliorant de longueur
` admet au moins b 2` c artes critiques, cest dire dartes dont la capacit
rsiduelle ralise le minimum de C(u, v)f (u, v) quand (u, v) dcrit les artes
du chemin amliorant.
Preuve du lemme : comme le graphe rsiduel est unitaire, les observations
qui prcdent lnonc du lemme montrent quun flot de valeur 1 sur un
chemin amliorant sature lunique arte entrante dun sommet de type I et
lunique arte sortante dun sommet de type II, soit une arte sur deux, do
le rsultat.
Lemme 18 Soit G un graphe unitaire, f un flot sur G et d la distance de s
.
t dans le graphe rsiduel R. Tout flot sur R a une valeur majore par n2
d1
Soit f 0 un flot sur le graphe rsiduel R. Comme R est unitaire, les observations
qui prcdent lnonc des deux lemmes montrent que lensemble des artes de
47

G sur lesquelles f vaut 1 peut tre dcompos en une runion de chemins de


s t et de cycles, ces chemins et ces cycles ayant leurs ensembles de sommets
respectifs deux deux disjoints, si lon ne tient pas compte des extrmits s,
t des chemins. La valeur |f 0 | du flot f 0 est exactement le nombre de chemins
de s t dans cette dcomposition. Comme chaque chemin a d 1 sommets
chemins,
internes au moins (cest dire distincts de s, t), il y a au plus n2
d1
ce qui tablit le rsultat annonc.
Le lemme prcdent montre quun algorithme
de flot bloquant pour le
calcul dun flot maximum ne peut itrer plus de 2d n 2e fois le calcul du
flot bloquant. En effet,le lemme 16 montre quaprs d n 2e itrations,
d(s, t) vaut au moins d n 2e + 1 et donc, daprs lelemme prcdent, le
flot maximum sur le graphe
rsiduel vaut au maximum n 2, valeur qui ne
peut donner lieu qu d n 2e itrations supplmentaires. En conclusion,

pour un graphe unitaire, un algorithme de flot bloquant itre O( n) fois le


calcul dun flot bloquant.
Le calcul du flot bloquant lui mme est rendu plus efficace dans le cas
dun graphe unitaire. En effet, la contribution cumule totale des excutions
des fonctions AU GM EN T ER a dans ce cas un cot O(m). En effet, cette
contribution c est proportionnelle la somme des longueurs `j des chemins
dfinis par les valeurs courantes pj de la variable p au moment des appels
` 1
la fonction RECU LER. Daprs le lemme 17, au moins j 2 artes de pj
sont satures et supprimes de H par la fonction AU GM EN T ER, soit en
tout
P
j `j
O(m).
2
P
Cette quant tant majore par m, on en dduit que j `j et donc c sont en
O(m).
Le nombre des appels la fonction RECU LER reste en O(m), de mme
que le cot cumul de leurs excutions.
Enfin, le cot cumul des excutions de la fonction AV AN CER est aussi
un O(m), puisque tout arte ajoute p par cette fonction, avec un cot O(1)
est ensuite supprime par RECU LER ou AU GM EN T ER, avec le mme
cot.
On dduit de ce qui prcde que le calcul dun flot bloquant sur un graphe
unitaire est en O(m). Le calcul dun flot maximum
par une mthode de
flot bloquant est donc finalement de complexite O(m n) pour les graphes
unitaires.

48

6.2.2

Couplage dans les graphes bipartis

Un graphe biparti admet une partition de lensemble V de ses sommets en


deux sous ensembles X et Y de faon que toute arte (u, v) ait son origine u
dans X et son extrmit v dans Y . Un couplage est un ensemble dartes dun
graphe biparti ayant deux deux des origines et des extrmits distinctes. Un
couplage est optimal si le nombre des artes est maximum. Il est immdiat
de transformer la recherche dun couplage optimal en un problme de flot
maximal. Il suffit dajouter deux sommets s et t et des artes allant de s aux
sommets de X et des sommets de Y t, comme reprsent en page 20 des
transparents du cours, et en munissant toutes les artes de la capacit 1. Le
graphe obtenu est unitaire.
En utilisant cette transformation, on en dduit que le calcul dun couplage parfait est ralisable par un algorithme de complexite O(n5/2 ), rsultat
obtenu initialement dans [2].

49

Bibliographie
[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[2] J. E. Hopcroft, and R. Karp. An n5/2 algorithm for maximum matchings
in bipartite graphs. SIAM J. Comput. 2 (1973), 225-231.
[3] R.E. Tarjan. Data Structures and Network Algorithms. Society for Industrial & Applied Mathematics (1983).

50

Cours 7

(16 novembre)

Entiers
Tests de primalit ; sommes de quatre carrs
Dans cette leon, on prsente des algorithmes efficaces pour reconnatre
si un nombre entier est premier et pour obtenir la dcomposition dun entier
en somme de quatre carrs, suivant le rsultat dmontr en 1770 par le mathmaticien franais Joseph Louis Lagrange. Les algorithmes prsents sont
probabilistes et efficaces.

7.1
7.1.1

Symboles de Legendre et de Jacobi


Dfinitions

Soit p un nombre premier impair, a un entier premier avec p. Le symbole


de Legendre (a|p) vaut (1) si a est un carr modulo p (on dit aussi un rsidu
quadratique modulo p) et 1 sinon. Afin que le symbole soit dfini dans tous
les cas, on pose (a|p) = 0 si p divise a.
Lemme 19 Soit p un nombre premier impair, a, b des entiers positifs ou
ngatifs. On a :
p1
i (a|p) = (1) 2 ;
ii (ab|p) = (a|p)(b|p) ;
Preuve : On rappelle que lanneau des entiers modulo p est un corps et que
les lments a du groupe multiplicatif des lments non nuls ont chacun un
ordre, qui est le plus petit entier d tel que ad = 1 mod p, et qui divise le
nombre dlments du groupe, soit p 1. Si maintenant a est dordre d et u
est un entier, 0 u < d, les lments au mod p sont distincts et solutions de
lquation xd = 1 mod p. Comme lanneau des entiers modulo p est un corps,
51

il ny a pas dautre solution et donc les lments dordre d sont inclus dans
le groupe engendr par a. De plus, au engendre le mme groupe que a si et
seulement si x est premier d (cest dire inversible modulo d), ce quon voit
facilement par des calculs simples sur les exposants de a. Il y a donc (d)
tels gnrateurs, o est la fonction dEuler dfinie par :
Y
(n) =
(pi 1)pei i
i

les pi dcrivant lensemble des facteurs premiers de n, et ei dsignant lexposant de pi dans la factorisation de n.
En notant Nd le nombre de sous-groupes engendrs par un lment dordre
d, il vient :
X
p1=
Nd (d)
d|p1

et chaque Nd est au plus gal 1. En ralit, tous sont gaux 1, ce quon


voit en tablissant, pour n quelconque, lgalit
X
n=
(d)
d|n

laquelle est prouve en examinant successivement le cas o n est premier,


puissance dun nombre premier, puis par rcurrence sur le nombre de facteurs prmiers de n, en utilisant la multiplicativit de n, laquelle dcoule du
thorme des restes chinois. Les dtails sont laisss au lecteur qui pourra se
reporter un cours de thorie des nombres, par exemple [5].
Ayant tabli quil existait un et un seul sous-groupe engendr par un
lment dordre d (et donc par (d) tels lments), pour chaque diviseur d de
p 1, on en dduit en particulier quil y a (p 1) gnrateurs du groupe des
lments non nuls modulo p, et donc que ce groupe est cyclique. Revenant
lenonc du lemme dmontrer, on choisit un gnrateur b du groupe. Les
carrs sont les puissances de b dexposant pair. Pour un tel lment a =
p1
b2u mod p, on a a 2 = bu(p1) = 1 mod p. Pour un non carr, a = bu mod p,
p1
p1
p1
avec u impair, on a a 2 = (b 2 )u mod p. Or b 2 nest pas gal 1 modulo
p, puisque b est dordre p 1. Comme la carr de cette quantit vaut 1,
cest donc quil sagit de lautre racine de lunit dans un corps p lments,
soit 1. Ceci achve la preuve de lassertion i et lassertion ii sen dduit
facilement.

7.1.2

Loi de rciprocit quadratique de Gauss

On va maintenant tablir la clbre loi de rciprocit quadratique de


Gauss publi pour la premire fois par Gauss dans ses Disquisitiones arith52

meticae en 1801 (voir [3]).


Thorme 10 (Loi de rciprocit quadratique de Gauss) Soient p et
q deux nombres premiers impairs, on a
(p|q)(q|p) = (1)
On a galement (2|p) = (1)

p2 1
8

p1 q1
2
2

On commence par tablir le lemme suivant :


Lemme 20 (Lemme de Gauss) Soit p un nombre premier impair, a un
entier premier avec p ; on pose aj = (ja) mod p ; alors, (a|p) vaut (1)n , o
n est le nombre dindices j tels que aj > p/2.
Preuve : On numre les entiers aj > p/2 sous la forme r1 , , rn et les
entiers aj < p/2 sous la forme s1 , , sk . On note que les ri sont deux
deux distincts, car les aj le sont, de mme pour les sj . De plus, une somme
ri + sj nest jamais nulle, car la somme des aj correspondants est de la forme
(j1 + j2 )a avec j1 + j2 < p. Les sj et les p ri sont donc un rarrangement
des entiers 1, , (p 1)/2. Prenant leur produit, il vient
(p1)/2

(p1)/2

aj = a

p1
2

j=1

j=1

= (a|p)

n
Y

p ri

i=1

k
Y

sj

j=1
(p1)/2

= (a|p)(1)

j,

j=1

do le rsultat.
On tablit ensuite le lemme suivant :
Lemme 21 Soit p un nombre premier impair, a un entier impair et premier
p ; alors (a|p) est la somme modulo 2 des entiers bja/pc quand j dcrit
lensemble des entiers 1, , (p 1)/2.
Preuve : On note S la somme modulo 2 des entiers bja/pc. On observe que
ja = bja/pc.p + (ja) mod p. En faisant la somme de tous les ja, il vient
(p1/2

j = Sp +

n
X

j=1

i=1

53

ri +

k
X
j=1

sj .

Par ailleurs, la somme


n
k
X
X
(p ri ) +
sj
i=1

vaut

P(p1/2
j=1

j=

(p1)(p+1)
.
8

j=1

Par addition des galits, on obtient :

k
X
(p 1)(p + 1)
(a + 1)
= np + Sp + 2(
sj ).
8
j=1

Les entiers a et p tant impairs, il vient :


m + S = 0 mod 2,
ce qui donne le rsultat attendu,
On note que la seconde assertion du thorme rsulte de la preuve cidessous : il suffit de considrer le cas o a vaut 2 au lieu dtre impair ; on
modulo 2. En observant que
dduit des calculs que S + n vaut (p1)(p+1)
8
aj = 2j est < p, on observe que chaque terme de la somme S est nul, ce qui
suffit pour conclure.
Il reste achever la preuve de la loi de rciprocit quadratique. On considre lensemble form des couples (x, y), 1 x (p 1)/2, 1 y
lments. On partage
(q 1)/2. On note que a exactement (p1)(q1)
4
en deux sous ensembles S1 et S2 suivant que qx > py ou non. On note que
pour x fix, le nombre dlments de S1 dont la premire coordonne est x
est exactement bqx/pc. Le nombre dlments de S1 est ainsi la somme considre dans le lemme prcdent pour calculer le symbole (q|p). De mme, le
nombre dlments de S2 est-il la somme considre dans le lemme prcdent
pour calculer le symbole (p|q). On en dduit que le produit des deux symboles
(p1)(q1)
4
, ce qui est le rsultat tablir.
vaut (1)|| = (1)

7.1.3

Symbole de Jacobi

Soit a et n des entiers, n tant impair et positif. On crit n Q


sous forme
dun produit de facteurs premiers non ncessairement distincts n ki=1 qi . Le
symbole de Jacobi (a|n) est alors dfini par
(a|n) =

k
Y
(a|qi ),
i=1

o les quantits (a|qi ) sont des symboles de Legendre.


54

Lemme 22 Soient a b des entiers, n, m des entiers impairs positifs ; on a :


i (ab|n) = (a|n)(b|n) ;
ii (a|nm) = (a|n)(a|m) ;
n1
iii ((1)|n) = (1) 2
n2 1

iv ((2)|n) = (1) 8
(n1)(m1)
4
v (m|n)(n|m) = (1)

Preuve : La preuve repose sur des calculs simples. Les points i et ii sont
immdiats. Le point iii et le point iv reposent sur les galits :
ab 1
a1 b1
=(
+
) mod 2,
2
2
2
a2 1 b 2 1
a2 b 2 1
=(
+
) mod 2,
8
2
2
pour a et b impairs. Le point v repose sur la loi de rciprocit quadratique
et lgalit
X pi 1
m1
=
2
2
Q
o m est impair et m = pi est la dcomposation de m en facteurs premiers
non ncessairement distincts. Les dtails sont laisss au lecteur.
La loi de rciprocit quadratique a une consquence algorithmique tout
fait remarquable, qui est lexistence dun algorithme de complexit cubique
(en la taille des entiers) qui calcule le symbole de Jacobi (m|n). De fait,
le calcul suit essentiellement un algorithme de pgcd. On note Jacobi(m, n)
lalgorithme quon appelle pour n impair et 0 < m < n (le cas m ngatif
sen dduisant laide des rgles i iii du lemme ci-dessus). Lalgorithme est
rcursif et procde comme suit :
1. Extraire de m la plus grande puissance de 2, m = 2h m0 , m0 impair ; si
n2 1
h est impair, calculer t = (1) 8 ;
0

1)
2. Si m0 = 1, retourner t ; sinon calculer t = t.(1) (n1)(m
et n0 =
4
0
n mod m ;

3. Si n0 = 0 retourner 0 ; sinon, appeler rcursivement Jacobi(n0 , m0 ) ;


retourner t.Jacobi(n0 , m0 ).

55

7.2
7.2.1

Tests de primalit
Test de Solovay et Strassen

Le test de Solovay et Strassen a t publi dans [9]. Il prend en entre un


entier positif impair dont on veut connatre la primalit et itre au plus k
fois le test suivant :
1. choisir a au hasard entre 1 et n-1
n1
2. calculer le symbole de Legendre x = (a|n) et la quantit y = a 2 mod
n ; si x 6= y retourner compos.
Si le test na pas retourn compos aprs k itrations, lentier est dclar
probablement premier.
Thorme 11 Soit n un entier positif impair. Si le test de Solovay et Strassen retourne compos, alors n nest pas premier. Si inversement n nest pas
premier, alors la probabilit prise sur les choix successifs des alas quil soit
dclar probablement premier est 1/2k .
Avant dtablir la preuve du thorme, on observe que les calculs effectus
ltape 2 sont de complexit cubique, si lon se rfre lalgorithme de calcul
du symbole de Jacobi, propos la section prcdente et qui repose sur la
loi de rciprocit quadratique de Gauss.
On observe galement que la qualification probablement premier est
- dans un sens mathmatique - dnue de sens : un nombre est premier
ou non ! La qualification compose constitue une preuve de non primalit,
ainsi quon va le voir. La qualification probablement premier est, en un
certain sens, une vrit heuristique, dont on peut parfaitement se contenter,
spcialement si k est grand.
Preuve : Si le test retourne compos, alors n ne peut tre premier, puisque,
si ctait le cas, le symbole de Jacobi conciderait avec le symbole de Legendre
n1
et serait donc calcul par la formule (1) 2 . Si maintenant, n est compos,
alors lensemble des entiers a, qui sont inversibles modulo n et tels que (a|n) =
n1
a 2 mod n est un sous-groupe du groupe des lments inversibles modulo n.
Ce sous-groupe est propre. On suppose le contraire et on distingue deux cas
suivant que que n est ou non divisible par le carr dun nombre premier p.
Dans le premier cas, on choisit un gnrateur g du groupe des lments
inversibles modulo p et on calcule g p1 mod p2 . Si cette quantit est diffrente
de 1, on pose h = g ; sinon, on pose h = g(1 + p). On note que h = g mod p.
Il sensuit que lordre de h modulo p2 est un multiple de lordre de g modulo
p, soit p 1. Par ailleurs, dans le second cas, on a :
hp1 = (1 + p)p1 mod p2 = 1 + p(p 1) mod p2 .
56

Donc, dans les deux cas, hp1 nest pas gal 1 modulo p2 . Il en rsulte que
lordre de h modulo p2 qui divise lordre du groupe des lments inversibles
modulo p2 , soit p(p 1) est en fait gal p(p 1). Par le thorme des restes
chinois, il existe un entier a tel que a soit gal h modulo p2 et a soit gal
1 pour tous les autres nombres premiers de la factorisation de n. La quantit
n1
a 2 nest pas gale 1 ni 1 : en effet, son carr an1 vaudrait alors 1
modulo p2 , donc n 1 serait multiple de lordre p(p 1) de a. On aurait ainsi
trouv un diviseur commun p n et n 1.
Dans le second cas, on peut crire n comme produit dun nombre premier
p et dun entier m > 1 non divisible par p. On utilise nouveau le thorme
des restes chinois : soit u un non rsidu quadratique modulo p et v un carr
modulo m. Soit a congru u modulo p et v modulo m. Par hypothse,
n1
a 2 vaut (a|p)(a|m) = (u|p)(v|m) = 1. Soit maintenant, toujours par le
thorme des restes chinois, b tel que b = 1 mod p et b = a mod m. On a
n1
n1
n1
n1
b 2 mod p = 1 et b 2 mod m = a 2 mod m = 1 et donc b 2 mod n ne
peut tre gal ni 1 ni 1 et donc nest pas une valeur dun symbole de
Jacobi, do la contradiction cherche.
Finalement, lensemble des entiers a, qui sont inversibles modulo n et tels
n1
lments, ce qui est infrieur n2
que (a|n) = a 2 mod n a au plus (n)
2

7.2.2

Test de Rabin

Le test de Rabin a t publi dans [7], mais il est analogue un autre


test propos antrieurement par Miller [6], dans un cadre non probabiliste,
fond sur lhypothse de Riemann gnralise.
Le test prend en entre un entier positif impair n dont on veut connatre
la primalit et itre au plus k fois le test suivant :
1. choisir a au hasard entre 1 et n-1 ;
2. calculer lexposant d de n dans la dcomposition en facteurs premiers
de n 1 ;
n1

3. calculer x0 = a 2d mod n par lalgorithme des carrs rpts ; calculer


ensuite xi = x2i1 mod n pour i de 1 d ;
4. si x0 6= 1 mod n et xi 6= 1 pour i = 0, d 1, alors retourner
compos.
Si le test na pas retourn compos aprs k itrations, lentier est dclar
probablement premier.et
En utilisant lexponentiation modulaire par carr rpt, le temps dexcution de cet algorithme est cubique.

57

Thorme 12 Soit n un entier positif impair. Si le test de Rabin retourne


compos, alors n nest pas premier. Si inversement n nest pas premier,
alors la probabilit prise sur les choix successifs des alas quil soit dclar
probablement premier est 1/4k .
Preuve : On se borne ici tablir que, si le test retourne compos, alors n
ne peut tre premier, et on renvoie le lecteur larticle [7] pour limplication
inverse. Si le test retourne compos et si la valeur de xd est diffrente de
1, alors on a xn1 6= 1 mod n. Comme tous les lments a compris entre 1
et n 1 sont tels que an1 = 1 mod n lorsque n est premier, on peut bien
conclure que ce nest pas le cas. Si maintenant xd = 1, on choisit le plus
grand indice i tel que xi 6= 1 et on observe que xi est une racine carre de
lunit qui nest gale ni 1 ni 1. Ceci ne peut se produire dans le cas
o n est premier car lanneau des entiers modulo n est alors un corps, dans
lequel lqaultion x2 = 1 na que deux racines. La preuve est ainsi acheve.

7.2.3

Tests dterministes

Les deux tests prsents dans les sections prcdentes sont - comme on
la expliqu - de nature probabiliste. De fait, si lon admet lhypothse de
Riemann gnralise, la mthode de Rabin peut tre rendue dterministe :
plus prcisment, on peut prouver que, si lon a test toutes les valeurs de a
comprises entre 1 et 2(log n)2 , et que n na pas t dclar compos, alors il
est premier. En labsence dhypothse supplmentaire, lexistence dun test
dterministe de complexit polynomial est un rsultat tabli en 2002 par
Agrawal, Kayal et Saxena[1].

7.3

Dcomposition dun entier en somme des


quatre carrs

Dans ce paragraphe, on va, aprs quelques rappels sur la division des


des polynmes et des entiers de Gauss, tudier un algorithme probabiliste
permettant dobtenir la dcomposition dun entier en somme de quatre carrs.
Lexpos suit larticle de Rabin et Shallit [8].

7.3.1

Division des polynmes et des entiers de Gauss

Lopration de division euclidienne des polynmes coefficients dans un


corps est bien connue. Elle sapplique en particulier des polynmes coefficients entiers modulo p, o p est premier : le quotient de A par B, est un
58

polynme Q et le reste R un polynme de degr strictement infrieur celui


de B. La complexit de la division ainsi pratique est celle de n oprations
arithmtiques sur les entiers p, o n est le degr des polynmes donns,
soit O(n(log p)2 ), avec les algorithmes habituels.
A partir de la division avec reste, on peut construire un algorithme dEuclide de complexit O(n2 (log p)2 ), qui calcule le pgcd de deux polynmes.
Lanneau des entiers de Gauss est form des nombres complexes de la
forme x + iy, avec x et y entiers. Dans
pcet anneau, les lments inversibles
sont ceux dont le module |x + iy| = x2 + y 2 vaut 1, soit 1, 1, i et i.
Une opration de division euclidienne avec reste peut tre dfinie en gnral :
a + ib et x + iy tant donns, on peut trouver p + iq et r + is tels que
a + ib = (p + iq)(x + iy) + r + is,
avec |r + is| < |x + iy|.
Pour calculer p + iq et r + is, on peut considrer le nombre complexe
coefficients rationnels (a + ib)(x + iy)1 , soit u + iv et calculer les entiers p
et q les plus proches de u et v. le module de la diffrence (u + iv) (p + iq)
est au plus 12 ce qui donne le rsultat annonc avec |r + is| 12 |x + iy|. La
complexit de la division ainsi pratique est celle des oprations arithmtiques
sur les entiers, soit quadratique en la taille avec les algorithmes habituels.
A partir de la division avec reste, on peut construire un algorithme dEuclide qui calcule le pgcd de deux entiers de Gauss. Sa complexit est celle de
O(log N ) oprations arithmtiques, o N est un majorant des modules des
entiers considrs.

7.3.2

Sommes de deux carrs

On tudie dabord le cas dun nombre premier p congru 1 modulo 4 et


on donne une version algorithmique du thorme de Fermat-Lagrange.
Thorme 13 Soit p un nombre premier congru 1 modulo 4 ; il existe un
algorithme probabiliste de complexit moyenne O(logp) oprations arithmtiques sur les entiers p, qui dcompose p en somme de deux carrs, cest
dire qui calcule x et y tels que x2 + y 2 = p.
p1

Preuve : On pose p = 4k + 1. Le symbole de Legendre (1|p) = (1) 2 =


(1)2k mod p vaut 1, et donc (1) est un carr modulo p. Soient u0 et u1
+b
ses racines carres. Soit b alatoire ; lapplication b uu10 +b
est une bijection
de lensemble des entiers modulo p - priv de u1 - dans lui mme - priv
de 1. Avec une probabilit qui est essentiellement 1/2, u0 + b et u1 + b ont
donc des symboles de Legendre diffrents, par exemple (u0 + b|p) = 1 et
59

(u1 + b|p) = 1. Le nombre u0 + b est alors la seule racine commune aux


deux polynmes (u b)2 + 1 et u2k 1 : en effet u1 + b est lautre racine de
(ub)2 +1 mais sa valeur en le second polynme est 2. En calculant le pgcd
des deux polynmes, on trouve le polynme u (u0 + b) et donc la valeur
de u0 . Il est noter que la complexit de ce calcul de pgcd est moindre que
dans le cas gnral : en effet, il sagit simplement de calculer, par la mthode
des carrs rpts, la valeur modulo (u b)2 + 1 de u2k ; on ne manipule ainsi
que des polynmes de degr 2, ce qui ne produit, pour chacune des O(log p)
itrations, quun nombre constant doprations arithmtiques.
Une fois trouv un entier u tel que u2 + 1 = 0 mod p, on calcule le pgcd
de p et u + i dans les entiers de Gauss, toujours en O(log p) oprations
arithmtiques. Soit x + y le rsultat du calcul de pgcd. La quantit x2 + y 2
divise la fois p2 et u2 + 1 < p2 . Elle est donc gale 1 ou p. reste voir,
pour achver la preuve du thorme, que p et x + iy ne peuvent tre premiers
entre eux. Si cest le cas, alors p divise u2 + 1 = (u + i)(u i) et est premier
avec u + i. Il divise donc u i et donc le carr de son module, soit p2 divise
u2 + 1 < p2 , ce qui donne bien une contradiction.

7.3.3

Sommes de quatre carrs

On tablit maintenant le rsultat suivant :


Thorme 14 Il existe un algorithme probabiliste de complexit moyenne
O((log n)2 log log n) oprations arithmtiques sur les entiers n, qui dcompose un entier n en somme de quatre carrs.
Preuve : On suppose dabord n pair de la forme 2(2k + 1). On applique
alors un thorme profond de Linnik [4], qui prouve que le nombre de pre, pour
miers p < n tels que n p soit somme de deux carrs est > log n An
log log n
une constante A. On observe quune telle somme de carrs est ncessairement
compose du carr dun nombre pair et du carr dun nombre impair. Le premier carr est congru 0 modulo 4 et le second 1. Comme n est congru
2 modulo 4, p est bien congru 1 modulo 4 et on peut donc lui appliquer
la

mthode de la section prcdente. En prenant au hasard x et y, < n, on


trouve donc - avec en moyenne O(log n log log n) essais - un nombre premier
p = n x2 y 2 , qui se dcompose en deux carrs en O(log n) oprations
arithmtiques. Il faut prendre garde quen sappliquant un entier non premier, la mthode de la section prcdente ne garantit pas la terminaison. On
doit donc - par exemple - terminer lalgorithme ds que le choix de lala b
ne conduit pas une valeur unique dune racine carre de 1 modulo p.
Si n est impair, on applique la mthode prcdente 2n, ce qui permet
dcrire 2n = x2 + y 2 + u2 + v 2 . Comme 2n est congru 2 modulo 4 et que
60

les carrs modulo 4 valent 0 ou 1, il y a deux carrs de nombres pairs et deux


carrs de nombres impairs, par exemple x et y sont pairs et u, v impairs. On
crit alors
n = ((x y)/2)2 + ((x + y)/2)2 + ((u + v)/2)2 + (u v)/2)2 .
Enfin, si la dcomposition de n en facteurs premiers admet une puissance
de 2 dexposant 2, on extrait la plus grande puissance de 2 dexposant pair
et on se trouve ainsi ramen lun des deux cas prcdents.

61

Bibliographie
[1] M. Agrawal, N. Kayal and N. Saxena. PRIMES is in P, preprint , 2002.
[2] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[3] C. F. Gauss. Disquisitiones Arithmeticae, Springer, 1986.
[4] Ju. V. Linnik. An asymptotic formula in an additive problem of HardyLittlewood, Izv. Akad. Nauk SSSR. Ser. Mat., 24, 1960, 629706.
[5] I. Niven, H. S. Zuckerman, H. L. Montgomery. An Introduction to the
Theory of Numbers, 5th edition, Wiley, 1991.
[6] G L. Miller. Riemanns Hypothesis and Tests for Primality, Journal of
Computer and System Sciences 13 (3), 1976, 300317.
[7] M. O. Rabin, Probabilistic algorithm for testing primality, Journal of
Number Theory 12 (1), 1980, 128138.
[8] M. O. Rabin, J. O. Shallit. Randomized algorithms in number theory,
Comm. Pure Appl. Math. 39 (1986), 239256.
[9] R. M. Solovay and V. Strassen. A fast Monte-Carlo test for primality,
SIAM Journal on Computing 6 (1), 1977, 8485.

62

Cours 8

(23 novembre)

Transformation de Fourier rapide


Algorithme de multiplication rapide des
entiers
Dans cette leon, on prsente lalgorithme de Schnhage et Strassen, qui
permet de multiplier deux entiers de n bits en O(n log n log log n) oprations.
Cet algorithme a t publi dans [4]. On trouve un expos dans louvrage [1].

8.1
8.1.1

Transformation de Fourier dans un anneau


Dfinitions

Soit n un entier positif. On appelle racine primitive n-ime de lunit dans


un anneau, un lment de cet anneau, tel que :
i n = 1
ii Pour tout indice i, i = 1, , n 1,
1 + i + 2i + + (n1)i = 0.
On note que, si n est pair, et si n est inversible dans lanneau, on obtient
n/2 = 1 e, faisant i = n/2 dans lquation ii ci-dessus.
En reprenant lalgorithme de FFT et de FFT inverse exposs dans le
cours, le lecteur pourra vrifier que, ds que n est une puissance de 2, inversible dans un anneau donn, et ds quon dispose dune racine primitive
n-ime de lunit dans cet anneau, on peut implanter ces deux algorithmes.

63

8.1.2

Nombres de Fermat

On appelle nombre de Fermat un entier m de la forme de la forme m =


+ 1, avec et n puissances de 2.
n/2

Lemme 23 Dans lanneau des entiers modulo m, est racine primitive nime de lunit et n est inversible.
Preuve : Pour voir que est racine primitive n-ime de lunit, on observe
dabord que n/2 = m 1 et donc que n = 1 mod m. On value ensuite
P ( j ) o P est le polynme P (t) = 1 + t + + tn1 , dont il est facile de voir
que cest le produit des binmes 1 + t` pour ` = 1, , 2k1 , k tant lentier
tel que n = 2k . On constate que P ( j ) est nul en isolant les puissances de 2
dans j, soit j = u2t , t < k, u impair, et en fixant i de manire que lexposant
de 2 dans la dcomposition en facteurs de j2i soit exactement k 1. Il vient
i
1 + ( j )2 = 1 + ( n/2 )u = 0 mod m, ce qui implique bien que P ( j ) vaut
zro.
Reste voir que n = 2k est inversible. En observant que n excde n et
quil sagit de puissances de deux on en dduit que n divise n , soit n = nv
pour un entier v. Modulo m, v est linverse de n, ce quil fallait dmontrer.

8.1.3

Convolution cyclique de polynmes coefficients


entiers

Soit A et B deux polynmes de degr n 1


A(x) = a0 + a1 x + + an1 xn1 ,
B(x) = b0 + b1 x + + bn1 xn1 .
Il est possible de calculer le produit AB modulo xn 1, appel galement
convolution cyclique, comme polynme coefficients dans lanneau des entiers modulo m en oprant comme suit :
B
de A et B,
1. Calculer les transformes de Fourier A,

2. calculer le produit terme terme de A et B,


3. appliquer la transformation de Fourier inverse au rsultat prcdent.
La complexit de chaque tape est :
1. O(n log n) oprations de cot O(log m) pour ltape 1,
2. n multiplications modulo m pour ltape 2,
3. O(n log n) oprations de cot O(log m) pour ltape 3.
64

Le cot modr assign aux oprations de FFT vient de ce que ce sont des
additions ou des multiplications modulo m par des puissances de deux, qui
ont un cot seulement linaire. En supposant que est petit, disons major
par 256, on obtient une complexit qui est O(n2 log n) + n(m), o (m)
dsigne le temps de calcul dune multiplication modulo m.
Le calcul ci-dessus est exact, cest dire fournit le produit de A et B
modulo xn1 au sens des entiers, si les coefficients ai et bj sont majors en
valeur absolue par M et si 2nM 2 m. En effet chaque coefficient de la
convolution cyclique
X
ai b j
i+j=u mod n

est alors major par m/2 et donc parfaitement dtermin par son reste modulo m. De mme, le produit est exact si les ai et bj sont positifs majorspar
M et si nM 2 m. Dans ce dernier cas, si M est seulement major par m,
il est possible de dterminer le produit exact en calculant galement la valeur
modulo n de AB modulo xn 1, ce qui correspond calculer directement les
valeurs modulo n de chaque coefficient de la convolution cyclique. Les entiers
n et m tant premiers entre eux, le thorme des restes chinois permet de
calculer la valeur modulo mn dun coefficient c de la convolution cyclique
partir de ses valeurs cm et cn modulo m et n.
En termes de complexit, le surcot attach lapplication du thrme
des restes chinois est ngligeable : comme m-1 est divisible par n, il est facile
de voir quun coefficient c est calcul par cm + m((cn cm ) mod n).
Le surcot attach aux petites multiplications, cest dire aux multiplications modulo n est a priori non ngligeable puisquil correspond O(n2 )
multiplications de nombres de log n bits. Le lemme suivant montre quon
peut cependant rendre cette complexit moindre que celle des tapes 1 3
du calcul modulo m.
Lemme 24 Il existe un algorithme de calcul des petites multiplications de
complexit 0(n2 ).
Preuve : Lide est dvaluer (A mod n)(B mod n) au point = 3dlog ne.
Il sagit dune simple multiplication de deux entiers, qui peut tre ralise en
temps O(nlog 3 ) par lalgorithme rcursif vu en cours (algorithme de Karatsuba). Cette complexit est bien un O(n2 ). Par ailleurs AB scrit
0 + 1 x + + 2n2 x2n2 ,
o chaque u est le coefficient
X

ai b j ,

i+j=u

65

lequel est major par n3 . Par suite, dans le calcul, de les termes u (2 )u ont
des dcompositions binaires qui ne se chevauchent pas. Lcriture binaire du
produit (A mod n)(B mod n) valu en donne donc celle des coefficients
u par lecture directe. Les valeurs de la convolution cyclique modulo n sen
dduisent par la formule cu = i + u+n mod n.

8.1.4

Produit de polynmes modulo xn + 1

La mthode ci-dessus peut sadapter mutadis mutandis au calcul de deux


polynmes modulo xn + 1. On explique les principales modifications la mthode de la section prcdente. Onsuppose que est une puissance paire de
deux, ce qui permet de dfinir = . On peut alors effectuer le changement
de variable x = y et obtenir deux polynmes en y, soit A(y) = A(y) et
B(y) = B(y). Le calcul de A.B modulo y n 1 et modulo m = n/2 + 1
donne un rsultat C(y). On dfinit alors C(x) = C( x ). On a, en calculant
dans lanneau des entiers modulo m :
A(y).B(y) = C(y) mod y n 1.
Soit,
A(y).B(y) = C(y) mod y n 1,
do, par changement de variable,
x
A(x).B(x) = C(x) mod ( )n 1.

La quantit n valant 1, le calcul est bien modulo xn + 1, comme requis.


On note que le surcot en termes de complexit est li aux changements
de variable : comme est une puissance de deux, chaque coefficient est calcul
en temps linaire ce qui donne au plus un cot supplmentaire O(n2 ), qui est
moindre que le cot des FFT.
Il y a aussi des modifications dans la dtermination du calcul exact. En
effet, les coefficients du produit modulo xn + 1 sont donns par une fomule
diffrente :
X
X
cu =
ai b j
ai b j .
i+j=u

i+j=n+u

Cette formule permet de localiser les valeurs des coefficients dans un intervalle
de longueur nM 2 , lorsque les ai et les bj sont positifs majors par M . Cet
intervalle dpend de u et est de la forme [(n u 1)M 2 , (u + 1)M 2 ]. Cette
localisation permet de calcul de cu partir de ses valeurs modulo m et n. Les
dtails sont laisss au lecteur.
66

8.1.5

Conclusion

En rsum, on a montr dans cette section comment calculer par FFT


de manire exacte le produit de deux polynmes de degr n modulo xn 1
ou xn + 1 lorsque n est une puissance de 2 et
que les coefficients des deux
polynmes sont majors par une valeur M m, o m est le nombre de
Fermat n/2 + 1, tant aussi une puissance de 2.
En supposant que petit, par exemple major par 256, le calcul a une
complexit qui est O(n2 log n) + n(m), o (m) dsigne le temps de calcul
dune multiplication modulo m.

8.2

Multiplication rapide des entiers

Lalgorithme de Schnhage et Strassen prend en entre un entier q puissance de 2 et deux entiers poitifs u, v 2q et forme le produit uv mod 2q + 1.
Sa complexit est en O(q log q log log q). En prenant q plus grand que le
nombre de bits de u et v, on obtient un algorithme exact de multiplication
rapide des entiers. Il est noter que cet algorithme semble complexe mais
quil a t implant (voir [5]). La performance devient meilleure que celle
de lalgorithme rcursif de Karatsuba partir de 20000 chiffres dcimaux
environ.

8.2.1

Algorithme de Schnhage et Strassen

Lalgorithme est rcursif. On va dabord expliciter la rcursivit dans le


cas o q est un carr, cest dire une puissance paire de 2 ; on crit q = n2
et on pose m = n/2 + 1, avec = 16.
Partant de lcriture binaire de u et v sur q bits, ce qui laisse de ct
les cas simples o lun des entiers u, v vaut 2q , on forme n blocs de n bits
chacun. Ceci revient considrer deux polynmes A(x) et B(x) de degr
n 1 coefficients positifs majors par M = 2n , soit :
A(x) = a0 + a1 x + + an1 xn1 ,
B(x) = b0 + b1 x + + bn1 xn1 ,
tels queu = A(2n ) et v = B(2n ). On constate que M est major par 2n

m ' 16n/2 = 2n . On est donc prcisment dans les conditions de la section


prcdente, rsumes dans le paragraphe 8.1.5, et on peut donc calculer le
produit AB modulo xn + 1 avec une complexit O(n2 log n) + n(m), o
(m) dsigne le temps de calcul dune multiplication modulo m. On observe
galement que ce produit, valu au point 2n , vaut A(2n )B(2n ), un multiple
67

prs de (2n )n + 1. Il fournit donc la valeur de uv mod 2n , cest dire de


uv mod 2q , comme attendu. Enfin, les multiplications modulo m sont gres
en appelant rcursivement lalgorithme.
En conclusion, lorsque q = n2 , la complexit (2q +1) de la multiplication
rapide modulo 2q + 1 vrifie lquation rcursive :
(2q + 1) = O(n2 log n) + n(22n + 1).
On examine maintenant les modifications apporter dans le cas o q est
une puissance impaire de 2, quon crit q = 2n2 . On pose h = 2n, m =
n/2 + 1, avec = 256. Les polynmes A(x) et B(x) sont dfinis en formant,
dans lcriture binaire de u et v sur qbits, nblocs de h bits chacun. On
constate que M est major par 2h m ' 256n/2 = 22n = 2h . On est
donc nouveau dans les conditions de la section prcdente, rsumes dans
le paragraphe 8.1.5, et le reste de largumentation est inchange.
Lorsque q = 2n2 , la complexit (2q ) + 1 de la multiplication rapide
modulo 2q + 1 vrifie lquation rcursive :
(2q + 1) = O(n2 log n) + n(24n + 1).

8.2.2

Complexit de lalgorithme
q

On pose uq = (2 q+1) . Les deux quations rcursives de la section prcdente deviennent :


uq = O(log q) + 2u2n
correspondant au cas q = n2 , et
uq = O(log q) + 2u4n
correspondant au cas q = 2n2 . On pose (q) = 2n si q = n2 et (q) = 4n si
q = 2n2 , ce qui permet dvaluer la profondeur de la rcursivit.
Lemme 25 On a p (q) 16 ds que p est log log q.
Preuve : Soit q = 2k ; (k) = log((2k )). Il vient, si k est pair, (k) = k2 + 1,
et si k est impair (k) = k2 + 32 . Dans tous les cas, on a (k) k2 + 32 , ce qui
donne rcursivement
p (k)

k
1
1
k
+ 3( p + + ) p + 3,
p
2
2
2
2

qui est bien 4 ds que p log k, ce quil fallait dmontrer.


68

On dduit du lemme, avec les mmes notations, que lon a :


uq O(k + 2(k) + + 2p1 p1 (k)) + 2p up (q) .
Prenant p = dlog ke, on constate que le premier terme du majorant est un
O(kp) et le second un O(k). On a ainsi tabli que uq = O(k log k) et donc
que (2q + 1) est bien - comme annonc - en O(q log q log log q).

8.2.3

Amlioration de lalgorithme de Schnage et Strassen

En 2007, Martin Frer a - plus de 35 ans aprs les rsultats de Schnage


et Strassen, amlior la meilleure borne de complexit pour un algorithme
de multiplication de deux entiers de n bits. Ce rsultat peut tre trouv

dans [3]. La borne de Frer est en O(n log n2log n ), o logn dsigne le nombre
ditrations de la fonction log ncessaires pour atteindre une valeur 1. La
fonction log n croit moins vite que log n, log log n etc.

69

Bibliographie
[1] A. V. Aho, J. E. Hopcroft and J. D. Ullman . The Design and Analysis
of Computer Algorithms, Addison Wesley, 1974.
[2] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[3] Martin Frer. Faster integer multiplication, Proceedings of STOC 2007,
57-66.
[4] A. Schonhage and V. Strassen. Schnelle Multiplikation grosser Zahlen,
Computing 7, 1971, 281-292.
[5] Paul Zimmermann. Implantation de lalgorithme de Schnhage en C
avec la bibliotheque BigNum.
http ://www.loria.fr/ zimmerma/bignum/schon.bignum.c

70

Cours 9

(30 novembre)

Algbre linaire et gomtrie des


nombres
Algorithme LLL de rduction des rseaux
Dans cette leon, on prsente lalgorithme de rduction des rseaux de
Lenstra, Lenstra et Lovsz [3], qui fournit une base dun rseau ayant des
vecteurs qui sont tous relativement courts. Cet algorithme permet notamment de calculer un vecteur du rseau qui est dans un rapport constant de
loptimum. Ce rapport reste exponentiel en la dimension du rseau et la
question de savoir si on peut garantir un rapport polynomial est ouverte.
Lalgorithme LLL est prsent dans louvrage [1].

9.1
9.1.1

Rseaux coordonnes entires


Dfinitions

Un rseau est un sous-groupe discret dun espace Rn . Dans le point de


vue algorithmique adopt dans cette leon, on ne sintresse quaux rseaux
coordonnes entires, qui sont des sous-groupes de Zn . Une base dun rseau
est une suite de vecteurs linairement indpendants (b1 , , bk ), qui engendre
le rseau par combinaisons linaires coordonnes entires. Le nombre dlments k dune base est la dimension du rseau. A toute base est associe
une matrice B dont les k colonnes sont les vecteurs de base. Le dterminant
est un entier positif et sa rade la matrice symtrique dfinie positive BB
cine carre est note (B). Cest en fait un invariant du rseau : deux bases
se correspondent par une matrice de changement de base U de dimension
(k k), coordonnes entires, dont linverse V est galement coordonnes

71


entires. Posant B 0 = BU , il vient (B 0 ) = det(U BBU
)1/2 = |det(U )|(B).
En prenant lidentit analogue pour V , on en dduit que |det(U )||det(V )|
vaut 1, et donc que les deux dterminants det(U ) et det(V ) valent 1. La
matrice U est dite unimodulaire et on a bien (B 0 ) = (B).
On peut donc dfinir le dterminant dun rseau L, soit (L) comme celui
dune quelconque de ses bases... pour autant quon sache que tout rseau admet une base. Ce nest pas un rsultat compltement vident en gnral, mais
- dans le cas simple des rseaux coordonnes entires - on peut considrer
les familles libres ayant le plus grand nombre dlments k et en choisir une
(b1 , , bk ) de dterminant minimum (B), puisque le carr du dterminant
est entier. Si une telle famille nengendre pas le rseau, on prend b hors du
sous-rseau engendr par la base et on crit
b=

k
X

i bi

o les i sont rationnels. Le vecteur b0 dfini par


k
k
X
X
b =b
bi cbi =
(i bi c)bi
0

reste dans le rseau et a toutes ses coordonnes < 1. En extrayant de la


famille (b, b1 , , bk ) une famille libre (b0 , b1 , , bi1 , bi+1 , , bk ), on obtient
un dterminant qui vaut |i bi c|(B), contradiction.
Un plus court vecteur dun rseau L est un vecteur non nul b L dont
la norme euclidienne ||b|| est minimale. Le thorme de Minkowski senonce
comme suit :
Thorme 15 Soit S une partie convexe symtrique de lespace engendr
par un rseau L de dimension k. Si le volume de S est > 2k (L), alors S a
un point non nul dans L.
Il rsulte de ce thorme que le plus court vecteur dun rseau est de lon2
(L)1/k , o Vk est le volume de la boule unit dun
gueur majore par 1/k
Vk

espace de dimension k. Toutefois, la preuve du thorme de Minkowski est


non constructive et lalgorithme LLL est, dune certaine faon, une version
algorithmique du thorme.

9.1.2

Orthogonalisation de Gram-Schmidt

Etant donne une base (b1 , , bk ) dun rseau, on peut lui appliquer
lorthogonalisation de Gram-Schid vue dans le cours de base. On obtient une
72

suite de vecteurs (b1 , , bk ), coefficients rationnels, deux eux orthogonaux, tels que, pour tout i k, (b1 , , bi ) et (b1 , , bi ) engendrent le mme
sous-espace. ces vecteurs, ainsi que les coefficients it , 1 t i 1, sont
dfinis par :
i1
X

it bt
bi = bi +
t=1

ce qui donne

(bi , bt )
||bt ||2
Les coefficients it sont ceux dune matrice triangulaire suprieure T , dont la
i-me colonne est compose des coefficients (i1 , , ii1 , 1), et qui permet
de calculer la matrice B des bi en fonction de la matrice B des bi par la
formule B = B T . Cette formule montre que le dterminant du rseau (L)
est gal la racine carre du dterminant
B B , soit au produit
Qkde lamatrice
Q
k
2

i=1 ||bi || , a priori rationnel est donc


i=1 ||bi ||. Le carr de ce produit, soit
en fait un entier.
Conservant les notations ci-dessus, on considre un entier i 2 et on note
Li le rseau
dimension i 1 engendr par (b1 , , bi1 ). Son dterminant
Qde
i1
est i = j=1 ||b j|| et son carr est un entier. Toutefois, ce dterminant
nest pas un invariant du rseau. Cest prcisment ce qui sera le fondement
de lalgorithme LLL. Le lemme suivant prcise rle de i et sera utile dans
la suite.
it =

Lemme 26 Chaque coordonne de bi est un rationnel dont le dnominateur divise 2i et chaque coefficient it , t i 1, est un rationnel dont le
dnominateur divise 2t+1 .
Preuve : Le cas i = 1 est clair en considrant que i vaut 1 et lon se
restreint dans la suite i 2. Si lon note Bi la matrice dont les colonnes
sont les vecteurs (b1 , , bi1 ), alors, daprs ce qui a t vu dans le cours
de base, bi est est exactement donn par (I Bi+ )(bi ), o Bi+ est le pseudoinverse de Bi , soit (Bi Bi )1 B. Toutes les matrices du second membre sont
coordonnes entires et linversion introduit un dnominateur qui est le
dterminant de (Bi Bi ) soit 2i . Ceci tablit la premire assertion du lemme.
Pour la seconde on considre la formule
(bi+1 , bt )
i+1,t =
||bt ||2 .
On
les coordonnes de bt ont un dnominateur qui divise 2t soit
Qt1sait que
2
2
j=1 ||bj || . Tenant compte de la division par ||bt || , le dnominateur devient
Qt
un diviseur de j=1 ||bj ||2 soit 2t+1 .
73

9.2
9.2.1

Algorithme LLL
Prsentation

Lalgorithme LLL prend en entre une base (b1 , , bk ) dun rseau


coordonnes entires et calcule une base dite rduite au sens de Lovsz. Une
telle base a les deux proprits suivantes :
tous les coefficients it , 1 t < i k sont tels que |it | 1/2
pour tout indice i, 1 i k on a ||bi + i,i1 bi1 ||2 3/4||bi1 ||2 .
La condition de Lovsz a une interprtation gomtrique : elle exprime
que la projectionp(bi ) de bi sur le plan engendr par les vecteurs bi et bi1
est de norme 3/4||bi1 ||. Le lecteur pourra tablir titre dexercice que
cette condition, jointe la condition |it | 1/2 implique que langle entre
(bi ) et bi1 est suprieur ou gal arctan( 2). La condition de de Lovsz
exprime donc que le paralllpipde engendr par les vecteurs de la base nest
pas trop pointu. Cette intuition conduit aux proprits suivantes.
Lemme 27
base (b1 , , bk ) rduite au sens de Lovsz. On a
Qk Soit B unek(k1)/2
(L),
i (L) i=1 ||bi|| 2
ii Pour tout t < i, ||bt || 2(i1)/2 ||bi ||,
iii |b1 | 2(k1)/4 (L)1/k ,
iv Pour tout x non nul on a : ||b1 || 2(k1)/2 ||x||.
Preuve : La proprit |it | 1/2 implique
||bi + i,i1 bi1 ||2 ||bi ||2 + 1/4||bi1 ||2 ,
ce qui, joint la condition de Lovsz, donne
3/4||bi1 ||2 ||bi ||2 + 1/4||bi1 ||2 ,
ou encore
||bi1 ||2 2||bi ||2 .
ce qui donne par rcurrence, pour t < i : ||bt ||2 2it ||bi ||2 . Le point ii du
lemme est consquence immdiate de cette ingalit. Pour le point i, on part
de
i1
X
bi = bi +
it bt
t=1

soit, en utilisant le fait que les it sont majors par 1/2 :


2

||bi ||

||bi ||2

i1
X
t=1

74

1/4||bt ||2

||bi ||2 (1

+ 1/4

i1
X

2it )

t=1
i1

||bi ||2 .

On a alors :
(L)

k
Y
i=1
k
Y
i=1
k
Y

||bi ||2
||bi ||2
2i1 ||bi ||2

i=1
k(k1)/2

= 2

(L)2 .

2
i1
2
Le point iii est onbtenu en faisant le produit des ingalits
P ||b1 || 2 ||bi || .
Enfin, le point iv part dun vecteur quelconque x = i i bi . En considrant
le dernier
P il vient
P indice j tel que le coefficient j correspondant est non nul,
x = ji=1 i bi , ce qui dans la base orthogonale peut scrire x = ji=1 i bi ,
avec des i rationnels mais j = j entier. Il vient ||x|| |j |2 ||bj ||2
2(j1) ||b1 ||2 , ce donne bien ||b1 || 2(n1)/2 ||x||, comme attendu.

9.2.2

Description et complexit de lalgorithme

Pris un haut niveau dabstraction, lalgorithme LLL prend en entre


une base (b1 , , bk ) dun reseau L et opre comme suit :
1. Appliquer la base (b1 , , bk ) lorthogonalisation de Gram-Schmid.
2. Rendre les it de valeur absolue 1/2 en remplaant bi par bi bt ,
o est lentier le plus proche de it
3. Sil existe un premier entier i 2 tel que la condition de Lovsz dindice
i ||bi + i, i 1bi1 ||2 3/4||bi 1 ||2 ne soit pas satisfaite, changer
bi1 et bi et retourner ltape 1, sinon retourner la valeur courante de
la base (b1 , , bk ).
Pour prciser un peu, quelques observations sont utiles.
Remarque 1 : Il est prfrable de procder aux oprations 1, 2 et au test 3
incrmentalement, cest dire dinitialiser une variable i 1 et de calculer
successivement bi et les coefficients it (en utilisant les valeurs dj connues),
de rendre les ij de valeur absolue 1/2, jusqu trouver un indice pour
lequel la condition de Lovsz nest pas satisfaite.
75

Remarque 2 : Pour chaque i 2, la seconde tape doit procder par t dcroissant, cest dire par une boucle : pour t allant de i 1 1 remplacer
bi par bi dit cbt . Tout dabord, comme cette suite doprations ne modifie
aucun bj dindice < i, elle ne change pas les coefficients jt antrieurement
calculs et dment rendus de valeur absolue 1/2. Avant chaque affectation
de bi correspondant lindice t, on a :
(bi dit cbt , bt )
= it dit c,
||bt ||2
ce qui montre que la nouvelle valeur de bi est bien telle que it est 1/2.
La raffectation de bi ne change pas bi puisquelle ajoute bi un lment
de lespace engendr par (b1 , , bi1 ). Enfin, chaque nouvelle affectation ne
modifie pas les coefficients iu dindice u > t puisqueelle ajoute bi un
lment de lespace engendr par (b1 , , bt ), dont le produit scalaire avec bu
est nul. A la fin de la boucle, tous les it ont t rendus de valeur absolue
1/2.
Remarque 3 : Aprs lchange ventuel de bi1 et bi ltape 3, il nest pas
ncessaire de reprendre le calcul de lorthogonalisation de Gram-Schmid
son dbut puisque les vecteurs (b1 , , bi2 ) restent les mmes ; on peut ainsi
rinitialiser lindice i 1.
En termes de complexit, ltape 1 ncessite, pour i fix, O(k) calculs
de coeffients it en mode rationnel. Chaque calcul consiste principalement
en lvaluation dun produit scalaire de vecteurs de dimension n, soit en
tout O(kn) oprations en mode rationnel. Les autres oprations, calcul de
bi , rduction des it ne changent pas cet ordre de grandeur. On suppose,
ce qui sera dmontr juste aprs, que lalgorithme sarrte et on note N le
nombre dchanges oprs ltape 3. En analysant la version incrmentale
de lalgorithme, on constate quelle est contrle par un indice i qui varie
entre 2 et k, que lindice vaut 1 au dbut de lalgorithme, k la fin et quil
est diminu N fois. Cest donc quil a t augment N + k fois, do une
complexit qui est un O(knN ) oprations en mode rationnel.
Lemme 28 Lalgorithme LLL se termine et le nombre N dchanges quil
ralise est en O(k 2 log M ), o M est un majorant des normes euclidiennes
des vecteurs dentre de lalgorithme.
Preuve : On reprend les notations de la section 9.1.2 et on considre la suite
des carrs des dterminants 21 , , 2k+1 atachs une base (b1 , , bk ) et
on note que :
Les oprations de ltape 2 ne changent pas la valeur des bi .
76

Lchange ventuel de bi1 et bi ltape 3 ne modifie pas les rseaux


Lj , pour j = 1, , i 1, ni pour j = i + 1, k + 1 et donc pas non
plus les 2j correspondants.
Lchange de bi1 et bi ltape 3, remplace bi par (bi ), projection de
bi sur lespace engendr par bi et bi1 . Puisque la condition de Lovsz
nest pas
on a ||(bi )||2 < 3/4||bi ||2 et donc la valeur de
Qi1satisfaite,
2
2
i = j=1 ||bj || est diminue dun facteur 3/4 au moins.
Qi1
En utilisant la majoration (Li ) j=1
||bj ||, table au point i du lemme 27,
2
k
2
il vient (Li ) M . Les (Li ) tant des entiers, ils ne peuvent chacun
diminuer dun rapport 3/4 quun nombre de fois qui est un O(k log M ), soit
en tout O(k 2 log M ), ce quil fallait dmontrer.

9.2.3

Majoration des rationnels

Il rsulte de la section prcdente que la complexit de lalgorithme LLL


est - en conservant les notations ci-dessus - de O(k 3 n log M ) oprations en
mode rationnel. Pour terminer dvaluer cette complexit et, en particulier,
pour voir quelle est bien polynomiale, il reste majorer numrateurs et
dnominateurs des rationnels manipuls. Sagissant des dnominateurs, le
lemme 26 montre quils restent majors par les quantits 2i , qui sont, on
vient de le voir, en O(M k ). Le lemme suivant permet de boir que cet ordre
de grandeur reste essentiellement le mme pour les numrateurs.
Lemme 29 Les rationnels qui apparaissent dans les calculs de lalgorithme
LLL admettent des numrateurs et des dnominateurs dont la taille est majore par un O(k log M ).
Preuve : Le rsultat est dj connu pour ce qui est des dnominateurs, qui
sont majors par un O(M k ). On note ensuite que chaque quantit
||bi || ne
p
peut que rester constante ou diminuer dun facteur au moins 3/4. Toutes
ces quantits restent donc majores par M . Aprs les tapes 1,2,3, les valeurs
de bi sont donnes par
i1
X

bi = bi +
it bt
t=1

avec |it | 1/2. Il sensuit que ||bi || est major par un O(kM ). Au cours de
ltape 1, les quantits it sont calcules par
it =

(bi , bt )
||bt ||2

On a donc it ||bi ||/||bt ||. La quantit ||bt ||2 a un dnominateur major par
2t , ce qui permet de la minorer par 1/2t . De ce qui prcde, on dduit que
77

it est major par un O(kM k/2 ) soit un O(M k ). Les dnominateurs des it
tant major par un O(M k ), leurs numrateurs sont majors par un O(M 2k ).
Reste borner la variation des bi ltape 2, les remplacements successifs de
bi par bi dit cbt conduisent ajouter un vecteur major par un O(kM )
des quantits chacune majore par un O(kM k+1 ). Lopration tant rpte
au plus k fois, on aboutit un majorant qui est un O(k 2 M k+1 ). En prenant
les logarithmes la preuve du lemme est acheve.
En conclusion, on voit, en assignant une complexit quadratique aux
oprations sur les rationnels, que la complexit de lalgorithme LLL est en
O(nk 5 (log M )3 ). Dans la pratique, on opre en mode flottant et non en mode
rationnel. Ceci conduit des implantations tout fait performantes, comme
celle de Victor Shoup [5], mme si leur terminaison nest pas, stricto sensu,
assure.

78

Bibliographie
[1] H. Cohen. A Course in Computational Algebraic Number Theory, Springer, 1993.
[2] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[3] A. K. Lenstra, H. W. Lenstra Jr. and L. Lovsz. Factoring polynomials
with rational coefficients, Mathematische Annalen 261 (1982), 515534.
[4] Hermann Minkowski. Geometrie der Zahlen, Teubner, Leipzig, 1896 ;
republi par Johnson, New York, 1968.
[5] V. Shoup. A Library for doing Number Theory,
www.shoup.net/ntl/

79

Cours 10

(14 dcembre)

Programmation linaire
Algorithme de Khachyan
Dans cette leon, on prsente lalgorithme de lellipsode de Khachyan, qui
tablit que le problme de la programmation linaire admet un algorithme
de complexit polynomiale. Lalgorithme de Khachyan a t initialement prsent dans larticle [3]. On pourra galement se reporter louvrage [4]. Un
autre algorithme polynomial pour la programmation linaire, plus pratique
au demeurant, a t propos quelques annes plus tard par Karmarkar [2]

10.1

Ellipsodes

10.1.1

Dfinitions

Soit B une matrice symtrique dfinie positive de taille n n et soit t un


lment de lespace Rn . On note E(B, t) lensemble
E(B, t) = {x|(x t)t B 1 (x t) 1},
quon appelle ellipsode centr en t et de matrice B. Ecrivant B = QQt et
posant u = Q1 (x t), on constate que E(B, t) est limage de la boule unit
par lapplication affine inversible u t + Qu. Il en rsulte que le volume de
lellipsode E(B, t) est
p
V ol(E(B, t)) = Vn det(B)
n/2

o Vn dsigne le volume de la boule unit de Rn , soit (n/2+1)


. On laisse au
lecteur le soin de prciser comment dfinir Q en diagonalisant la matrice B,
dont les valeurs propres sont relles positives, dans une base orthonormale,
cest dire associe une matrice de changement de base U telle que U t U =
I.

80

10.1.2

Prototype de litration

On considre la matrice diagonale M dont les termes diagonaux sont


2
pour le premier et n2n1 pour les autres et le vecteur z dont la premire
1
coordonne est n+1
et les autres sont nulles. On note P la matrice diagonale
t
telle que P P = M . Lellipsode E(M, z) est limage de la boule unit par
lapplication affine inversible u z + P u.
n2
(n+1)2

Lemme 30 Lellipsode E(M, z) contient lintersection de la boule unit et


1
du demi-espace dfini par x1 0. Son volume est major par e 2(n+1) Vn .
Preuve du lemme : On crit linquation qui exprime lappartenance dun
point de coordonnes (x1 , , xn ) lellipsode E(M, z) sous la forme
n

1 2 n2 1 X 2
(n + 1)2
(x
+
) +
x 1.
1
n2
n+1
n2 i=2 i
Cette ingalit est quivalente
n

2(n + 1)x21 + 2x1 (n + 1) + 1 n2 1 X 2


+
x 1.
n2
n2 i=1 i
Le premier terme est major par n12 , car la quantit 2(n + 1)(x21 + x1 ) est
2
ngative ou nulle pour x1 0 et |x1 | 1 ; le second par nn1
lorsque le point
2
(x1 , , xn ) est dans la boule unit. Linclusion cherche sensuit.
Quant lingalit sur les volumes, elle rsulte de ce que
det(B) = (

n2 n1 n 2
) (
).
n2 1
n+1

En utilisant lingalit 1 + u eu , il vient


1

det(B) e n+1 e n+1 e n+1 ,


ce qui donne le rsultat attendu.

10.2

Lalgorithme de Khachyan

Lalgorithme de Khachyan trouve un point dun ouvert convexe born S


dfini par un certain nombre dingalits strictes de la forme (ai )t x < bi ,
et inclus dans la boule centre lorigine et de rayon R. En se reportant
aux transparents du cours, on voit quon y note A la matrice dont les lignes
sont les (ai )t . Lalgorithme construit itrativement une suite dellipsodes
E(Bj , tj ), de volume dcroissant, qui contiennent S.
81

10.2.1

Stratgie gnrale de lalgorithme

Lalgorithme se compose des tapes suivantes :


1. Poser j := 0, t := 0, B := Diag(1/R), o Diag(1/R) dsigne la matrice
diagonale dont tous les termes diagonaux valent 1/R.
2. Si la valeur courante tj de t appartient au convexe S, retourner tj .
3. Sinon, choisir un vecteur ligne a de A tel que at tj b, o b est la
coordonne correspondante de lingalit de dfinition de S.
4. Soir Bj la valeur courante de B. Construire un ellipsode E(Bj+1 , tj+1 )
de plus petit volume que E(Bj , tj ) qui contient lintersection de E(Bj , tj )
et du demi-espace dfini par at (y tj ) < 0. La nouvelle valeur de t est
tj+1 et la nouvelle valeur de B est Bj+1 .
5. Incrmenter j et retourner ltape 2.

10.2.2

Les formules de mise jour

Dans cette section, on va expliciter les formules de mise jour incluses


dans les transparents du cours et qui peuvent apparatre quelque peu mystrieuses. Le principe est de se ramener par des applications affines inversibles
la situation prototype de la section 10.1.2. Dans ce qui suit, on omet lindice
de j lorsquil rsulte clairement du contexte.
Soit s un lment de lespace Rn . La symtrie relative lhyperplan orthogonal s est dfinie par
(x) = x 2s.

st x
.
||s||
t

ss
La matrice de cette application est I 2 ||s||
et donc cette application est
t
1
sa propre transpose, = . De plus, = et prserve le produit
scalaire.
On note la symtrie relative lhyperplan mdiateur de v et w o
v = Qt a et w = ||v||e1 est colinaire au premier vecteur de base. Les vecteurs
v et w tant de mme norme, cet hyperplan est dfini par lquation v t x = wt x
et est orthogonal la diffrence w v. On observe que change v et w.
Dans le cas o v et w seraient gaux, on peut choisir pour nimporte quelle
symtrie relative un hyeplan contenant v = w.
On considre maintenant lapplication affine inversible obtenue en composant dans cet ordre

1. lapplication prototype de la section 10.1.2, u z + P u,


2. la symtrie ,
82

3. lapplication u t + Qu, o t est la valeur courante du centre de


lellipsode aprs j itrations et Q la valeur courante de la matrice telle
que Bj = QQt .
Cette application transforme la boule unit en un ellipsode de volume moindre
qui est prcisment E(tj+1 , Bj+1 ). Cet ellipsode contient S. En effet lapplication prototype transforme la boule unit en un ellipsode qui contient
lintersection de la boule unit et du demi-espace dfini par et1 x < 0. La symtrie laisse invariante la boule unit et transforme le demi espace dfini par
et1 x < 0 en le demi espace dfini par (Qt a)t x < 0. Enfin, lapplication t + Qu
transforme la boule unit en un ellipsode qui contient S et le demi-espace
dfini par (Qt a)t x < 0 en le demi-espace dfini par (Qt a)t Q1 (y tj ) < 0, soit
at QQ1 (y tj ) < 0, soit encore at y < at tj , qui, par construction, contient
galement E.
Reste voir la correction des formules proposes dans les transparents de
cours. En appliquant la composition dcrite ci-dessus, il vient pour tj+1 :
tj+1 = tj + Q(

1
w
) = tj
Qt Qt a.
(n + 1)||v||
n+1

En notant que t est lidentit, que QQt vaut B, et que ||v||2 = at QQt a =
at Ba, on trouve bien la formule donne dans les transparents du cours, soit
tj+1 = tj

Ba
1
p j
.
n + 1 at Bj a

De mme, en appliquant la compostion dcrite ci-dessus, il vient pour


Bj+1 :
Bj+1 = QP (QP )t = QP P t t Qt .
2

On dcompose P P t en la somme de n2n1 I et dune seconde matrice ayant


2
pour seul terme non nul le premier terme diagonal qui vaut n2n1 ( n1
1).
n+1
La contribution globale du premier terme est, aprs simplifications
n2
n2
t
QQ
=
Bj .
n2 1
n2 1
La contribution du second se calcule partir de llment w dfini plus haut,
par la formule
Qwwt t Qt
en prenant pour la valeur
=

n2
2
1
n2
2
1
=

.
2
2
2
t
n 1 n + 1 ||v||
n 1 n + 1 a Bj a
83

On observe que w = Qt a, ce qui donne une contribution


(Bj a)(Bj a)t
soit finalement

n2
2 (Bj a)(Bj a)t
,
n2 1 n + 1
at Bj a

qui, ajoute la premire contribution, donne bien la valeur cherche.

10.2.3

Terminaison de lalgorithme

En ltat, ce qui prcde ntablit pas formellement que lalgorithme de


Khachyan se termine en temps polynomial. Ce quon peut observer est que
1
le volume des ellipsodes diminue dun facteur multiplicatif e 2(n+1) chaque
tape. Ceci rsulte du lemme et de la construction itrative se ramenant
au prototype par une application affine inversible. Si le convexe S est non
vide, il existe une boule de rayon r incluse dans S. Comme par ailleurs on a
suppos que S tait inclus dans une boule de rayon R, litration ne peut se
poursuivre si lon atteint
j 2n(n + 1)(ln R ln r).

10.3

Conclusion : algorithme de complexit polynomiale pour la programmation linaire

A partir des rsultats prcdents, on souhaite proposer un algorithme


de complexit polynomiale pour rsoudre un problme de programmation
linaire, qui consiste dterminer le maximum de la fonction
X
nci xi
i=1

sous les m contraintes


X

maij xi bi ,

pour des variables non ngatives xi 0.


On note N un majorant des coefficients |aij |. Comme indiqu dans le
cours de base, il existe une quantit L, polynomiale en log M , m et n telle
que
Les solutions de base ont des coordonnes qui sont des rationnels dont
le numrateur et le dnominateur sont majors par 2L .
84

Loptimum de la focntion dobjectif, sil existe, est galement un rationnel dont le numrateur et le dnominateur sont majors par 2L .
Deux solutions de base, dont les fonctions dobjectif diffrent de moins
de 22L ont mme valeur de la fonction dobjectif.
La preuve se fonde sur la rsolution du systme linaire obtenu en choisissant les variables de base par les formules habituelles par dterminants
extraits et sur la majoration des dterminants par la formule dHadamard.
On peut galement tablir par les mmes mthodes le lemme suivant
Lemme 31 Un systme donn dingalits
X
maij xi bi
i

a une solution si et seulement si le systme associ dingalits strictes


X
maij xi < bi +
i

a une solution pour = 22L .


On rsout un programme linaire par recherche dichotomique sur loptimum de la fonction dobjectif, en appelant un nombre polynomial de fois
un algorithme qui dcide si un convexe born dfini par des ingalits au
sens large est non vide. On se ramne un convexe ouvert dfini par des
ingalits au sens strict par le lemme. On conclut en utilisant pour chaque
appel lalgorithme de Karmarkar.
Les dtails de la preuve du lemme ci-dessus, facile mais pas compltement
directe, et de la construction dichotomique sont laisss au lecteur, qui pourra
se reporter louvrage [4].

85

Bibliographie
[1] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[2] N. Karmarkar. A New Polynomial Time Algorithm for Linear Programming, Combinatorica, 4(4), 1984, 373395.
[3] L.G. Khachyan. A polynomial algorithm in linear programming, Translated in Soviet Mathematics Doklady, 20 (1979) 191194.
[4] C. H. Papadimitriou, K. Steiglitz. Combinatorial Optimization : Algorithms and Complexity, Prentice-Hall, 1982

86

Cours 11

(4 janvier)

Polynmes une variable


Algorithme de Berlekamp
Dans cette leon, on prsente lalgorithme de Berlekamp [1], qui calcule
la factorisation dun polynme dont les coefficients sont des entiers modulo
p, ainsi que lalgorithme probabiliste de Cantor-Zassenhaus [2], qui rsout le
mme problme plus efficacement.

11.1
11.1.1

Lalgorithme de Berlekamp
Rduction sans facteur carr

Tout polynme coefficients dans le corps Fp p lments admet une


factorisation unique. Supposons quun facteur W apparaisse une puissance
2 dans la factorisation de U , soit
U = V i W.
Prenant la drive, il vient :
U 0 = iV i1 W + V i W 0
ce qui montre que V i1 divise U 0 et donc le pgcd de U et U 0 , soit D. Il en
rsulte que le quotient U/D est sans facteur carr.
Le raisonnement ci-dessus est en dfaut si D est nul. Ceci se produit
lorsque le polynme driv U 0 est lui-mme nul, cest dire si chaque coefficient non nul ui de U est dindice i = 0 mod p. Le polynme U scrit alors
U (X p ) pour un polynme convenable U . Il suffit donc de factoriser U , qui
est de degr moindre et de noter que
U = U (X p ) = (U (X))p .
87

On se ramne ainsi - rcursivement - au cas sans facteur carr.

11.1.2

Point de vue algbrique

On suppose dsormais U sans facteur carr et on considre sa dcomposition


U = U1 ...Ur
en facteurs irrductibles distincts. Le thorme des restes chinois sapplique
Q
et exprime que lanneau quotient Fp [X]/U est isomorphe au produit ri=1 Ki ,
o Ki est le corps Fp [X]/Ui . Lapplication linaire
V V p V mod U
est dfinie sur lanneau quotient et lisomorphisme mis en vidence ci-dessus
permet de conclure que son noyau est de dimension r. En effet, V est lment
du noyau si et seulement si, pour chaque indice i r, on a V p V = 0 mod Vi .
Or, dans le corps Ki seuls les scalaires sont solutions de lquation xp x = 0.
Il en rsulte que le noyau est isomorphe au produit des sous-corps Fp de
chaque Ki , ce qui montre bien que sa dimension est r.
Lemme 32 Etant donn un polynme non constant H du noyau. Alors U
scrit
Y
U=
pgcd(U, H s)
sFp

et cette factorisation nest pas triviale, en ce sens quun des polynmes au


moins du produit nest ni constant ni de mme degr que U .
Preuve du lemme : En substituant H dans lquation
Y
Xp X =
(X s),
sFp

il vient
Hp H =

(H s)

sFp
p

et donc, somme U divive H H,


Y
U=
pgcd(U, H s).
sFp

Pour terminer, il suffit dobserver que si la factorisation est triviale, il y a


une unique valeur de s telle que U divise H s, ce qui implique que H est
constant modulo U et fournit bien une contradiction.
88

11.1.3

Lalgorithme de Berlekamp

Lalgorithme de Berlekamp opre comme suit


1. Former la matrice Q de lapplication V V p V mod U ;
2. Calculer une base V1 , , Vr du noyau de Q I en prenant pour V1 un
polynme constant ;
3. Poser E = {U } ; j = 1 ; k = 1 ;
4. Tant que j r ou k 6= r faire
j = j + 1;
pour chaque B de E
retirer B E ; k = k 1 ;
pour s = 1 p
F = pgcd(B, Vj s) ;
si (F ) 1, ajouter F E ; k = k + 1 ;
Avant destimer la complexit de cet algorithme, on montre quil produit
effectivement la factorisation cherche. Lalgorithme maintient un ensemble
de polynmes E dont le produit est U et remplace chaque lment B de E
par une factorisation. Ce dernier point rsulte du lemme 32, o plutt dune
variante du lemme qui sapplique tout diviseur B de U . La factorisation
est non triviale si H est constant modulo B. Si deux facteurs Ui et Uj ne
sont pas distingus par lalgorithme, ce dernier retourne un lment B de E
divisible la fois par Ui et Uj .
A ce point, on choisit un V` tel que
V` mod Ui 6= V` mod Uj .
Un tel V` existe : sinon, par linarit, on a
V mod Ui = V mod Uj ,
pour tout lment V du noyau de Q I, ce qui contredit le fait que ce noyau
est de dimension r. Soit s = V` mod Ui ; dans la phase de lalgorithme o ` est
trait, on a calculer F = pgcd(B, V` s). Ce polynme F ne peut tre gal
B car V` nest pas constant modulo B, puisque ses valeurs modulo Ui et Uj
diffrent. Cette contradiction achve la preuve de correction de lalgorithme.

11.1.4

Complexit de lalgorithme

Ltape 1 de lalgorithme requiert le calcul rcursif des polynmes X k mod


U , pour k = 1, 2p, (n 1)p. Les oprations dans le corps Fp se font en
compexit O((log p)2 ) et le calcul de X p mod U par un algorithme de carr
89

rpt est en O(n2 (log p)3 ), le terme n2 provenant des lvations au carr
ou des multiplications ou encore de la rduction modulo U de polynmes de
dgr 2n qui sont les rsultats de calculs intermdiaires. Ce calcul fait, celui
des puissances successives de ce polynme est en O(n3 (log p)2 ).
Ltape 2 est une classique opration dalgbre linaire. La mthode du
pivot de Gauss sapplique, avec complexit O(n3 (log p)2 ).
Enfin, ltape 3/4 ncessite au plus rp calculs de pgcd de polynmes de
degr au plus n, soit un O(rpn2 (log p)2 ). Globalement, lalgorithme nest pas
polynomial cause du facteur p et la question de lexistence dun algorithme
de factorisation de polynmes modulo p, qui opre en temps polynomial reste
ouverte.

11.2

Algorithme de Cantor-Zassenhaus

Lalgorithme de Cantor-Zassenhaus opre comme suit


1. Former la matrice Q de lapplication V 7 V p V mod U ;
2. Calculer une base V1 , , Vr du noyau de Q I ;
3. Poser E = {U } ; j = 0 ; k = 1 ;
4. Tant que k 6= r faire
j=j+1 ;
pour chaque B de E
P
choir au hasard H = ri=1 si Vi ;
p1
F = pgcd(B, H 2 1) ;
si F 6= B et F est non constant, retirer B de E et y
ajouter F et B/F ; k = k + 1 ;
Toute la question est de dterminer la probabilit que le calcul du pgcd
p1
dun polynme B non irrductible et de H 2 1 scinde le polynme B.
Lemme 33 Etant donn un polynme H du noyau de Q et un facteur non
irrductible B de U dont deux facteurs irrductibles distincts sont Ui et Uj ,
p1
alors le pgcd de B et H 2 1 distingue Ui et Uj , en ce sens que lun divise
ce pgcd et lautre pas, si et seulement si la rsiduosit quadratique de H est
diffrente modulo Ui et Uj .
Preuve du lemme : Par lisomorphisme mis en vidence dans la section 11.1.2, H est un scalaire de Fp modulo tout polynme Ui . Ce scalaire
est - ou non - un rsidu quadratique selon quil est - ou non - solution de
p1
p1
lquation x 2 1 = 0, cest dire selon que H 2 1 est - ou non - divisible
par Ui . La preuve du lemme sen dduit immdiatement.
90

Le lemme prcdent montre que la probablit quun choix alatoire de H


ne scinde pas un facteur non irrductible donn B est majore par la probabilit de choisir au hasard deux rsidus quadratiques ou deux non rsidus
quadratiques, soit
p1 2
p+1 2
(
) +(
),
2p
2p
ds que p est 3. On laisse au lecteur le soin de
quantit majore par 19
36
conclure que lesprance du nombre j de calculs de pgcd est un O(r log r), ce
qui conduit bien un algorithme probabiliste polynomial.

91

Bibliographie
[1] E. Berlekamp. Factoring polynomials over finite fields, Bell System
Tech. J. 46 (1967), 18531859.
[2] D. Cantor and H. Zassenhaus. A new algorithm for factoring polynomials
over finite fields, Math. Comp. 36 (1981), 587592.
[3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms, 2nd ed. Cambridge, Massachusetts : M.I.T. Press, 2001.
[4] D. Knuth. The Art of Computer Programming, Volume 2 : Seminumerical Algorithms. Addison-Wesley, Reading, MA, 1969.

92

You might also like