• Aucun résultat trouvé

ALGO1 – Diviser pour r´egner Fran¸cois Schwarzentruber September 28, 2020

N/A
N/A
Protected

Academic year: 2022

Partager "ALGO1 – Diviser pour r´egner Fran¸cois Schwarzentruber September 28, 2020"

Copied!
11
0
0

Texte intégral

(1)

ALGO1 – Diviser pour r´egner

Fran¸cois Schwarzentruber September 28, 2020

1 Motivation

Complexit´e d’un algo na¨ıf Complexit´e d’un algo efficace obtenu via diviser pour r´egner Chercher un ´el´ement dans un

tableau tri´e `an´el´ements Tri par comparaison d’un tableau de taillen

Calcul du k-i`eme ´el´ement d’un tableau `a n´el´ements

Multiplication de nombres `a n bits chacun

Multiplication de matrices de taillen×n

Calcul de la transform´ee de Fourier d’un signal de n

´

echantillons

2 Principe

Probl`eme initial : trier [1 10 4 2 5 3 9 8]

Sous-probl`eme 1 : trier [1 10 4 2]

Sous-probl`eme 2 : trier [5 3 9 8]

[1 2 4 10]

[3 5 8 9]

[1 2 3 4 5 8 9 10]

R´egner

R´egner

Diviser Combiner

3 Exemples

Dichotomie

...

Tri fusion

...

Tri rapide

...

4 Th´ eor` eme fondamental sur la complexit´ e

Th´eor`eme 1 Soita≥1, d≥2 etb≥0. Consid´erons une suite(τ(n))n∈N qui v´erifie, pour toutn≥2,

(2)

τ(n) =aτ dn

de

+O(nb).

Alors :

si a < db, τ(n) =O(nb)

sia=db, τ(n) =O(nb×hauteur)

=O(nblogdn)

sidb < a, τ(n) =O(nb feuilles)

=O(alogdn) =O(nlogda) D´emonstration. On travaille `a constante pr`es. Donc on s’int´eresse en fait `a la suite suivante :

τ(n) =aτ dn

de +nb et τ(1) = 1.

Quandn=dh D´emontrons d’abord le r´esultat lorsque nest une puissance ded, autrement dit quen=dh pour un certain h, qui est la hauteur de l’arbre des appels. A la profondeur `, le coˆut dans un nœud est dn`bb et il y a a` nœuds.

Le tableau suivant r´esume les complexit´es `a chaque niveau d’appels :

Niveau` Complexit´e dans un nœud Complexit´e totale sur le niveau

0 (racine) nb 1×nb

1 ndbbndbb

... ... ...

` dn`bb a`×dn`bb

... ... ...

h(feuilles) 1 ah

Autrement dit,

τ(n) :=

h

X

`=0

a`× nb d`b =nb

h

X

`=0

a db

` .

1. Sia < db, alors la raison de la s´erie est plus petite que 1 et donc la s´erie converge. Doncτ(n) =O(nb).

2. Sia=db, alors la raison vaut 1 et la somme vaut h=O(logn). Donc τ(n) =O(nblogn).

3. Sibd< a, alors la raison est plus grande que 1 et la s´erie diverge. Doncτ(n) =O(nb dab

logdn

) =O(nlogda).

Cela termine la preuve pour le comportement asymptotique quandntend vers l’infini en prenant pour valeur des puissances ded.

