Tentukan nomor run-partisi dari permutasi , dilambangkan r ( π ) , menggunakan proses berikut. Biarkan k menjadi bilangan bulat maksimal sehingga angka min ( π ) , ... , k muncul dalam urutan yang meningkat dalam π . Hapus dari π , dan ulangi prosesnya. Jumlah putaran yang dibutuhkan untuk mengkonsumsi seluruh permutasi adalah r ( π ) .πr(π)kmin(π),…,kππr(π)
Sebagai contoh, mari kita hitung . Kami pertama-tama menyisihkan 1 , untuk mendapatkan 6273584 . Lalu kami menyisihkan 234 , untuk mendapatkan 6758 . Lalu kami menyisihkan 5 , untuk mendapatkan 678 . Akhirnya, kami menyisihkan 678 untuk mendapatkan permutasi kosong. Ini membutuhkan empat putaran, jadi r ( 62735814 ) = 4 .r(62735814)1627358423467585678678r(62735814)=4
Bagaimana representasi ini berguna untuk menyortir ? Ambil setiap menjalankan kedua, yaitu 234 , 678 , dan pindahkan angka-angka ini ke kanan untuk mendapatkan 51627384 (edit: dalam urutan mereka muncul dalam permutasi, yaitu 627384 ). Sekarang hanya ada dua run, yaitu 1234 , 5678 , dan kita dapat mengurutkan daftar dengan memindahkan 5678 ke kanan.62735814234,678516273846273841234,56785678
Sekarang izinkan saya membuat dugaan berikut: Untuk permutasi , biarkan Π adalah himpunan semua permutasi yang dapat dijangkau dari π dalam satu gerakan. Kemudian min α ∈ Π r ( α ) = ⌈ r ( π ) / 2 ⌉ .πΠπminα∈Πr(α)=⌈r(π)/2⌉
Dengan dugaan ini, mudah untuk menunjukkan bahwa jumlah minimal gerakan yang diperlukan untuk mengurutkan permutasi adalah ⌈ log 2 r ( π ) ⌉ , dan saya telah memverifikasi rumus ini untuk semua permutasi dalam S n untuk n ≤ 8 .π⌈log2r(π)⌉Snn≤8
Sunting: Berikut adalah interpretasi berbeda dari nomor run-partisi yang memberikan algoritma waktu linier untuk menghitungnya, dan memungkinkan saya untuk membuat sketsa bukti dugaan saya, sehingga memverifikasi rumus .⌈log2r(π)⌉
Pertimbangkan permutasi lagi. Alasan bahwa proses pertama berakhir pada 1 adalah bahwa 2 muncul sebelum 1 . Demikian pula, putaran kedua berakhir pada 4 karena 5 muncul sebelum 4 , dan seterusnya. Oleh karena itu jumlah run-partisi dari permutasi adalah jumlah i s sehingga saya + 1 muncul sebelum i .62735814121454ii+1i
Kita dapat menyatakan ini dengan lebih ringkas jika kita melihat kebalikan dari permutasi. Pertimbangkan lagi . Ambil π - 1 = 72485136 . Permutasi ini memiliki tiga keturunan: 7 2 48 5 1 36 (keturunan adalah posisi yang lebih kecil dari yang sebelumnya). Masing-masing keturunan sesuai dengan awal menjalankan baru. Jadi r ( π ) sama dengan satu ditambah jumlah keturunan pada π - 1 .π=62735814π−1=7248513672485136r(π)π−1
Seperti apa operasi itu dalam hal ? biarkan B menjadi himpunan angka yang kita pindah ke kanan, dan A menjadi himpunan angka yang tetap di kiri. Kami mengganti angka dalam A dengan permutasi pada { 1 , … , | A | } mewakili urutan relatif mereka, dan ganti angka dalam B dengan permutasi pada { | A | + 1 , ... , | A | + | B | }π−1BAA{1,…,|A|}B{|A|+1,…,|A|+|B|}. Misalnya, perhatikan langkah . Dalam hal permutasi terbalik, itu adalah 7 248 5 136 ↦ 2 468 1 357 . Jadi 75 dipetakan ke 21 dan 248136 dipetakan ke 468357 .62735814↦5162738472485136↦246813577521248136468357
Sebuah keturunan di π - 1 hilang setelah operasi hanya jika x ∈ A dan y ∈ B . Sebaliknya, dalam hal π - 1 , partisi menjadi A dan B berhubungan dengan A -runs dan B -runs; setiap kali B- run berakhir dan A- run dimulai, ada keturunan. Untuk "membunuh" keturunan, kita harus beralih dari A- run ke B…xy…π−1x∈Ay∈Bπ−1ABABBAAB-Lari. Jika kita membunuh dua keturunan, kita akan beralih di tengah dari run ke A- run, menimbulkan keturunan.BA
Argumen ini dapat diformalkan untuk menunjukkan bahwa jika muncul dari π melalui operasi, maka d ( α - 1 ) ≥ ⌊ d ( π - 1 ) / 2 ⌋ , di mana d ( ⋅ ) adalah jumlah keturunan. Ini setara dengan r ( α ) ≥ ⌈ r ( π ) / 2 ⌉απd(α−1)≥⌊d(π−1)/2⌋d(⋅)r(α)≥⌈r(π)/2⌉, dengan demikian membuktikan satu arah dugaan saya. Arah lainnya lebih mudah, dan sudah diuraikan di atas: kita cukup menjalankan setiap detik dan mendorongnya ke kanan untuk mendapatkan permutasi memuaskan r ( α ) = ⌈ r ( π / 2 ) ⌉ .αr(α)=⌈r(π/2)⌉