0% ont trouvé ce document utile (0 vote)
16 vues4 pages

Complexite

Le document présente un mémento sur la complexité algorithmique en mathématiques, détaillant des concepts tels que la notation Big O et des algorithmes spécifiques pour le tri, l'exponentiation binaire, et les opérations dans les entiers et polynômes. Il aborde également la complexité des opérations dans les matrices et les algorithmes rapides, comme ceux de Karatsuba et de Strassen. Enfin, il mentionne des méthodes probabilistes pour résoudre des problèmes d'algèbre linéaire.

Transféré par

gokouson585
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues4 pages

Complexite

Le document présente un mémento sur la complexité algorithmique en mathématiques, détaillant des concepts tels que la notation Big O et des algorithmes spécifiques pour le tri, l'exponentiation binaire, et les opérations dans les entiers et polynômes. Il aborde également la complexité des opérations dans les matrices et les algorithmes rapides, comme ceux de Karatsuba et de Strassen. Enfin, il mentionne des méthodes probabilistes pour résoudre des problèmes d'algèbre linéaire.

Transféré par

gokouson585
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Bordeaux Préparation à l’agrégation

Mathématiques 2021–2022

Mémento complexité
Rappel. Soit g une fonction strictement positive ; on écrit
• f = O(g) s’il existe C > 0 et x0 tel que f (x) 6 C · g(x) pour tout x > x0 .
 C
e
• f = O(g) s’il existe C > 0 et x0 tel que f (x) 6 g(x)· log g(x) pour tout x > x0 .

1. Tri
Le tri de n éléments s’effectue en utilisant O(n log n) comparaisons (tri fusion).

2. Exponentiation binaire
P
Le calcul de xn s’effectue en utilisant O(log n) multiplications (écriture de n = i6t ni 2i
i
en base 2 et calcul des x2 en utilisant t carrés successifs).

3. Dans Z
La taille (binaire) d’un entier a est le nombre de bits1 utilisé pour l’écrire, en d’autres termes
t(a) := ⌊log2 (|a| + 1)⌋ + 1. En général, a > 1 tend vers l’infini et on utilise simplement
log2 (a). On suppose que tous les opérandes sont de taille 6 n :
Opération Naïf Rapide
a+b O(n) O(n)
a × b O(n ) 2 e
MZ (n) = O(n)
a = bq + r O(n2 ) O(MZ (n))
Relation de Bézout O(n2 ) O(MZ (n) · log n)
Restes chinois O(n2 ) O(MZ (n) · log n)
Pour tous ces algorithmes, on compte le nombre d’opérations élémentaires sur les bits, sup-
posé proportionnel au temps d’exécution (complexité en temps). La complexité en espace
e
est de O(n) bits.
• Multiplication : MZ (n) est par définition le temps d’une multiplication dans Z
pour deux opérandes de taille 6 n. L’algorithme rapide (Harley et van der Hoeven,
2019), en temps O(n log n), utilise la Transformée de Fourier Discrète.
Moins rapide mais beaucoup plus simple : l’algorithme de Karatsuba utilise
O(nlog2 3 ) opérations.
Remarque. Pour des opérantes de tailles différentes, s(a) 6 n, s(b) 6 m, l’algo-
rithme naïf (quadratique) utilise O((n + 1)(m + 1)) opérations.
1Il
 
n’y a pas d’inconvénient à compter les chiffres en base β > 2, avec t(a) := logβ (|a| + 1) . Pas
vraiment d’intérêt théorique non plus.
1
2

• Division euclidienne : l’entrée est (a, b), b 6= 0, et la sortie (q, r) avec 0 6 r < |b|.
L’algorithme rapide résout l’équation b−a/x = 0 en utilisant l’itération de Newton

xn+1 = xn − xn (xn b − a) .

(Calcul effectué en doublant la précision à chaque étape ; soit dans un modèle


flottant, soit modulo 2k .) On pose q = ⌊x⌋, puis r = a−bq. L’énoncé de complexité
suppose que MZ (n) vérifie des propriétés du type M(n)/n > M(m)/m pour n > m,
et M(mn) 6 m2 M(n). Qui sont vraies aussi bien pour l’algorithme naïf que pour
Karatsuba ou Harley - van der Hoeven.
Remarque. Si t(a) 6 n, t(b) 6 m, n > m, l’algorithme naïf (quadratique) utilise
O((n − m + 1)(m + 1)) opérations élémentaires.
• Bézout : l’entrée est (a, b) et la sortie consiste en pgcd(a, b) et deux entiers u, v
tels que au + bv = gcd(a, b).
• Restes chinois : l’entrée consiste en N congruences x ≡ ak (mod bk ) où les bk sont
2 à 2 premiers entre eux, et la sortie attendue
P
est une solution de ce système de
congruences. On suppose t(ak ) 6 t(bk ) and k t(bk ) 6 n.

4. Dans Z/NZ
On choisit un représentant canonique dans chaque classe de congruence : les entiers de
[0, N − 1], pour représenter les éléments de Z/NZ. La taille des opérandes est 6 n := t(N).

L’addition est implantée comme une addition dans Z, suivie d’une (possible) soustraction :
temps O(n). La multiplication est une multiplication in Z, suivie par une division eucli-
dienne par N : temps O(n2 ) ou O(MZ (n)). L’inversion utilise une relation de Bézout :
temps O(n2 ) ou O(MZ (n) · log n).

5. Dans K[X], K un corps


La taille (algébrique) d’un polynône h ∈ K[X] est son nombre de coefficients : t(h) :=
deg h + 1 6 n.
Pour la complexité, on choisit de compter les opérations dans K (complexité algébrique) :
+, −, ×, / dans K. Pour estimer plus réalistement le temps de calcul, on peut multiplier
par le coût d’une opération élémentaire dans K quand celui-ci est borné uniformément
(c’est le cas si K est un corps fini) ; sinon il faut tenir compte de la taille des coefficients.
Soient f, g deux polynômes dans K[X], de tailles 6 n.
3

Opération Naïf Rapide


f +g O(n) [+] O(n) [+]
2
f × g O(n ) [+, ×] e
MK[X] (n) = O(n)
f = gh + r O(n2 ) O(MK[X] (n))
Bézout O(n2 ) O(MK[X] (n) · log n)
Restes chinois O(n2 ) O(MK[X] (n) · log n)

6. Dans K[X]/(T ) :
Deux cas particuliers importants : définitions des corps finis non premiers Fq comme ex-
tension algébrique de Fp = Z/pZ et des extensions de Q (nombres algébriques). De façon
analogue à Z/NZ nous travaillons avec des polynômes de taille 6 t(T ), avec les coûts
ci-dessus. L’inversion utilise de nouveau une relation de Bézout.

7. Dans Mn×n (K) :


On se place de nouveau dans le modèle de complexité algébrique : on compte les opérations
dans le corps K. Pour A ∈ Mn×n (K), sa taille est t(A) = n2 ; pour v ∈ K n sa taille est
t(v) := n. On note A, B deux matrices dans Mn (K).
Opérations Naïf Rapide
A + B O(n2 ) O(n2 )
Av, v ∈ K n O(n2 ) O(n2 )
A × B O(n3 ) O(nω ), ω = 2.3729
A−1 O(n3 ) O(nω )
P A = LU O(n3 ) O(nω )
Char A O(n3 ) O(nω )
La factorisation LU (pivot de Gauss) permet de résoudre la plupart des problèmes d’algèbre
linéaire sur K : noyau, image, rang, déterminant, inverse, système linéaire (LU + résolution
de systèmes triangulaires en O(n2 ) opérations supplémentaires dans K).
La constante ω 6 3 qui apparaît ci-dessus est appelé exposant de la multiplication ma-
tricielle. La valeur utilisée en pratique (pour des matrices physiquement représentables par
les ordinateurs actuels) est ω = log2 7 ≈ 2.8 (Strassen).
Algèbre linéaire ✭✭ Boîte Noire ✮✮. Dans ce modèle, les coûts sont exprimés en terme du
nombre d’évaluations v 7→ A · v pour un “opérateur boîte noire” A. (Un opérateur linéaire
dont on ne suppose pas qu’il est donné par une matrice. On sait simplement calculer
l’image de tout vecteur v ∈ K n .) En général, une multiplication matrice-vecteur pour
A ∈ Mn×n (K) et v ∈ K n utilise O(n2 ) opérations dans K mais la plupart des matrices
rencontrées en pratique sont ✭✭ structurées ✮✮ et permettent une évaluation plus économique :
4

matrices par bandes, plus généralement matrices creuses (comme dans l’algorithme de
Dixon de factorisation dans Z) ; matrice de Sylvester définissant le résultant ; matrice de
Berlekamp (pour factoriser les polynômes sur les corps finis) ; matrices de van der Monde
(comme les matrices de FFT), etc.
Dans ce modèle il existe des algorithmes probabilistes (Lanczos, Wiedemann) qui ré-
solvent efficacement des problèmes d’algèbre linéaire comme le calcul du polynôme carac-
téristique ou du rang de A (avec faible probabilité d’erreur dans les 2 cas), ou trouve une
solution du système linéaire Ax = b. Ils utilisent en moyenne O(n) evaluations A · v, plus
O(n2 ) opérations dans K. On ne gagne rien sur une matrice dense générale (A · v utilise
O(n2 ) opérations dans K) ; mais le gain est significatif si A · v se calcule plus rapidement.

Vous aimerez peut-être aussi