TD 7 : Tri Rapide

publicité
Licence Informatique L3
Parcours : Informatique fondamentale
année 2008-2009
TD 7 : Tri Rapide
Description du tri rapide d’un tableau A[i…j] .
Diviser : à partir du pivot q = A[i], partitionner A en deux sous tableaux non vides A[i…k1] et A[k+1…j] tels que tout élément de A[i…k-1] soit inférieur ou égal à q et tout élément de
A[k+1…j] soit supérieur à q. A[k]= q.
Régner : trier par la procédure de manière récursive A[i…k-1] et A[k+1…j].
Combiner : il n’y a rien à faire !!!
D’où l’algorithme de tri rapide (pour un tableau d’entiers) :
procedure Tri-rapide (var A : tableau d’entiers [1…n] ; i :entier ; j : entier) ;
entier : k ;
début
si (i<j) alors
début
Placer(A,i,j, k) ;
Tri-rapide(A,i,k-1) ;
Tri-rapide(A,k+1,j) ;
fin
finsi
fin
procedure Placer(var A : tableau d’entiers [1…n] ; i :entier ; j : entier ; var k : entier) ;
entier : l ;
entier : q , x;
début
l := i+1 ;
k := j ;
tant que l ≤ k faire
début
tant que A[k] > A[i] faire k := k-1 ; {à la fin A[k] ≤ A[i] }
tant que l ≤ j et A[l] ≤ A[i] faire l := l+1 ; {à la fin A[l] > A[i] }
si l < k alors
début
x := A[l] ;
A[l] := A[k] ; {échange de A[l] et A[k] }
A[k] := x ;
l :=l+1 ;
k :=k-1 ;
fin
finsi
fin
q := A[i] ;
A[i] := A[k] ; {échange de A[i] et A[k]}
A[k] := q ;
Fin
1
Le but de cet exercice est de trouver la complexité moyenne de l’algorithme de Tri-rapide en
terme de comparaisons. Toutes les étapes de calcul sont décrites et les résultats donnés à chaque
étape afin qu’indépendamment du temps consacré en TD, vous puissiez reprendre et comprendre
la démarche.
I Analyse de Placer en nombre de comparaisons
1.1 Faire dérouler l’algorithme Placer sur l’exemple [101, 213, 20, 123, 47, 79, 195].
1.2 Analyser l’algorithme selon que le pivot q est un minimum du tableau, un maximum ou une
valeur intermédiaire.
1.3 Montrer que le nombre de comparaisons pour un tableau de longueur n est égal à n-1 ou n+1.
II Analyse de Tri-rapide en nombre de comparaisons
On suppose que les valeurs de A sont toutes distinctes.
2.1 Complexité au pire : Le pire de cas correspond à un tableau de valeurs strictement
croissantes. Calculer le nombre de comparaisons effectuées dans ce cas pour un tableau de taille
n. En déduire que la complexité au pire Max(n) vérifie :
Max (n) = θ (n 2 )
2.2 On suppose que le pivot q peut se placer de manière équiprobable sur n’importe quelle place k
du tableau de taille n. On a donc une probabilité 1/n d’avoir le pivot à la kième place, et donc
d’avoir deux sous tableaux de taille respective k-1 et n-k.
Si on note Moy(n) la complexité en moyenne de l’algorithme du tri rapide, en utilisant 1.3,
comprendre que l’encadrement de Moy(n) par récurrence :
1 n
1 n
( Moy (k − 1) + Moy (n − k )) ≤ Moy (n) ≤ n + 1 + ∑ ( Moy (k − 1) + Moy (n − k )), n ≥ 2
∑
n k =1
n k =1
Moy (0) = Moy (1) = 0
Suit la démonstration pour calculer cette Moyenne donnée par récurrence.
n −1+
2.3 On pose :
1 n
An = n − 1 + ∑ ( Ak −1 + An − k )
n k =1
1 n
Bn = n + 1 + ∑ ( Bk −1 + Bn − k ), n ≥ 2 ,
n k =1
A0 = A1 = 0 ; B0 = B1 = 0
An = n − 1 +
2 n −1
∑ Ak
n k =1
Bn = n + 1 +
2 n −1
∑ Bk , n ≥ 2
n k =1
Montrer que
alors An ≤ Moy (n) ≤ Bn
2
2.4 On utilisera ici la méthode par soustraction pour trouver Bn :
n −1
a) On a : n( Bn − n − 1) = 2∑ Bk , n ≥ 2 . Montrer que par soustraction on
k =1
obtient : nBn = (n + 1) Bn −1 + 2n .
b) Après division par n(n+1) et en utilisant le changement de domaine v n =
que la suite (vn) vérifie v n = v n −1 +
2
,
n +1
Bn
, montrer
n +1
n≥3
n +1
1
1 1
= 1 + 2( H n +1 − 1 − − ) où Hn est la série harmonique.
2 3
k =4 k
8n + 2
. On obtient de même An = 2(n + 1) H n − 4n .
d) En déduire que : Bn = 2(n + 1) H n −
3
c) En déduire que v n = 1 + 2∑
e) Conclusion : en utilisant le résultat vu en cours (Chapitre Approximations asymptotiques),
à savoir que la série harmonique Hn vérifie H n ≈ Log (n) , montrer que :
Moy(n) ≈ 2nLog (n)
3
Téléchargement