LE TRI RAPIDE
Complexité moyenne
Objectif
Il s’agit ici d’obtenir un équivalent simple de la complexité moyenne du tri rapide.
Préliminaire
On considère un espace probabilisé (Ω,
A
,P). Soit X et Y deux variables aléatoires définies sur cet espace et telles que :• X( )Ω ⊂ 0 ;N où N désigne un entier naturel.
• Y( )Ω ⊂ 0 ;n−1 et j 0 ;n 1 ,P Y( j) 1
∀ ∈ − = =n.
Pour tout entier j dans 0 ;n−1 , on désigne par E X Y( | = j) l’espérance mathématique de la variable aléatoire X pour la probabilité conditionnelle P(Y=j). E X Y( | = j) est donc
l’espérance de X dans l’espace probabilisé
(
Ω,A ,P(Y=j))
.1. Calculer E Y( ).
On a : ( ) 1 ( ) 1 1 ( )
0 1 1
1 1 1 1 1
2 2
n n n
j j j
n n n
E Y j P Y j j j
n n n
− − −
= = =
− −
=∑ × = =∑ × = ∑ = × = .
( ) 1
2 E Y = n−
2. Montrer que ( ) 1 ( )
0
1 |
n
j
E X E X Y j
n
−
=
= ∑ = .
On a :
( ) ( ) ( )( ) ( )
( )( ) ( )( )
( )( ) ( )( )
( )
1
0 0 0
1 1
0 0 0 0
1 1
0 0 0 0
1
0
1 1
1 1
1 |
N N n
Y j
i i j
N n N n
Y j Y j
i j i j
N n n N
Y j Y j
i j j i
n
j
E X i P X i i P X i P Y j
i P X i i P X i
n n
i P X i i P X i
n n
E X Y j n
−
= = = =
− −
= =
= = = =
− −
= =
= = = =
−
=
⎛ ⎞
= × = = ×⎜ = × = ⎟
⎝ ⎠
⎛ ⎞ ⎛ ⎞
= ×⎜ = × ⎟= × ×⎜ = ⎟
⎝ ⎠ ⎝ ⎠
⎛ ⎞ ⎛ ⎞
= × ⎜⎝ × = ⎟⎠= × ⎜⎝ × = ⎟⎠
= × =
∑ ∑ ∑
∑ ∑ ∑ ∑
∑ ∑ ∑ ∑
∑
Le résultat est ainsi établi.
( ) 1 ( )
0
1 |
n
j
E X E X Y j
n
−
=
= ×∑ =
Calcul de la complexité moyenne
Soit à trier une liste L=[l l l1 2 3...ln] uniformément choisie dans l’ensemble des n! permutations de l’ensemble 1;n .
Notons Cn la variable aléatoire correspondant au nombre de comparaisons requises pour trier cette liste à l’aide de l’algorithme du tri rapide.
On cherche E C( )n .
Pour une liste donnée, on utilise comme pivot le premier élément de cette liste.
On note Gn (respectivement Dn) la longueur de la liste de gauche LGn (respectivement droite
D
Ln) obtenue à l’issue de la première étape du tri de la liste L et on pose Rn =Cn− −(n 1)
correspondant aux nombres de comparaisons à effectuer après la première étape.
3. Déterminer la loi de Gn.
Nous effectuons n−1 comparaisons lors de la première étape. La variable aléatoire Gn peut donc prendre toutes les valeurs de l’ensemble 0 ;n−1 et toutes ces valeurs sont
équiprobables. En effet, parmi les entiers de la liste L, il y en a l1−1 qui sont inférieurs à l1. Comme l1 prend uniformément ses valeurs dans 1;n , on en déduit que Gn prend
uniformément ses valeurs dans 0 ;n−1 .
Gn suit la loi uniforme sur 0 ;n−1 .
4. Montrer que ∀ ≥ ∀ ∈n 2, j 0 ;n−1 ,E R( n|Gn = j)=E C( j+Cn j− −1)
Si la liste de gauche LGn comporte j éléments (Gn = j) alors la liste de droite LDn en comportera n− −1 j. Ainsi, le nombre de comparaison restant à effectuer, Rn est égal à
1
j n j
C +C − − . On a donc, sachant que Gn= j : Rn =Cj+Cn j− −1 et, en considérant les espérances :
( n| n ) ( j n j 1)
E R G = j =E C +C− −
5. Montrer que l’on a : ( ) 1 ( )
0
2, 1 2
n
n j
j
n E C n E C
n
−
=
∀ ≥ = − + ∑
En tenant compte du résultat préliminaire, le résultat précédent donne :
( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( )
1
0
1 1
1 1
0 0
1 1 1 1
1
0 0 0 0
1
0
1 |
1 1
1 1
2
n
n n n
j
n n
j n j j n j
j j
n n n n
j n j j j
j j j j
n j j
E R E R G j
n
E C C E C E C
n n
E C E C E C E C
n n
n E C
−
=
− −
− − − −
= =
− − − −
= = − − = =
−
=
= =
⎡ ⎤
= + = ⎣ + ⎦
⎡ ⎤ ⎡ ⎤
= ⎢ + ⎥= ⎢ + ⎥
⎣ ⎦ ⎣ ⎦
=
∑
∑ ∑
∑ ∑ ∑ ∑
∑
Or, Rn =Cn− −(n 1), d’où : E R( )n =E C( ) (n − −n 1) puis E C( )n = − +n 1 E R( )n et, finalement :
( ) 1 ( )
0
1 2
n
n j
j
E C n E C
n
−
=
= − + ∑
6. Montrer que l’on a : ( 1) ( )
2 2
2, n 1 1 n
n n
n E C E C
n n
+
∀ ≥ = + +
+ +
Poser alors Xn =Cn−2 et en déduire : ( 1) ( )
2, 2 2
n 1 n
n E X n E X
+ n
∀ ≥ = + +
+ .
Multiplions l’égalité obtenue précédemment par n : ( ) ( ) 1 ( )
0
1 2
n
n j
j
nE C n n E C
−
=
= − + ∑ .
A l’ordre n+1 : ( ) ( 1) ( ) ( ) ( ) 1 ( ) ( )
0 0
1 1 2 1 2 2
n n
n j j n
j j
n E C n n E C n n E C E C
− +
= =
+ = + + ∑ = + + ∑ + .
En soustrayant alors membre à membre ces deux égalités, on obtient :
( ) ( 1) ( ) ( ) 1 ( )
0
1 1 2
n
n n j
j
n E C nE C n n E C
−
+ =
+ − = + + ∑ ( ) ( ) 1 ( )
0
2 1 2
n
n j
j
E C n n E C
−
=
+ − − + ∑
( ) ( ) ( ) ( )
( ) ( )
1
1
1 2 2
2 2
1 1
n n
n n
n E C n n E C
n n
E C E C
n n
+
+
⎧ ⎫
⎪ ⎪
⎨ ⎬
⎪ ⎪
⎩ ⎭
⇔ + = + +
⇔ = + +
+ +
Posons alors Xn=Cn−2. On a :
( ) ( )
( )
( ( ) )
( ) ( )
( )
1 1 2
2 2
1 1 2
2 2
2 2
1 1
2 2
2 2
1 1 1
2 2 1
n n
n
n
n
n
E X E C
n n n n E C n n n n E X
n n
n n n E X
n E X n
+ = + −
= + + −
+ +
= + + + −
+ +
− + +
= + +
+ + +
= + + +
7. Démontrer alors par récurrence que l’on a : ∀ ≥n 2,E X( )n =2(n+1)(Sn+1−2)
où, pour tout entier naturel n non nul : 1 1 1
1 ...
2 3 Sn
= + + + +n.
Pour n=2, on a : E X( )n =E X( )2 =E C( 2−2)=E C( )2 − = − = −2 1 2 1. Par ailleurs :
( )( 1 ) ( )( 3 )
1 1 11 1
2 1 2 2 2 1 2 6 1 2 6 2 6 1
2 3 6 6
n+ Sn+ − = + S − = ⎛⎜⎝ + + − ⎞⎟⎠= ⎛⎜⎝ − ⎞⎟⎠= × −⎛⎜⎝ ⎞⎟⎠= − L’égalité est donc vraie pour n=2.
Supposons maintenant qu’elle soit vraie pour un rang n supérieur ou égal à 2.
On a : E X( ) (n =2 n+1)(Sn+1−2).
Il vient alors, en utilisant le deuxième résultat de la question précédente :
( ) ( )
( )( )
( )( )
( ) ( )
( )( )
1
1
1
1
2
2 2 1
2 2 2 1 2
1
2 2 2 2
2 2 1 2
2
2 2 2
n n
n
n
n
n
E X n E X
n
n n S
n
n S
n S
n
n S
+
+
+
+
+
= + + +
= + + × + −
+
= + + −
⎡ ⎤
= + ⎢⎣ + + − ⎥⎦
= + −
La propriété est donc vraie au rang n+1.
On en déduit finalement que la propriété est vraie pour tout entier naturel n supérieur ou égal à 2.
( ) ( )( 1 )
2, n 2 1 n 2
n E X n S +
∀ ≥ = + −
8. Déduire du résultat précédent un équivalent simple de E C( )n en +∞. On a classiquement : 1 1 1
1 ... ln
2 3
Sn n
n+∞
= + + + + ∼ .
D’où : 1 ( )
1 1 1 1
1 ... ln 1 ln
2 3 1
Sn n n
n n
+ = + + + + + +∞ + +∞
+ ∼ ∼ et Sn+1 2 lnn
− +∞∼ . Il vient alors, en utilisant le résultat précédent et en tenant compte de n 1 n
+ +∞∼ :
( )n 2( 1)( n1 2) 2 ln
E X n S + n n
= + − +∞∼ .
Comme Xn =Cn−2, on a : E C( )n =E X( )n +2 puis E C( )n E X( )n
+∞∼ et, finalement :
( )n 2 ln
E C n n
+∞∼