Es bien sabido que este algoritmo 'ingenuo' para barajar una matriz intercambiando cada elemento con otro elegido al azar no funciona correctamente:
for (i=0..n-1)
swap(A[i], A[random(n)]);
Específicamente, dado que en cada una de las iteraciones, se realiza una de las elecciones (con probabilidad uniforme), hay posibles 'caminos' a través del cálculo; porque el número de posibles permutacionesno se divide equitativamente en el número de rutas , ¡es imposible que este algoritmo produzca cada una de laspermutaciones con igual probabilidad. (En cambio, uno debería usar el llamado shuffle de Fischer-Yates , que esencialmente cambia la llamada para elegir un número aleatorio de [0..n) con una llamada para elegir un número aleatorio de [i..n); eso es discutible para mi pregunta, sin embargo).n n ! n n n !
Lo que me pregunto es, ¿qué tan 'malo' puede ser el shuffle ingenuo? Más específicamente, dejando que sea el conjunto de todas las permutaciones y sea el número de caminos a través del algoritmo ingenuo que produce la permutación resultante , ¿cuál es el comportamiento asintótico de la funcionesC ( ρ ) ρ ∈ P ( n )
y
?
El factor principal es 'normalizar' estos valores: si la combinación ingenua es 'asintóticamente buena', entonces
.
Sospecho (en base a algunas simulaciones por computadora que he visto) que los valores reales están delimitados por 1, pero incluso se sabe si es finito, o si está delimitado por 0? ¿Qué se sabe sobre el comportamiento de estas cantidades?