Remarque 2 Il faut bien ˆetre `a l’aise avec les logarithmes. Voici les points clefs :

• x=dlogdx pour toute based >1 et pour tout nombrex >0;

• tout se passe bien avec un exposant : xt= dlogdxt

=dtlogdx.

nquelconque Maintenant si nest quelconque, on a l’encadrementdlogdn≤n < d×dlogdn. Lemme 3 La fonctionτ :N→Rest croissante.

D´emonstration. Pour le montrer, on montre par r´ecurrence surnqueτ est croissante sur {1, . . . , n}.

• Pour n= 1, la propri´et´e est triviale.

(3)

• Supposons pour unndonn´e queτest croissante sur{1, . . . , n}et montrons queτest croissante sur{1, . . . , n+ 1}.

On a :

τ(n+ 1) =aτ dn+1d e

+ (n+ 1)b ≥aτ dnde

+nb =τ(n) par hypoth`ese de r´ecurrence (l`a on utilise qued≥2 pour ˆetre sˆur quedn+1d e ≤n).

• Par r´ecurrence, on a montr´e que τ est croissante surN.

On conclut de la mani`ere suivante. Par exemple, sib > logda, on aτ(n)≤τ(ddlogdne) car τ est croissante. Mais on aτ(ddlogdne) =O(ddlogdneb) =O((ddblogdnc)b)≤O(dnb) =O(nb).

5 Algorithme de Karatsuba

D´efinition 4 (probl`eme de la multiplication de nombres)

• Entr´ee : deux entiers x,y donn´es en base 2 avecn chiffres ;

• Sortie : le produit dexety,x×y, donn´ee en base 2 avec2nchiffres.

Th´eor`eme 5 L’algorithme de multiplication appris `a l’´ecole primaire est en Θ(n2).

1 2 3 4

× 5 6 7 8 6 3 8 7 4 0 4 6 1 7 0 6 9 9 6 7 8

Th´eor`eme 6 L’algorithme de Karatsuba est enO(nlog23) . pre : deux entiersx,y den-bits

post : le produitxy fonction karatsuba(x, y)

sin= 1alors retourner xy sinon

xG, xD := lesdn2ebits les plus `a gauche, lesbn2cbits les plus `a droite dex;

yG, yD := lesdn2ebits les plus `a gauche, lesbn2cbits les plus `a droite dey;

P1=produit(xG, yG) P2=produit(xD, yD)

P3=produit(xG+xD, yG+yD)

retourner 2nP1+ 2n2(P3−P1−P2) +P2

5.0.1 Premier tentative de diviser pour r´egner

Appliquons ‘diviser pour r´egner’ pour cr´eer un algorithme plus performant. D´ecoupons les deux nombresxetycomme suit :

x= 2bn2cxG+xD ety= 2bn2cyG+yD o`uxG, yG, xD, yDsont des nombres entre 0 et 2dn2e−1. On ´ecrit :

xy= 22bn2cxGyG+ 2bn2c(xGyD+yGxD) +xDyD.

La multiplicationxyse ram`ene `a 4 multiplications avec des nombres avec 2 fois moins de bits, puis des additions, et multiplication par des puissances de deux soit duO(n). Le cas de base correspond `a une multiplication avec des nombres avec 1 bit chacun. Cela donne

τ(n) = 4τ dn2e

+O(n)., donc du O(n2), pas mieux qu’`a l’´ecole primaire.

(4)

5.0.2 Deuxi`eme tentative

Voici l’astuce de Gauss (ou Karatsuba) :

xGyD+yGxD= (xG+xD)(yG+yD)−xGyG−xDyD.

Ainsi on se ram`ene `a uniquement 3 multiplications, certes avec des additions suppl´ementaires mais qui ne coˆutent pas si ch`eres. On a :

xy= 2nP1+ 2n2(P2−P1−P3) +P3 avecP1=xGyG et P2= (xG+xD)(yG+yD) et P3=xDyD.

Chaque addition coˆuteO(n). Chaque multiplication par une puissance de 2 coˆuteO(n) (il faut juste d´ecaler les bits). La relation de r´ecurrence donne :

τ(n) = 3τ dn2e

+O(n), doncO(nlog23), soit environO(n1.59).

Remarque 7 Remarque technique concernant le produit P2. Les repr´esentations binaires des nombres xG+xD et yG+yD peuvent avoir 1 +dn2ebits, i.e. d´epasserdn2e. Mais ce n’est pas grave. En effet, en toute rigueur on devrait

´ecrire ce produit sous la forme

(a2dn2e+1+A)×(b2dn2e+1+B) =ab2dn2e+2+ 2dn2e+1(aB+bA) +AB

o`u a etb sont des bits. Il y a un traitement en O(n) plus l’appel r´ecursif correspondant au produit AB. On a cach´e ce d´etail dans le pseudo-code ci-dessous.

pre : deux entiersx,y den-bits post : le produitxy

fonction produit(x, y) sin= 1alors

retourner xy sinon

xG, xD := lesdn2ebits les plus `a gauche, lesbn2cbits les plus `a droite dex;

yG, yD := les dn2ebits les plus `a gauche, lesbn2cbits les plus `a droite dey;

P1=produit(xG, yG);

P2=produit(xD, yD);

retourner 2nP1+ 2n2(produit(xG+xD, yG+yD)−P1−P2) +P2

6 Algorithme de Strassen

D´efinition 8 (probl`eme de la multiplication de matrices)

• Entr´ee : deux matricesX et Y de taille n;

• Sortie : le produitXY.

Th´eor`eme 9 L’algorithme na¨ıf est enΘ(n3).

Th´eor`eme 10 L’algorithme de Strassen est enΘ(n2.81).

L’objectif est de cr´eer un algorithme efficace pour calculer le produitXY de deux matricesX etY de taillen×n.

L’algorithme na¨ıf calcule chaque terme deXY enO(n) et il y an2 termes, d’o`u une complexit´e totale deO(n3).

6.0.1 Premier essai diviser pour r´egner

L’id´ee consiste `a d´ecouper les matrices en sous-blocs de la fa¸con suivante : content...

X =

A B

C D

et Y =

E F

G H

. On a alors : XY =

AE+BG AF+BH CE+DG CF +DH

. D’o`u T(n) = 8T(n2) +O(n2), i.e. T(n) =O(nlog28) =O(n3).

(5)

6.0.2 Algorithme de Strassen

L’algorithme de Strassen calculeXY `a partir de seulement 7 produits de matrices plus petites et non pas 8 ! En fait on a

Algorithme de Strassen En ´ecrivantX =

A B

C D

etY =

E F

G H

, calculer XY =

P5+P4−P2+P6 P1+P2

P3+P4 P1+P5−P3−P7

o`u ces produits sont calcul´es r´ecursivement :

• P1=A(F−H)

• P2= (A+B)H

• P3= (C+D)E

• P4=D(G−E)

• P5= (A+D)(E+H)

• P6= (B−D)(G+H)

• P7= (A−C)(E+F) On a donc un algorithme de type diviser pour r´egner v´erifiant la relation de r´ecurrence :

T(n) = 7T(n2) +O(n2) d’o`u d’apr`es le th´eor`eme fondamental,T(n) =O(nlog27) =O(n2.81).

Le meilleur algorithme connu `a ce jour, dˆu `a Coppersmith-Winograd [?], est enO(n2.376).

7 Transformation de Fourier Discr` ete Rapide (FFT)

D´efinition 11 La transform´ee de Fourier Discr`ete est le probl`eme algorithmique :

• entr´ee :

– un polynˆomeA=Pn−1

i=0 aiXi, d´ecrit avec un vecteur~a= (a0, a1, . . . , an−1);

– une racinen`eme de l’unit´eω ; par exemple ω=e2πin

• sortie : A(ω0), A(ω), . . . , A(ωn−1).

Th´eor`eme 12 L’algorithme na¨ıf est en Θ(n2).

7.1 Principe

On d´ecompose le polynˆomeAen sa partie paireP, et impaireI : A=P(X2) +X×I(X2).

Exemple 13

A = 1 +6X −3X2 +2X3 +X4 −7X5

P = 1 −3X +X2

I = 6 +2X −7X2

entr´ee : un polynˆomeA, une racine de n-`eme de l’unit´eω sortie : A(ω0), A(ω), . . . , A(ωn−1)

fonction FFT(A, ω) siAest constant

retourner A(1) sinon

soitP la partie paire etIla partie impaire deA calculerP(1), P(ω2). . . , P(ωn−2) viaF F T(P, ω2) calculerI(1), I(ω2). . . , I(ωn−2) viaF F T(I, ω2) pour k= 0 `an−1

A(ωk) := P(ω2k) +ωkI(ω2k) retourner A(ω0), A(ω), . . . , A(ωn−1) Th´eor`eme 14 La complexit´e est enO(nlogn).

D´emonstration.

τ(n) = 2τ dn

2e

+O(n).

(6)

7.2 Pseudo-code d´ etaill´ e

On consid`ere ici une racine n-`eme de l’unit´eω . Ainsiωn/2=−1.

Posons (s0, . . . , sn/2−1) = (P(1), P(ω2). . . , P(ωn−2) et (s00, . . . , s0n/2−1) = (I(1), I(ω2). . . , I(ωn−2). On a pour toutk,

A(ωk) =P(ω2k) +ωkI(ω2k).

• pour toutk≤ n2−1, on aA(ωk) =P(ω2k) +ωkI(ω2k) =skks0k;

• pour toutk≤ n2−1, on aA(ωk+n/2) =P(ω2(k+n/2)) +ωk+n/2I(ω2(k+n/2)) =P(ω2k)−ωkI(ω2k) =sk−ωks0k. entr´ee : des nombres a0, . . . , an−1, et une racinen-`eme de l’unit´e primitiveω

sortie : A(ω0), A(ω), . . . , A(ωn−1) o`u A=Pn−1 i=0 aiXi fonction FFT(a0, . . . , an−1, ω)

sin= 1

retourner a0

sinon

(s0, . . . , sn/2−1) :=F F T(a0, a2, . . . , an−2, ω2) (s00, . . . , s0n/2−1) :=F F T(a1, a3, . . . , an−1, ω2) α:= 1

pour k= 0 `an/2−1 yk =sk+αs0k

yk+n/2=sk−αs0k op´eration papillon α:=α×ω

retourner y0, . . . , yn−1

7.3 Circuit pour la FFT

Voici l’arbre des appels r´ecursifs de la FFT :

L’ordre 0, 4, 2, 6, 1, 5, 3, 7 s’obtient en prenant les miroirs des ´ecritures binaires de 0, 1, 2, 3, 4, 5, 6, 7.

Le circuit suivant repr´esente le calcul de la FFT, en lisant l’arbre ci-dessous. Les feuilles sont les entr´ees.

Le calcul en bleu dans l’algorithme s’appelle une op´eration papillon : on la repr´esente par une croix bleue, agr´ement´ee par la valeur deα.

y0

y1 y2

y3

y4 y5 y6

y7

a0 a4

a2

a6 a1 a5

a3

a7

000|000 001|100 010|010 011|011 100|001 101|101 110|011 111|111

ω0

ω0

ω0

ω0

ω0 ω2

ω0 ω2

ω0 ω1

ω2 ω3

Th´eor`eme 15 Il y a Θ(nlogn) op´eration papillons.

Th´eor`eme 16 Le circuit est de profondeur Θ(logn) . L’algorithme s’ex´ecute en Θ(logn) sur une architecture parall`ele.

(7)

7.4 Algorithme it´ eratif

entr´ee : des nombresa0, . . . , an−1, et une racinen-`eme de l’unit´e primitiveω sortie : A(ω0), A(ω), . . . , A(ωn−1) o`uA=Pn−1

i=0 aiXi fonctionFFT(a0, . . . , an−1, ω)

pour k= 0 `an−1faire sk:=amiroir(k)

pour m:= 2,4,8, . . . , nfaire ω:=e2iπ/m

pour k= 0, m,2m, . . . , n−mfaire α:= 1

pour j= 0 `a m/2−1 faire

sk+j, sk+j+m/2=sk+j+αsk+j+m/2, sk+j−αsk+j+m/2 α:=α×ω

retourner s0, . . . , sn−1

7.5 Transformation de Fourier inverse

D´efinition 17 (matrice de Vandermonde) V(ω) =

1 1 1 . . . 1

1 ω ω2 . . . ωn−1 1 ω2 ω2×2 . . . ω2×(n−1) ... . . ...

1 ωn−1 ω(n−1)×2 . . . ω(n−1)(n−1)

 .

Proposition 18 La transform´ee de Fourier Discr`ete revient `a calculerV(ω)~ao`uωracinen-`eme primitive de l’unit´e.

Th´eor`eme 19 Si ω est une racinen-`eme primitive de l’unit´e, V(ω)−1= n1V(ω−1).

La transform´ee de Fourier est le vecteur~y=V(ω)~a. La transform´ee inverse est :~a:=V(ω)−1~y..

Corollaire 20 On peut calculer la FFT inverse en appelant le mˆeme algo : n1F F T(~y, ωn−1).

7.6 Multiplication de polynˆ omes

Algorithme pour multiplier deux polynˆomes repr´esent´ees par coefficients

1. On ´evalue les polynˆomesA,B de degr´en/2 en les points 1, ω, . . . , ωn−1 o`uω=e2πin ;(FFT) 2. On effectue la multiplication par valeur, on cal-

culeC(1) =A(1)B(1), C(ω) =A(ω)B(ω), etc.

3. On interpole C pour obtenir ses coefficients.

(FFT inverse)

Repr´esentation par coefficients Multiplication

Repr´esentation par valeurs auxnracines de l’unit´e Multiplication

Evaluation en´ Θ(n)racines de l’unit´e FFTO(nlogn)

Interpolation FFT inverseO(nlogn)

Corollaire 21 On peut multiplier deux polynˆomes de degr´eO(n)enO(nlogn).

8 Type abstrait ‘Polynˆ ome’

Voici le type abstrait d’un polynˆome :

• Evaluer le polynˆ´ ome en un point ;

• Addition de deux polynˆomes ;

• Multiplier deux polynˆomes ;←l`a, on se concentre sur cette op´eration

• Calculer une racine ;

• D´eriver, etc.

(8)

8.1 Impl´ ementations par coefficients

A=

n−1

X

i=0

aiXi

On stocke les coefficientsa0, . . . , an−1dans un tableau.

Evaluation´ On utilise la r`egle de Horner en Θ(n) :

A(8) =a0+8×(a1+8×(a2+...+8×(an−2+8×an−1))...)) Addition En Θ(n) : on somme coefficients par coefficients.

Multiplication On cherche le produit de deux polynˆomesAet B de degr´en−1 d´efinis par : A=

n−1

X

i=0

aiXi, B=

n−1

X

i=0

biXi.

Le r´esultat est le polynˆomeC=P2n−2

k=0 ck de degr´e 2n−2, avec : ck=

k

X

i=0

aibk−i.

Remarque 22 En th´eorie du signal, on peut avoir envie de construire un signal c `a partir d’une superposition de signauxbd´ecall´es, pond´er´es par des coefficientsa. C’est exactement le calcul ci-dessus !

L’impl´ementation directe du produit de 2 polynˆomes est donc de complexit´e Θ(n2).

8.2 Impl´ ementation par paires point-valeur

Un polynˆomeA de degr´e≤n−1 est repr´esent´e par un ensemble denpaires point-valeur : {(x0, y0), . . . ,(xn−1, yn−1)}

Exemple 23 Le polynˆomeA= 2+X2+5X3est repr´esent´ee par l’ensemble de 4 points{(−1,−2),(0,2),(1,8),(2,46)}

(carP(−1) =−2,P(0) = 2, etc.).

Addition. En Θ(n).

Multiplication. En Θ(n), mais il faut utiliser une repr´esentation´etendue.

Ade degr´e≤n−1, repr´esent´e par {(x0, y0), . . . ,(x2n−1, y2n−1)}

B de degr´e≤n−1, repr´esent´e par{(x0, y00), . . . ,(x2n−1, y2n−10 )}

alorsABde degr´e≤2n−1 repr´esent´e par{(x0, y0y00), . . . ,(x2n−1, y2n−1y2n−10 )}

8.3 Conversion d’une repr´ esentation ` a une autre

Repr´esentation par coefficients Multiplication

Repr´esentation par valeurs Multiplication

Evaluation en´ Θ(n) points distincts Avec r`egle de Horner

Interpolation

Interpolation de Lagrange

(9)

par coefficients par valeurs Evaluation en un point´ O(n) ?

Somme O(n) O(n)

Multiplication O(n2) O(n)

Evaluation en´ Θ(n) points distincts. En Θ(n2) en appliquant Θ(n) fois la r`egle de Horner.

Interpolation Trouver les coefficients du polynˆomes `a partir des points s’appellent uneinterpolation. Cela requiert Θ(n2) op´erations ´el´ementaires si on utilise l’interpolation de Lagrange qui permet de retrouver les coefficients du polynˆome `a partir de couples (xi, yi) :

P

iyi`i(X) o`u `i=ΠΠj6=i(X−xj)

j6=i(xi−xj).

8.4 Avoir le meilleur des deux mondes avec la FFT

Repr´esentation par coefficients Multiplication

Repr´esentation par valeurs auxnracines de l’unit´e Multiplication

Evaluation en´ Θ(n)racines de l’unit´e FFTO(nlogn)

Interpolation FFT inverseO(nlogn)

9 S´ election

D´efinition 24 (Probl`eme de s´election)

• Entr´ee : un tableau T d’´el´ements comparables, un entierk ;

• Sortie : le k-`eme ´el´ement le plus petit deT.

fonction selection(T, k)

Choisir un ´el´ementxdeT comme pivot

D´ecouperT en trois cat´egories : T<,T= etT> (resp. les ´el´ements inf´erieurs< x, ´egaux `a xet > x) sik≤ |T<|alors retournerselection(T<, k)

