Визначте номер перегону для запуску перестановки π , позначений r ( π ) , використовуючи наступний процес. Нехай k - максимальне ціле число, таке, що числа min ( π ) , … , k з'являються у порядку збільшення у π . Видаліть їх з π та повторіть процес. Кількість раундів, необхідних для споживання всієї перестановки, становить r ( π ) .πr(π)kmin(π),…,kππr(π)
Наприклад, давайте обчислимо r ( 62735814 ) . Ми спочатку відклали 1 , щоб отримати 6273584 . Потім відкладаємо 234 , щоб отримати 6758 . Потім відкладаємо 5 , щоб отримати 678 . Нарешті, ми відклали 678, щоб отримати порожню перестановку. Це займає чотири раунди, тому r ( 62735814 ) = 4r(62735814)1627358423467585678678r(62735814)=4 .
Чим це представлення корисне для сортування 62735814 ? Виконайте кожен другий запуск, тобто 234 , 678 , і перемістіть ці числа вправо, щоб отримати 51627384 (відредагуйте: у порядку, який вони відображаються в перестановці, тобто 627384 ). Зараз є лише два запуски, а саме 1234 , 5678 , і ми можемо сортувати список, перемістивши 567862735814234,678516273846273841234,56785678 праворуч.
Тепер дозвольте зробити наступну гіпотезу: Для перестановки π дозвольте Π сукупність усіх перестановок, доступних від π за один хід. Тоді min α ∈ Π r ( α ) = ⌈ r ( π ) / 2 ⌉ .πΠπminα∈Πr(α)=⌈r(π)/2⌉
Враховуючи цю гіпотезу, легко показати, що мінімальна кількість рухів, необхідних для сортування перестановки π, є ⌈ log 2 r ( π ) ⌉ , і я перевірив цю формулу для всіх перестановок у S n для n ≤ 8π⌈log2r(π)⌉Snn≤8 .
Edit: Ось інша інтерпретація числа вступного розділу , який дає лінійний алгоритм для обчислення часу, і дозволяє мені начерк докази моєї гіпотези, таким чином перевіряючи формулу ⌈ вхід 2 г ( л ) ⌉ .⌈log2r(π)⌉
Розглянемо перестановку 62735814 ще раз. Причина того, що перший запуск закінчується в 1, полягає в тому, що 2 з'являється перед 1 . Аналогічно, другий запуск закінчується в 4, оскільки 5 з'являється перед 4 і так далі. Отже, номер перемикання запуску перестановки є числом i s таким, що i + 1 з'являється перед i .62735814121454ii+1i
Про це ми можемо констатувати більш лаконічно, якщо подивитися на зворотну перестановку. Розглянемо ще раз π = 62735814 . Візьміть π - 1 = 72485136 . Ця перестановка має три спуски: 7 2 48 5 1 36 (спуск - це положення, менше попереднього). Кожен із спусків відповідає початку нового пробігу. Тож r ( π ) дорівнює одиниці плюс кількість спусків у π - 1 .π=62735814π−1=7248513672485136r(π)π−1
Як виглядає операція з точки зору π - 1 ? нехай B - це множина чисел, яку ми рухаємо праворуч, а A - множина чисел, що залишаються зліва. Заміняємо числа в A перестановкою на { 1 , … , | А | }, що представляє їх відносний порядок, і замініть числа в B перестановкою на { | А | + 1 , … , | А | + | Б | }π−1BAA{1,…,|A|}B{|A|+1,…,|A|+|B|}. Наприклад, розглянемо хід 6273 5 8 1 4 ↦ 51 62738462735814↦51627384. In terms of the inverse permutations, it's 72485136↦2468135772485136↦24681357. So 7575 was mapped to 2121 and 248136248136 was mapped to 468357468357.
A descent …xy……xy… in π−1π−1 is lost after the operation only if x∈Ax∈A and y∈By∈B. Conversely, in terms of π−1π−1, the partition into AA and BB corresponds to AA-runs and BB-runs; every time a BB-run ends and an AA-run begins, there is a descent. In order to "kill" a descent, we have to switch from an AA-run to a BB-run. If we kill two descents, we will have switched in the middle from a BB-run to an AA-run, incurring a descent.
This argument can be formalized to show that if αα arises from ππ via an operation, then d(α−1)≥⌊d(π−1)/2⌋d(α−1)≥⌊d(π−1)/2⌋, where d(⋅) is the number of descents. This is equivalent to r(α)≥⌈r(π)/2⌉, thus proving one direction of my conjecture. The other direction is easier, and was already outlined above: we simply take every second run and push these runs to the right to get a permutation α satisfying r(α)=⌈r(π/2)⌉.