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?
fuente
Respuestas:
por inducción que la permutación es un ejemplo con . Si este es el peor de los casos, como lo es para los primeros (vea las notas para la secuencia OEIS A192053 ), entonces . Entonces, el mínimo normalizado, como el máximo normalizado, es 'exponencialmente malo'.ρn=(2,3,4,…,n,1) n m ( n ) ≈ ( 2 / e ) nC(ρn)=2n−1 n m(n)≈(2/e)n
El caso base es fácil. Para el paso de inducción, necesitamos un lema:
Lema: En cualquier ruta de a , el primer movimiento intercambia las posiciones y , o el último movimiento intercambia las posiciones y .( 1 , 2 , 3 , … , n ) 1 n 1 n(2,3,4,…,n,1) (1,2,3,…,n) 1 n 1 n
Bosquejo de prueba: supongamos que no. Considere el primer movimiento que implica la -ésima posición. Asumo que es la -ésima movimiento, y . Este movimiento debe colocar el elemento en el lugar . Ahora considere el siguiente movimiento que toca el elemento . Suponga que este movimiento es el 'ésimo movimiento. Este movimiento debe intercambiar y , moviendo el elemento al lugar , con . Un argumento similar dice que el elemento solo se puede mover posteriormente a la derecha. Pero el artículoi i ≠ 1 i ≠ n 1 i 1 j i j 1 j i < j 1 1 ◻n i i≠1 i≠n 1 i 1 j i j 1 j i<j 1 1 necesita terminar en primer lugar, una contradicción. □
Ahora bien, si los primeros swaps mover las posiciones y , los restantes mueve deben tomar la permutación a . Si los movimientos restantes no tocan la primera posición, entonces esta es la permutación en las posiciones , y sabemos por inducción que hay caminos que hacen esto. Un argumento similar a la prueba del Lema dice que no hay camino que toque la primera posición, ya que el elemento debe terminar en la posición incorrecta.n ( 1 , 3 , 4 , 5 , … , n , 2 ) ( 1 , 2 , 3 , 4 , … , n ) ρ n - 1 2 … n C ( ρ n - 1 ) = 2 n - 2 11 n (1,3,4,5,…,n,2) (1,2,3,4,…,n) ρn−1 2…n C(ρn−1)=2n−2 1
Si las permutas último movimiento las posiciones y , el primer se mueve deben tomar la permutación a la permutación . Nuevamente, si estos movimientos no tocan la última posición, entonces esta es la permutación , y por inducción hay caminos que lo hagas Y nuevamente, si uno de los primeros movimientos aquí toca la última posición, el elemento nunca puede terminar en el lugar correcto.n n - 1 ( 2 , 3 , 4 , … , n , 1 ) ( n , 2 , 3 , 4 , … , n - 1 , 1 ) ρ n - 1 C ( ρ n - 1 ) = 2 n - 2 n - 1 11 n n−1 (2,3,4,…,n,1) (n,2,3,4,…,n−1,1) ρn−1 C(ρn−1)=2n−2 n−1 1
Por lo tanto, .C(ρn)=2C(ρn−1)=2n−1
fuente
Después de investigar un poco gracias al puntero de mhum a OEIS, finalmente encontré un excelente análisis y un buen argumento (relativamente) elemental (debido, por lo que puedo decir, a Goldstein y Moews [1]) que crece superexponencialmente rápido en :M(n) n
Cualquier involución de corresponde a una ejecución del algoritmo de barajado 'ingenuo' que produce la permutación de identidad como resultado, ya que el algoritmo intercambiará con y posteriormente intercambiará con , dejando ambos sin cambios. Esto significa que el número de ejecuciones del algoritmo que producen la permutación de identidad es al menos el número de involuciones (de hecho, un poco de pensamiento muestra que la correspondencia es 1-1 y, por lo tanto, es exactamente ) , y entonces el máximo en está limitado desde abajo por .{ 1 … n } k ι ( k ) ι ( k ) k Q ( n ) Q ( n ) M ( n ) Q ( n )ι {1…n} k ι(k) ι(k) k Q(n) Q(n) M(n) Q(n)
De hecho, Goldstein y Moews continúan mostrando en [1] que la permutación de identidad es la más probable para grande , por lo que es de hecho a y el comportamiento de está completamente establecido. Esto todavía deja abierta la cuestión del comportamiento de ; No me sorprendería demasiado si eso también se rindiera al análisis en su artículo, pero aún no he tenido la oportunidad de leerlo lo suficientemente de cerca para comprender realmente sus métodos, solo lo suficiente para asimilar el resultado básico.n ≥ ≈ M(n) m(n)
[1] Goldstein, D. y Moews, D .: "La identidad es el cambio aleatorio más probable para la n grande", http://arxiv.org/abs/math/0010066
fuente