Permutation aléatoire

Cet article est une ébauche concernant les probabilités et la statistique et l’informatique théorique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Une permutation aléatoire de taille N, est une permutation prise de manière uniforme dans l'ensemble des permutations de taille N.

De nombreux paramètres ont été étudiés sur les permutations aléatoires, par exemple, le nombre moyen de points fixes ou la longueur des cycles. Plusieurs algorithmes existent pour générer des permutations aléatoires à partir d'un générateur de nombres aléatoires, par exemple le mélange de Fisher-Yates.

Génération de permutations aléatoires

Génération à l'aide de variables aléatoires à densité

Soit   X = ( X 1 , X 2 , , X n )   {\displaystyle \scriptstyle \ X=(X_{1},X_{2},\dots ,X_{n})\ } une suite de variables aléatoires i.i.d. à densité, définies sur un espace probabilisé   ( Ω , A , P ) .   {\displaystyle \scriptstyle \ (\Omega ,{\mathcal {A}},\mathbb {P} ).\ } Pour tout entier k compris entre 1 et n, posons

σ ( k , ω )   =   C a r d { i   t e l s   q u e   1 i n ,   e t   t e l s   q u e   X i ( ω ) X k ( ω ) } .   {\displaystyle \sigma (k,\omega )\ =\ \mathrm {Card} \left\{i\ \mathrm {tels~que} \ 1\leq i\leq n,\ \mathrm {et~tels~que} \ X_{i}(\omega )\leq X_{k}(\omega )\right\}.\ }

Ainsi,   σ ( k , ω )   {\displaystyle \scriptstyle \ \sigma (k,\omega )\ } s'interprète comme le rang de   X k ( ω )   {\displaystyle \scriptstyle \ X_{k}(\omega )\ } dans l'échantillon, une fois celui-ci rangé dans l'ordre croissant.

Proposition —  L'application   k σ ( k , ω )   {\displaystyle \scriptstyle \ k\to \sigma (k,\omega )\ } est une permutation aléatoire uniforme.

On trouvera ici une démonstration de la proposition ci-dessus dans le cas où la distribution de probabilité commune aux variables   X i   {\displaystyle \scriptstyle \ X_{i}\ } est la loi uniforme sur [0,1]. On peut en fait se contenter de variables i.i.d. dont la loi est diffuse (sans atomes) modulo une modification mineure de la démonstration. Cependant la loi uniforme est particulièrement commode pour diverses applications.

Algorithme de Fisher-Yates

Le mélange de Fisher-Yates, également appelé mélange de Knuth, est un algorithme en place permettant d'appliquer une permutation aléatoire à n éléments en temps linéaire, les n! permutations possibles étant équiprobables en sortie.

Le principe de cet algorithme est le suivant :

pour i de n - 1 descendant_à 1 :
      j ← nombre aléatoire entier 0 ≤ j ≤ i
      échanger a[j] et a[i]

Génération par les cycles

On peut définir une permutation aléatoire sur l'ensemble {1, ..., n} selon une loi uniforme en définissant les cycles de cette permutation.

On commence par former un cycle commençant par le nombre 1, ce qui constitue l'étape 1 du processus.

Pour i variant de 1 à n, l'étape i est celle où i nombres ont déjà été utilisés pour définir des cycles de la permutation, le dernier cycle étant en cours de construction. Au début de cette étape, il reste n-i nombres non utilisés. On utilise une variable de Bernoulli X n i + 1 {\displaystyle X_{n-i+1}} de paramètre 1 n i + 1 {\displaystyle {\frac {1}{n-i+1}}} pour terminer l'étape i et passer à l'étape suivante :

  • Si la variable aléatoire prend la valeur 1 (avec donc la probabilité 1 n i + 1 {\displaystyle {\frac {1}{n-i+1}}} ), on ferme le cycle en cours de construction, et on en ouvre un autre avec la plus petite des n-i valeurs non utilisées.
  • Si la variable aléatoire prend la valeur 0, on tire au hasard l'une des n-i valeurs non utilisées selon une loi uniforme, la valeur tirée constituant la valeur suivante du cycle en cours de construction.

À la dernière étape, on utilise la variable X 1 {\displaystyle X_{1}} , qui est une variable certaine égale à 1, correspondant au fait qu'on ferme le dernier cycle.

L'intérêt de cette démarche est que la variable aléatoire égale au nombre de cycles de la permutation n'est autre que X 1 + X 2 + + X n {\displaystyle X_{1}+X_{2}+\cdots +X_{n}} , égal au nombre de fois où l'on a fermé un cycle, les X i {\displaystyle X_{i}} étant indépendantes[1].