sinon si|T<|< k≤ |T<|+|T=|alors retourner x sinon retourner selection(T>, k− |T=| − |T<|)

Th´eor`eme 25 La complexit´e pire cas estΘ(n2) .

9.1 Choix al´ eatoire du pivot

Choisir al´eatoirement uniform´ement le choix du pivot jusqu’`a ce que|T<| ≤3n/4 et|T>| ≤3n/4.

Th´eor`eme 26 L’esp´erance du temps pass´e pour choisir un tel pivot estO(n).

D´emonstration. On choisit un indicei du tableauT entre 1 etn. Tester que|T<| ≤3n/4 et|T>| ≤3n/4 se fait en tempsO(n).

On a |T<| ≤3n/4 et|T>| ≤3n/4 d`es lors queiest entren/4 et 3n/4. Ainsi : P(|T<| ≤3n/4 et|T>| ≤3n/4) = 1/2 L’esp´eranceE du nombre de lancers jusqu’`a avoir un bon choix v´erifie :

(10)

E=

X

j=1

j(1/2)j Or E=P

j=1j(1/2)j = 1 +P

j=1(j−1)(1/2)j= 1 +P

j=0(j)(1/2)j= 1 +E/2 DoncE= 2.

Donc l’esp´erance du temps pass´e est 2O(n) =O(n).

Th´eor`eme 27 L’esp´erance du temps pass´e de l’algorithme s´election avec ce choix al´eatoire est O(n).

