Algorithmique et Complexit´
e
4. Strat´
egie I : Diviser pour R´
egner et Tri
4.1 Diviser pour R´
egner
Nicole Bidoit
Universit´
e Paris XI, Orsay
Ann´
ee Universitaire 2008–2009
1
Diviser pour r´
egner
De l’adage politique divide ut imperes `
a une strat´
egie fondamentale de l’algorithmique
R´
esoudre le probl`
eme Ppar un algorithme Aqui, pour chaque instance Ide taille n
1. coupe l’instance Ien 2(ou plus!) instances I1et I2
2.r´
esoud le probl`
eme Ppour I1et I2avec l’algorithme A
3. compose les solutions P(I1)et P(I2)pour produire la solution P(I).
”Diviser pour r´
egner” versus ”algorithme r´
ecursif
complexit´
e: Diviser pour gagner en temps
֒Exploiter les propri´
et´
es des sous-instances
֒Bien ”couper” (sans que ce soit compliqu´
e)
֒Composition facile
De nombreux exemples :
la recherche, le tri,
exponentiation (calcul de an)
la multiplication d’entiers, de matrices, de polynˆ
omes
enveloppe convexe de points, diagramme de Vorono¨ı ...
2 Strat´
egies algorithmiques
Diviser pour r´
egner
Recherche dichotomique Binary Search
Entr´
ee : un tableau Ttri´
eet un ´
el´
ement e
1. Couper le tableau T[1..n]en 2: T[1..n
2]et T[n
2+1..n]
2. Chercher edans les 2 sous instances
(-: la recherche est triviale pour une des deux sous-instances ! le gain est l`
a
3. eest trouv´
e dans Tsi il est trouv´
e dans l’une des deux sous-instances.
Recherche dans une liste contigu¨
e non tri´
ee
mˆ
eme strat´
egie que ci-dessus aucun gain
Recherche d’un ´
el´
ement majoritaire (Exercice)
Soit T[1..n]un tableau repr´
esentant une liste d’´
el´
ements de taille n.
Un ´
el´
ement ede Test majoritaire si l’ensemble {i|T[i]=e}est de cardinalit´
e
strictement sup´
erieure `
an
2.
Proposer un algorithme simple ; analyser sa complexit´
e ?
Proposer un algorithme ”diviser pour r´
egner” ; analyser sa complexit´
e ?
3 Strat´
egies algorithmiques
Diviser pour r´
egner
Tri fusion Merge Sort
Entr´
ee : tableau Trepr´
esentant un ensemble d´
el´
ements muni d’un ordre
1. Couper le tableau T[1..n]en 2 : T[1..n
2]et T[n
2+1..n]
2. Trier chacune des 2 sous instances avec la mˆ
eme m´
ethode
3. Tri(T) est la fusion des deux sous-instances tri´
ees.
la fusion intercale les ´
el´
ements des deux tableaux
Tri rapide Quicksort
Entr´
ee : tableau Trepr´
esentant un ensemble d’´
el´
ements muni d’un ordre
1. Couper le tableau T[1..n]en 2 en utilisant un ´
el´
ement pivot T[k]
tous les edans T[1..m]sont au pivot et tous les edans T[m+1..n]sont >au pivot
2. Trier chacune des 2 sous instances avec la mˆ
eme m´
ethode
3. Tri(T) est la concat´
enation des deux sous-instances tri´
ees.
Le gain d´
epend du choix du pivot
Le cas le meilleur (Exercice)
Le cas le pire (Exercice)
4 Strat´
egies algorithmiques
Diviser pour r´
egner – Produit de Matrices
Cas des matrices 2×2
M´
ethode classique.
a b
c d
e f
g h
=
ae+bg af+bh
ce+dg cf+dh
8 multiplications
4 additions
Algorithme de Strassen.
a b
c d
e f
g h
=
r s
t u
p1=a(fh)
p2= (a+b)h
p3= (c+d)e
p4=d(ge)
p5= (a+d)(e+h)
p6= (bd)(g+h)
p7= (ac)(e+f)
et donc r=p5+p4p2+p6
s=p1+p2
t=p3+p4
u=p5+p1p3+p7
7 multiplications
18 additions
Strassen est meilleur, en terme de nombre de multiplications ...
5 Strat´
egies algorithmiques
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !