É sabido que esse algoritmo 'ingênuo' para embaralhar uma matriz trocando cada item por outro escolhido aleatoriamente não funciona corretamente:
for (i=0..n-1)
swap(A[i], A[random(n)]);
Especificamente, como em cada uma das iterações, uma das escolhas é feita (com probabilidade uniforme), existem possíveis 'caminhos' através da computação; porque o número de permutações possíveisnão se divide uniformemente no número de caminhos , é impossível para esse algoritmo produzir cada um dospermutações com igual probabilidade. (Em vez disso, deve-se usar o chamado embaralhamento de Fischer-Yates , que essencialmente altera a chamada para escolher um número aleatório entre [0..n) com uma chamada para escolher um número aleatório entre [i..n); isso é discutível para minha pergunta.)n n n n ! n n n !
O que me pergunto é: quão "ruim" pode ser o ingênuo baralhar? Mais especificamente, deixar ser o conjunto de todas as permutações e ser o número de caminhos através do algoritmo ingênuo que produz a permutação resultante , qual é o comportamento assintótico do funçõesC ( ρ ) ρ ∈ P ( n )
e
?
O fator principal é 'normalizar' esses valores: se o embaralhamento ingênuo for 'assintoticamente bom', então
.
Eu suspeito (com base em algumas simulações de computador que eu vi) que os valores reais são limitados a 1, mas é sabido se é finito ou se é delimitado por 0? O que se sabe sobre o comportamento dessas quantidades?