D´emonstration. On a une esp´erance deO(n) `a chaque appel r´ecursif. En notantT(n) l’esp´erance du temps pour l’algorithme, on a :

T(n)≤T(3n/4) +O(n) D’o`u duT(n) =O(n).

9.2 Algorithme lin´ eaire d´ eterministe

fonctionselection(T, k)

D´ecouperT en blocs de taille 5 (sauf ´eventuellement le dernier de taille≤5)

Calculer les m´edians de chaque blocs et les stocker dans un tableauM

Calcul du tableauM.

x:=selection(M,b|M|/2c)

D´ecouperT en trois cat´egories : T<, T= et T>

si k≤ |T<|alors retournerselection(T<, k) sinon si|T<|< k≤ |T<|+|T=|alors retournerx sinon retourner selection(T>, k− |T=| − |T<|)

Th´eor`eme 28 L’algorithme de s´election est en O(n) dans le pire cas.

Pourquoi le pivot est-il bon ?

Trions (par la pens´ee) les blocs par m´edians croissants et dessinons les chacun tri´es.

≤ ≤ ≤ ≤ ≤ ≤ ≤ ≤ ≤ ≤ ≤ ≤≥ ≥ ≥x ≥ ≥ ≥ ≥ ≥ ≥ ≥ ≥ ≥

D´emonstration. Le calcul du tableauM est enO(n). Le calcul du m´edian deM est enT(n/5).

Il y a 3/10 des ´el´ements qui sont plus petits que ou ´egaux `ax. Il y a 3/10 des ´el´ements qui sont plus grands que ou ´egaux `a x. Ainsi, nous avons|T<| ≤7n/10 et|T>| ≤7n/10. Ainsi la relation de r´ecurrence est :

T(n) =T(n/5) +T(7n/10) +O(n).

Avec la m´ethode de l’arbre r´ecursif (s´erie convergente), on voit queT(n) =O(n).

10 Notes bibliographiques

Diviser pour r´egner est au programme de Terminale ! Ce cours a ´et´e r´ealis´e avec les deux ouvrages phares [DPV08] et [CLRS09]. La terminologiediviser pour r´egner remonte `a Karatsuba et Ofman [KO63] en 1963. Le tri fusion aurait