Variables aléatoires portant sur les permutations

Nombre de points fixes

Soit N la variable aléatoire donnant le nombre de points fixes d'une permutation tirée au hasard dans le groupe symétrique S n {\displaystyle {\mathcal {S}}_{n}} .

La probabilité P ( N = 0 ) {\displaystyle \mathbb {P} (N=0)} n'est autre que le quotient par n! du nombre de dérangements parmi n éléments, à savoir :

  • P ( N = 0 ) = k = 0 n ( 1 ) k k ! {\displaystyle \mathbb {P} (N=0)=\sum _{k=0}^{n}{\frac {(-1)^{k}}{k!}}}

Le cas général P ( N = r ) {\displaystyle \mathbb {P} (N=r)} s'obtient en divisant par n! le nombre de permutations ayant r points fixes. On dénombre ces dernières en choisissant r éléments parmi n (qui seront les points fixes), puis en choisissant un dérangement sur les n - r éléments restants. D'où :

  • P ( N = r ) = 1 n ! ( n r ) ( n r ) ! k = 0 n r ( 1 ) k k ! = 1 r ! k = 0 n r ( 1 ) k k ! {\displaystyle \mathbb {P} (N=r)={\frac {1}{n!}}{\binom {n}{r}}(n-r)!\sum _{k=0}^{n-r}{\frac {(-1)^{k}}{k!}}={\frac {1}{r!}}\sum _{k=0}^{n-r}{\frac {(-1)^{k}}{k!}}}

N converge en loi vers la loi de Poisson de paramètre 1.

Le calcul de l'espérance et de la variance se fait aisément en remarquant que N est la somme des variables aléatoires de Bernoulli X 1 + + X n {\displaystyle X_{1}+\cdots +X_{n}} , où X k {\displaystyle X_{k}} prend la valeur 1 si k est un point fixe. On a P ( X k = 1 ) = 1 n {\displaystyle \mathbb {P} (X_{k}=1)={\frac {1}{n}}} et P ( X j = X k = 1 ) = 1 n ( n 1 ) {\displaystyle \mathbb {P} (X_{j}=X_{k}=1)={\frac {1}{n(n-1)}}} pour j différent de k, d'où l'on tire :

  • E ( N ) = 1 {\displaystyle \mathbb {E} (N)=1}
  • V ( N ) = 1 {\displaystyle \mathbb {V} (N)=1}

Nombre de descentes

Une descente d'une permutation π, élément de S n {\displaystyle {\mathcal {S}}_{n}} , est un indice i entre 1 et n-1 tel que π(i+1) < π(i). Le nombre de permutations de S n {\displaystyle {\mathcal {S}}_{n}} ayant k descentes est, par définition, le nombre eulérien A(n,k).

Si X est la variable aléatoire définie sur S n {\displaystyle {\mathcal {S}}_{n}} et qui associe à une permutation son nombre de descentes, alors :

  • P ( X = k ) = A ( n , k ) n ! {\displaystyle \mathbb {P} (X=k)={\frac {A(n,k)}{n!}}}

Pour n=1, X est la variable certaine 0.

Pour n supérieur ou égal à 2, on montre que[2] :

  • E ( X ) = n 1 2 {\displaystyle \mathbb {E} (X)={\frac {n-1}{2}}}
  • V ( X ) = n + 1 12 {\displaystyle \mathbb {V} (X)={\frac {n+1}{12}}}

Si S est la somme de n variables aléatoires indépendantes suivant chacune une loi uniforme continue sur [0, 1], S suit une loi de Irwin-Hall, d'espérance n 2 {\displaystyle {\frac {n}{2}}} et de variance n 12 {\displaystyle {\frac {n}{12}}} . On montre que X et la partie entière de S suivent la même loi de probabilité.

Plus longue sous-suite croissante

Par exemple, la plus longue sous-suite croissante de la permutation (15423) est (123) de longueur 3. La loi de cette longueur est en relation avec la percolation de dernier passage dans le carré.

Nombre des cycles et nombre de records

Comme vu plus haut, la variable aléatoire K n {\displaystyle K_{n}} égale au nombre de cycles d'une permutation de {1, ..., n} est égale à X 1 + X 2 + + X n {\displaystyle X_{1}+X_{2}+\cdots +X_{n}} , où les X k {\displaystyle X_{k}} sont des variables de Bernoulli indépendantes de paramètres 1 k {\displaystyle {\frac {1}{k}}} . Il en résulte[1] immédiatement la valeur de l'espérance et de la variance de K n {\displaystyle K_{n}}  :

  • E ( K n ) = k = 1 n E ( X k ) = k = 1 n 1 k {\displaystyle \mathbb {E} (K_{n})=\sum _{k=1}^{n}\mathbb {E} (X_{k})=\sum _{k=1}^{n}{\frac {1}{k}}}
  • V ( K n ) = k = 1 n V ( X k ) = k = 1 n 1 k ( 1 1 k ) {\displaystyle \mathbb {V} (K_{n})=\sum _{k=1}^{n}\mathbb {V} (X_{k})=\sum _{k=1}^{n}{\frac {1}{k}}\left(1-{\frac {1}{k}}\right)}

