Sudah diketahui umum bahwa algoritma 'naif' ini untuk mengocok array dengan menukar setiap item dengan item yang dipilih secara acak tidak berfungsi dengan benar:
for (i=0..n-1)
swap(A[i], A[random(n)]);
Secara khusus, karena pada masing-masing iterasi, salah satu dari pilihan dibuat (dengan probabilitas seragam), ada mungkin 'jalur' melalui perhitungan; karena banyaknya permutasi yang mungkin tidak membagi secara merata ke dalam jumlah jalur , tidak mungkin bagi algoritma ini untuk menghasilkan masing-masing permutasi dengan probabilitas yang sama. (Sebagai gantinya, seseorang harus menggunakan apa yang disebut pengocok Fischer-Yates , yang pada dasarnya mengubah panggilan untuk memilih nomor acak dari [0..n) dengan panggilan untuk memilih nomor acak dari [i..n); itu bisa diperdebatkan untuk pertanyaan saya.)
Yang saya pikirkan adalah, seberapa 'buruk' shuffle naif itu? Lebih khusus lagi, membiarkan menjadi himpunan semua permutasi dan menjadi jumlah lintasan melalui algoritma naif yang menghasilkan permutasi yang dihasilkan , apa perilaku asimptotik dari fungsi tersebut
dan
?
Faktor utama adalah 'menormalkan' nilai-nilai ini: jika shuffle naif adalah 'asimptotik baik' maka
.
Saya menduga (berdasarkan beberapa simulasi komputer yang pernah saya lihat) bahwa nilai aktual dibatasi dari 1, tetapi apakah itu bahkan diketahui jika adalah terbatas, atau jika dibatasi dari 0? Apa yang diketahui tentang perilaku kuantitas ini?