Il est bien connu que cet algorithme «naïf» pour mélanger un tableau en échangeant chaque élément avec un autre choisi au hasard ne fonctionne pas correctement:
for (i=0..n-1)
swap(A[i], A[random(n)]);
Plus précisément, puisque à chacune des nn itérations, l’une desnn choix est fait (avec une probabilité uniforme), il y a n nnn chemins possibles dans le calcul; parce que le nombre de permutations possibles n ! n!ne divise pas uniformément le nombre de chemins n nnn , il est impossible pour cet algorithme de produire chacun des n ! n!permutations avec probabilité égale. (Au lieu de cela, on devrait utiliser le soi-disant shuffle de Fischer-Yates , qui change essentiellement l'appel pour choisir un nombre aléatoire de [0..n) avec un appel pour choisir un numéro aléatoire de [i..n); c'est sans objet pour ma question, cependant.)
Ce que je me demande, c'est à quel point le remaniement naïf peut être «mauvais»? Plus précisément, si P ( n )P(n) est l'ensemble de toutes les permutations et C ( ρ )C(ρ) le nombre de chemins de l'algorithme naïf qui produisent la permutation résultante ρ ∈ P ( n )ρ∈P(n) , quel est le comportement asymptotique des fonctions
M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)
et
m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ) ?
Le facteur principal est de «normaliser» ces valeurs: si le shuffle naïf est «asymptotiquement bon», alors
limn→∞M(n)=limn→∞m(n)=1limn→∞M(n)=limn→∞m(n)=1 .
Je soupçonne (d'après certaines simulations informatiques que j'ai vues) que les valeurs réelles sont délimitées par 1, mais sait-on même si est fini ou si est délimité 0? Que sait-on du comportement de ces quantités?limM(n)limM(n)limm(n)limm(n)
Réponses:
Nous montrerons par induction que la permutation ρ n = ( 2 , 3 , 4 , … , n , 1 ) est un exemple avec C ( ρ n ) = 2 n - 1 . Si tel est le pire des cas, comme pour les quelques premiers n (voir les notes de séquence OEIS A192053 ), puis m ( n ) ≈ ( 2 / e ) nρn=(2,3,4,…,n,1) C(ρn)=2n−1 n m(n)≈(2/e)n . Ainsi, le minimum normalisé, comme le maximum normalisé, est «exponentiellement mauvais».
Le cas de base est facile. Pour l'étape d'induction, nous avons besoin d'un lemme:
Lemme: quelle que soit la trajectoire de ( 2 , 3 , 4 , … , n , 1 ) à ( 1 , 2 , 3 , … , n ) , le premier mouvement remplace les positions 1 et n , ou le dernier mouvement les positions 1 et n .(2,3,4,…,n,1) (1,2,3,…,n) 1 n 1 n
Croquis de preuve: Supposons que non. Considérez le premier mouvement qui implique la n ième position. Supposons que c’est le i ème mouvement, i ≠ 1 et i ≠ n . Ce mouvement doit placer l'élément 1 à la i ème place. Considérons maintenant le prochain mouvement qui touche l’article 1 . Supposons que ce mouvement est le j « e mouvement. Ce mouvement doit permuter i et j , déplaçant l'élément 1 à la j 'ème place, avec i < j . Un argument similaire dit que le point 1n i i≠1 i≠n 1 i 1 j i j 1 j i<j 1 ne peut ensuite être déplacé vers la droite. Mais le point 1 doit finir en premier lieu, une contradiction. ◻1 □
À présent, si le premier coup échange les positions 1 et n , les coups restants doivent prendre la permutation ( 1 , 3 , 4 , 5 , … , n , 2 ) à ( 1 , 2 , 3 , 4 , … , n ) . Si les mouvements restants ne touchent pas la première position, il s'agit de la permutation ρ n - 1 en positions 2 … n , et nous savons par induction qu'il y a1 n (1,3,4,5,…,n,2) (1,2,3,4,…,n) ρn−1 2…n C ( ρ n - 1 ) = 2 n - 2 chemins qui le font. Un argument similaire à la preuve du lemme dit qu'il n'y a pas de chemin qui touche la première position, car l'élément 1 doit alors se retrouver dans une position incorrecte.C(ρn−1)=2n−2 1
Si le dernier coup intervertit les positions 1 et n , les n - 1 premiers coups doivent porter la permutation ( 2 , 3 , 4 , … , n , 1 ) à la permutation ( n , 2 , 3 , 4 , … , n - 1 , 1 ) . Encore une fois, si ces mouvements ne touchent pas la dernière position, il s’agit de la permutation ρ n - 1 et, par induction,1 n n−1 (2,3,4,…,n,1) (n,2,3,4,…,n−1,1) ρn−1 C ( ρ n - 1 ) = 2 n - 2 chemins qui le font. Et encore une fois, si l’un des n - 1 premiersmouvements touche ici la dernière position, l’article 1 ne peut jamais se retrouver au bon endroit.C(ρn−1)=2n−2 n−1 1
Ainsi, C ( ρ n ) = 2 C ( ρ n - 1 ) = 2 n - 1 .C(ρn)=2C(ρn−1)=2n−1
la source
After some digging around thanks to mhum's pointer to OEIS, I've finally found an excellent analysis and a nice (relatively) elementary argument (due, as far as I can tell, to Goldstein and Moews [1]) that M(n)M(n) grows superexponentially fast in nn :
Toute involution ι de { 1 … n } correspond à une exécution de l'algorithme de réarrangement «naïf» qui produit la permutation d'identité comme résultat, car l'algorithme échangera k avec ι ( k ) , puis échangera ι ( k ) avec k , laissant les deux inchangés. Cela signifie que le nombre d'exécutions de l'algorithme donnant la permutation d'identité est au moins égal au nombre d'involutions Q ( n ) (en fait, un peu de réflexion montre que la correspondance est égale à 1-1 et qu'il s'agit donc exactement de Q ( nι {1…n} k ι(k) ι(k) k Q(n) ) ), et donc le maximum dans M ( n ) est borné par le bas par Q ( n ) .Q(n) M(n) Q(n)
Q ( n ) porte apparemment plusieurs noms, dont lesnuméros de téléphone: voirhttp://oeis.org/A000085ethttp://en.wikipedia.org/wiki/Telephone_number_%28mathematics%29. Les asymptotiques sont bien connus, et il se révèle que Q ( n ) ≈ C ( nQ(n) e )n/2e√nQ(n)≈C(ne)n/2en√ ; from the recurrence relation Q(n)=Q(n−1)+(n−1)Q(n−2)Q(n)=Q(n−1)+(n−1)Q(n−2) it can be inductively shown that the ratio R(n)=Q(n)Q(n−1)R(n)=Q(n)Q(n−1) satisfies √n<R(n)<√n+1n−−√<R(n)<n+1−−−−−√ and from there basic analysis gets the leading nn/2nn/2 term in the asymptotics, though the other terms require a more careful effort. Since the 'scale factor' n!nnn!nn in the definition of M(n)M(n) is only about C√ne−nCn−−√e−n , the leading term of Q(n)Q(n) dominates and yields (asymptotically) M(n)≥Cn(n+1)/2e−3n/2+√nM(n)≥Cn(n+1)/2e−3n/2+n√ .
Goldstein and Moews in fact go on to show in [1] that the identity permutation is the most likely for large nn , so the ≥≥ is in fact a ≈≈ and the behavior of M(n)M(n) is fully settled. This still leaves the question of the behavior of m(n)m(n) open; I wouldn't be too surprised if that also yielded to the analysis in their paper, but I haven't had opportunity to read it closely enough yet to really get a grip on their methods, only enough to grok the basic result.
[1] Goldstein, D. and Moews, D.: "The identity is the most likely exchange shuffle for large n", http://arxiv.org/abs/math/0010066
la source