Điều nổi tiếng là thuật toán 'ngây thơ' này để xáo trộn một mảng bằng cách hoán đổi từng mục với một mục được chọn ngẫu nhiên khác không hoạt động chính xác:
for (i=0..n-1)
swap(A[i], A[random(n)]);
Cụ thể, vì tại mỗi lần lặp , một trong lựa chọn được thực hiện (với xác suất đồng nhất), có 'đường dẫn' có thể thông qua tính toán; bởi vì số lượng hoán vị có thể không chia đều cho số lượng đường dẫn , thuật toán này không thể tạo ra mỗi đường dẫn hoán vị với xác suất bằng nhau. (Thay vào đó, người ta nên sử dụng cái gọi là xáo trộn Fischer-Yates , về cơ bản thay đổi cuộc gọi để chọn một số ngẫu nhiên từ [0..n) với một cuộc gọi để chọn một số ngẫu nhiên từ [i..n); Tuy nhiên, đó là câu hỏi của tôi.)
Điều tôi băn khoăn là, làm thế nào 'xấu' có thể xáo trộn ngây thơ? Cụ thể hơn, cho phép là tập hợp của tất cả các hoán vị và là số các đường dẫn thông qua các thuật toán ngây thơ mà tạo ra kết quả hoán vị , hành vi tiệm cận các chức năng là gì
và
?
Yếu tố hàng đầu là 'bình thường hóa' các giá trị này: nếu việc xáo trộn ngây thơ là 'tốt không có triệu chứng' thì
.
Tôi nghi ngờ (dựa trên một số mô phỏng máy tính mà tôi đã thấy) rằng các giá trị thực tế bị giới hạn từ 1, nhưng thậm chí còn được biết nếu là hữu hạn hay nếu bị chặn khỏi 0? Những gì đã biết về hành vi của những đại lượng này?lim m ( n )