´et´e invent´e en 1945 par John von Neumann. Le tri rapide a ´et´e invent´e en 1962 par Hoare [Hoa62].

L’algorithme de Strassen a fait des ´emois en 1969 [Str69] alors que tout le monde pensait que tout algorithme ´etait forc´ement cubique dans le pire cas. Blum, Floyd, Pratt, Rivest, and Tarjan ont invent´e l’algorithme de s´election en pire casO(n) [BFP+73]. Pour la FFT, on cite souvent Cooley et Tukey [CT65], mais l’algorithme ´etait connu et on attribue sa premi`ere invention `a Gauss.

Le papier original pour le master theorem est [BHS80]. Il y a des m´ethodes plus puissantes comme celle de Akra-Bazzi [AB98].

(11)

References

[AB98] Mohamad A. Akra and Louay Bazzi. On the solution of linear recurrence equations.Comput. Optim. Appl., 10(2):195–210, 1998.

[BFP+73] Manuel Blum, Robert W. Floyd, Vaughan R. Pratt, Ronald L. Rivest, and Robert Endre Tarjan. Time bounds for selection. J. Comput. Syst. Sci., 7(4):448–461, 1973.

[BHS80] Jon Louis Bentley, Dorothea Haken, and James B Saxe. A general method for solving divide-and-conquer recurrences. ACM SIGACT News, 12(3):36–44, 1980.

