Xác định số phân vùng chạy của hoán vị , ký hiệu là r ( π ) , sử dụng quy trình sau. Gọi k là số nguyên cực đại sao cho các số min (πr(π)k xuất hiện trong thứ tự tăng dần trong π . Loại bỏ chúng khỏi π và lặp lại quá trình. Số vòng cần để tiêu thụ toàn bộ hoán vị là r ( π ) .min(π),…,kππr(π)
Ví dụ: hãy tính . Trước tiên, chúng tôi dành 1 , để có được 6273584 . Sau đó, chúng tôi dành ra 234 , để có được 6758 . Sau đó, chúng tôi dành 5 , để có được 678 . Cuối cùng, chúng tôi dành 678 để có được hoán vị trống. Điều này mất bốn vòng, vì vậy r (r(62735814)1627358423467585678678 .r(62735814)=4
Cách biểu diễn này hữu ích cho việc sắp xếp ? Thực hiện mỗi lần chạy thứ hai, tức là 234 , 678 và di chuyển các số này sang bên phải để nhận 51627384 (chỉnh sửa: theo thứ tự chúng xuất hiện trong hoán vị, tức là 627384 ). Bây giờ chỉ có hai lần chạy, cụ thể là 1234 , 5678 và chúng ta có thể sắp xếp danh sách bằng cách di chuyển 5678 sang phải.62735814234,678516273846273841234,56785678
Bây giờ hãy để tôi làm cho giả thuyết sau: Đối với một hoán vị , chúng ta hãy Π là tập hợp của tất cả các hoán vị có thể truy cập từ π trong vòng một di chuyển. Rồi phút α ∈ pi r ( α ) = ⌈ r ( π ) / 2 ⌉ .πΠπminα∈Πr(α)=⌈r(π)/2⌉
Với phỏng đoán này, thật dễ dàng để chỉ ra rằng số lượng di chuyển tối thiểu cần thiết để sắp xếp một hoán vị là ⌈ logπ , và tôi đã xác minh công thức này cho tất cả các hoán vị trong S n cho⌈log2r(π)⌉Sn .n≤8
Chỉnh sửa: Dưới đây là một cách hiểu khác nhau về số phân vùng chạy đưa ra thuật toán thời gian tuyến tính để tính toán nó và cho phép tôi phác thảo một bằng chứng về phỏng đoán của mình, do đó xác minh công thức .⌈log2r(π)⌉
Hãy xem xét hoán vị một lần nữa. Lý do mà lần chạy đầu tiên kết thúc bằng 1 là 2 xuất hiện trước 1 . Tương tự, lần chạy thứ hai kết thúc sau 4 vì 5 xuất hiện trước 4 , v.v. Do đó, số phân vùng chạy của một hoán vị là số i s sao cho i + 1 xuất hiện trước i .62735814121454ii+1i
Chúng ta có thể nói điều này ngắn gọn hơn nếu chúng ta nhìn vào nghịch đảo của hoán vị. Xem xét lại . Lấy π - 1 = 72485136 . Hoán vị này có ba hậu duệ : 7 2 48 5 1 36 (một hậu duệ là một vị trí nhỏ hơn vị trí trước). Mỗi phần tử tương ứng với sự bắt đầu của một lần chạy mới. Vậy r ( π ) bằng một cộng với số lượng con cháu trong π - 1 .π=62735814π−1=7248513672485136r(π)π−1
Các hoạt động trông như thế nào trong điều khoản của ? Đặt B là tập hợp các số mà chúng ta di chuyển sang phải và A là tập hợp các số ở bên trái. Chúng tôi thay thế các số trong A bằng hoán vị trên { 1 , Mạnh , | Một | } biểu diễn thứ tự tương đối của chúng và thay thế các số trong B bằng hoán vị trên { | Một | + 1 , ... , | Một | + | B | }π−1BAA{1,…,|A|}B{|A|+1,…,|A|+|B|} . Ví dụ, hãy xem xét di chuyển . Xét về hoán vị nghịch đảo, đó là 7 248 562735814↦51627384 . Vì vậy, 75 đã được ánh xạ đến 21 và 248136 được ánh xạ đến 468357 .72485136↦246813577521248136468357
Một hậu duệ trong π - 1 bị mất sau khi hoạt động chỉ nếu x ∈ A và y ∈ B . Ngược lại, trong điều kiện của π - 1 , phân vùng vào một và B tương ứng với Một -runs và B -runs; mỗi khi B -run kết thúc và A -run bắt đầu, sẽ có một hậu duệ. Để "giết" một hậu duệ, chúng ta phải chuyển từ A- tràn sang B…xy…π−1x∈Ay∈Bπ−1ABABBAAB tràn. Nếu chúng ta giết hai hậu duệ, chúng ta sẽ chuyển từ giữa B -run sang -run, phát sinh một hậu duệ.A
Lập luận này có thể được chính thức để chứng minh rằng nếu phát sinh từ π qua một ca mổ, sau đó d ( α - 1 ) ≥ ⌊ d ( π - 1 ) / 2 ⌋ , nơi d ( ⋅ ) là số descents. Đây là tương đương với r ( α ) ≥ ⌈ r ( π ) / 2 ⌉απd(α−1)≥⌊d(π−1)/2⌋d(⋅)r(α)≥⌈r(π)/2⌉, do đó chứng minh một hướng phỏng đoán của tôi. Theo một hướng khác là dễ dàng hơn, và đã được nêu ở trên: chúng tôi chỉ đơn giản là tận dụng mọi chạy thứ hai và đẩy những chạy sang bên phải để có được một hoán vị thỏa mãn r ( α ) = ⌈ r ( π / 2 ) ⌉ .αr(α)=⌈r(π/2)⌉