Quant à la loi du nombre de cycles, elle vaut :

  • P ( K n = r ) = 1 n 1 k 1 < k 2 < < k r 1 n 1 1 k 1 k 2 k r 1 {\displaystyle \mathbb {P} (K_{n}=r)={\frac {1}{n}}\sum _{1\leq k_{1}<k_{2}<\cdots <k_{r-1}\leq n-1}{\frac {1}{k_{1}k_{2}\cdots k_{r-1}}}}

et elle vérifie la relation de récurrence :

  • P ( K n = r ) = 1 n P ( K n 1 = r 1 ) + n 1 n P ( K n 1 = r ) {\displaystyle \mathbb {P} (K_{n}=r)={\frac {1}{n}}\mathbb {P} (K_{n-1}=r-1)+{\frac {n-1}{n}}\mathbb {P} (K_{n-1}=r)}

On peut aussi l'exprimer en fonction des nombres de Stirling de première espèce non signés, notés [ n k ] {\displaystyle \left[{\begin{matrix}\scriptstyle n\\\scriptstyle k\end{matrix}}\right]}  :

  • P ( K n = r ) = 1 n ! [ n k ] {\displaystyle \mathbb {P} (K_{n}=r)={\frac {1}{n!}}\left[{\begin{matrix}\scriptstyle n\\\scriptstyle k\end{matrix}}\right]}

La variable centrée réduite obtenue à partir de K n {\displaystyle K_{n}} converge en loi vers la loi normale centrée réduite[3]. Autrement dit, le théorème central limite s'applique à K n {\displaystyle K_{n}} , bien que les X k {\displaystyle X_{k}} ne soient pas de même loi.

