2
asymptotically shuffling ไร้เดียงสาแค่ไหน?
เป็นที่ทราบกันดีว่าอัลกอริทึม 'ไร้เดียงสา' สำหรับการสับเปลี่ยนอาเรย์โดยการสลับแต่ละไอเท็มกับอีกอันที่สุ่มเลือกไม่ทำงานอย่างถูกต้อง: for (i=0..n-1) swap(A[i], A[random(n)]); โดยเฉพาะตั้งแต่ที่แต่ละnnnซ้ำหนึ่งของnnnเลือกที่จะทำ (กับความน่าจะเป็นชุด) มีn nnnn^nที่เป็นไปได้ 'เส้นทาง' ผ่านการคำนวณ; เพราะจำนวนการเรียงสับเปลี่ยนที่เป็นไปได้n ! n!n!ไม่แบ่งเท่า ๆ กันตามจำนวนของเส้นทางn nnnn^nมันเป็นไปไม่ได้ที่อัลกอริธึมนี้จะสร้างnแต่ละอัน! n!n!การเรียงสับเปลี่ยนที่มีความน่าจะเป็นเท่ากัน (แต่อย่างใดอย่างหนึ่งควรใช้การสลับแบบFischer-Yatesซึ่งจะเปลี่ยนการโทรเพื่อเลือกหมายเลขสุ่มจาก [0..n) ด้วยการโทรเพื่อเลือกหมายเลขแบบสุ่มจาก [i..n); เป็นสิ่งที่สงสัยกับคำถามของฉัน) สิ่งที่ฉันสงสัยคือการสับเปลี่ยนไร้เดียงสาจะเป็นไปได้อย่างไร โดยเฉพาะอย่างยิ่งการให้P ( n )P(n)P(n)เป็นชุดของพีชคณิตทั้งหมดและC ( ρ )C(ρ)C(\rho)เป็นจำนวนเส้นทางผ่านขั้นตอนวิธีการที่ไร้เดียงสาที่ผลิตที่เกิดการเปลี่ยนแปลงρ ∈ P ( n )ρ∈P(n)\rho\in P(n)สิ่งที่เป็นพฤติกรรมเชิงของการทำงาน M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)\qquad \displaystyle M(n) = \frac{n!}{n^n}\max_{\rho\in P(n)} C(\rho) และ m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ)\qquad \displaystyle m(n) …