[CLRS09] Thomas H Cormen, Charles E Leiserson, Ronald L Rivest, and Clifford Stein. Introduction to algorithms.

MIT press, 2009.

[CT65] James W Cooley and John W Tukey. An algorithm for the machine calculation of complex fourier series.

Mathematics of computation, 19(90):297–301, 1965.

[DPV08] Sanjoy Dasgupta, Christos H. Papadimitriou, and Umesh V. Vazirani. Algorithms. McGraw-Hill, 2008.

[Hoa62] C. A. R. Hoare. Quicksort. Comput. J., 5(1):10–15, 1962.

[KO63] Anatolii Karatsuba and Yu Ofman. Multiplication of multidigit numbers on automata. In Soviet physics doklady, volume 7, pages 595–596, 1963.

[Str69] Volker Strassen. Gaussian elimination is not optimal. Numerische mathematik, 13(4):354–356, 1969.

Références

Documents relatifs

Bien sˆ ur les ´ ecritures des deux signataires devront apparaˆ ıtre de mani` ere significative dans la copie. Probl`

Un arbre rouge-noir repr´ esente un B-arbre avec B = 2 ; les op´ erations sur les arbres rouge-noir simulent les op´ erations sur les B-arbres....

si s est une position gagnante pour le joueur i retourner vrai si s est une position perdante pour le joueur i retourner faux pour tout coup de s → t faire.. si

Noter qu’il peut exister plusieurs permutations π triant le tableau (c’est le cas si et seulement si le tableau contient plusieurs fois le mˆ eme ´ el´ ement), mais T [π(i)]

Rappelons que 2 matrices semblables ont le mˆ eme polynˆ ome caract´ eristique, et que le polynˆ ome caract´ eristique d’une matrice et de sa transpos´ ee sont identiques.. Un

I.A.1) Nous prouvons par exemple que si A est triangulaire inf´ erieure inversible, alors A − 1 est elle- mˆ eme triangulaire inf´ erieure. Il suffit alors de prendre la transpos´

2.7.1 Composition d’un MRU et d’un MRUA non-perpendiculaires : Le boulet de canon, la balle de golf, le ballon de football 13 2.7.2 2 MRUAs avec vitesses

soit a l’´ element point´ e par le pointeur sur la premi` ere liste soit b l’´ element point´ e par le pointeur sur la premi` ere liste ajouter min(a,b) ` a la liste en