La loi du nombre de cycles est identique à celle du nombre de records d'une permutation. Cette identité est apparente lorsqu'on utilise la correspondance fondamentale de Foata, qu'on illustre par l'exemple suivant. Soit la permutation σ = ( 1573 ) ( 26 ) ( 48 ) {\displaystyle \sigma =(1573)(26)(48)} . Écrivons cette permutation en plaçant en dernier dans chaque cycle son élément le plus petit : σ = ( 5731 ) ( 62 ) ( 84 ) {\displaystyle \sigma =(5731)(62)(84)} , et associons à la permutation la liste des nombres lus de gauche à droite [ 57316284 ] {\displaystyle [57316284]} . Cette liste permet de reconstituer les cycles, le premier cycle se terminant par 1, le second par le plus petit nombre n'apparaissant pas dans le premier cycle, le troisième cycle se terminant par le plus petit nombre n'apparaissant pas dans les deux premiers cycles, etc. Mais si on lit la liste de droite à gauche, les nombres terminant les cycles, ((4, 2, 1) dans l'exemple), sont tels que chacun d'eux est inférieur à tous les autres nombres situés plus à droite qu'eux. Ils constituent des records vers le bas. La correspondance de Foata permet donc d'établir une correspondance entre les variables aléatoires dénombrant le nombre de cycles, et celle dénombrant les records vers le bas.

Par symétrie, la variable aléatoire donnant le nombre de records vers le haut a même loi que la variable aléatoire donnant le nombre de record vers le bas, et donc même loi que la variable aléatoire donnant le nombre de cycles.

Nombre d'inversions

Soit Y n {\displaystyle Y_{n}} la variable aléatoire telle que, pour tout permutation σ élément de S n {\displaystyle {\mathcal {S}}_{n}} , Y n ( σ ) {\displaystyle Y_{n}(\sigma )} donne le nombre d'inversions de σ, c'est-à-dire le nombre de couples (i, j) tels que i < j, mais que σ(i) > σ(j).

Pour j variant de 1 à n, notons Z j {\displaystyle Z_{j}} la variable aléatoire donnant le nombre d'indices i inférieurs à j formant une inversion avec j. Y n {\displaystyle Y_{n}} n'est autre que la somme Z 2 + + Z n {\displaystyle Z_{2}+\cdots +Z_{n}} ( Z 1 {\displaystyle Z_{1}} étant nécessairement nul).

( Z 2 , , Z n ) {\displaystyle (Z_{2},\cdots ,Z_{n})} est à valeurs dans [ [ 0 , 1 ] ] × [ [ 0 , 2 ] ] × × [ [ 0 , n 1 ] ] {\displaystyle [\![0,1]\!]\times [\![0,2]\!]\times \dots \times [\![0,n-1]\!]} , et l'application :

σ S n ( Z 2 ( σ ) , , Z n ( σ ) ) [ [ 0 , 1 ] ] × [ [ 0 , 2 ] ] × × [ [ 0 , n 1 ] ] {\displaystyle \sigma \in {\mathcal {S}}_{n}\to (Z_{2}(\sigma ),\cdots ,Z_{n}(\sigma ))\in [\![0,1]\!]\times [\![0,2]\!]\times \dots \times [\![0,n-1]\!]}

est bijective[4]. Pour tout j, Z j {\displaystyle Z_{j}} suit une loi uniforme sur [ [ 0 , j 1 ] ] {\displaystyle [\![0,j-1]\!]} , et ces variables sont indépendantes. On a E ( Z j ) = j 1 2 {\displaystyle \mathbb {E} (Z_{j})={\frac {j-1}{2}}} et V ( Z j ) = j 2 1 12 {\displaystyle \mathbb {V} (Z_{j})={\frac {j^{2}-1}{12}}} . D'où l'on déduit[4],[1] :

  • E ( Y n ) = ( n 1 ) n 4 {\displaystyle \mathbb {E} (Y_{n})={\frac {(n-1)n}{4}}}
  • V ( Y n ) = ( n 1 ) n ( 2 n + 5 ) 72 {\displaystyle \mathbb {V} (Y_{n})={\frac {(n-1)n(2n+5)}{72}}}

La loi de Y n {\displaystyle Y_{n}} n'est pas exprimable simplement, mais on peut utiliser le fait que Y n 1 {\displaystyle Y_{n-1}} a même loi que ( Z 2 , , Z n 1 ) {\displaystyle (Z_{2},\cdots ,Z_{n-1})} pour en déduire que Y n {\displaystyle Y_{n}} a même loi que Y n 1 + Z n {\displaystyle Y_{n-1}+Z_{n}} , ces deux variables étant indépendantes. Il en résulte une définition récursive des lois[5] :

  • P ( Y n = k ) = 1 n j = m a x ( 0 , k n + 1 ) k P ( Y n 1 = j ) {\displaystyle \mathbb {P} (Y_{n}=k)={\frac {1}{n}}\sum _{j={\rm {max}}(0,k-n+1)}^{k}\mathbb {P} (Y_{n-1}=j)}

Enfin, Y n {\displaystyle Y_{n}} étant la somme des variables aléatoires indépendantes Z j {\displaystyle Z_{j}} , sa fonction génératrice G Y n {\displaystyle G_{Y_{n}}} est le produit des fonctions génératrices des Z j {\displaystyle Z_{j}} [4] :

  • G Y n ( z ) = j = 1 n ( 1 z j ) n ! ( 1 z ) n {\displaystyle G_{Y_{n}}(z)={\frac {\prod _{j=1}^{n}(1-z^{j})}{n!(1-z)^{n}}}}

Lorsque n tend vers l'infini, la variable centrée réduite déduite de Y n {\displaystyle Y_{n}} converge en loi vers la loi normale centrée réduite[6].

Longueur des cycles

En attendant le développement de cette section, on pourra se reporter aux pages suivantes

Notes et références

  1. a b et c (en) W. Feller, « The fundamental limit theorems in probability », Bull. Amer. Math. Soc, vol. 51, no 11,‎ , p. 800-832 (lire en ligne)
  2. Donald Knuth, The Art of Computer Programming, vol. 3, (ISBN 0-201-03803-X), p. 34-45. Dans cet ouvrage, la valeur de X est décalée d'une unité car D. Knuth compte le nombre de suites croissantes constituées d'images consécutives de la permutation, séparées par X-1 descentes.
  3. (en) Larry Goldstein, « A Probabilistic Proof of the Lindeberg-Feller Central Limit Theorem », Amer. Math. Monthly, vol. 116, no 1,‎ , p. 45-60
  4. a b et c (en) Donald Knuth, The art of computer programming, t. III, Addison-Wesley, (ISBN 0-201-03803-X), p. 12-16. Les Z j {\displaystyle Z_{j}} forment une variante du code de Lehmer.
  5. Voir aussi la suite A008302 de l'OEIS.
  6. Le plus simple pour le montrer est d'utiliser la condition de Lindeberg du théorème central limite.
  • icône décorative Portail des probabilités et de la statistique
  • icône décorative Portail de l'informatique théorique