Definieren die Laufpartitionsnummer einer Permutation π , bezeichnet mit R ( π ) , unter Verwendung des folgenden Prozesses. Sei k die maximale ganze Zahl, so dass die Zahlen min ( π ) , … , k in aufsteigender Reihenfolge in π erscheinen . Entfernen Sie sie von π und wiederholen Sie den Vorgang. Die Anzahl der Runden, die benötigt werden, um die gesamte Permutation zu verbrauchen, ist r ( π ) .πr(π)kmin(π),…,kππr(π)
Berechnen wir beispielsweise r ( 62735814 ) . Wir legen zuerst 1 beiseite , um 6273584 zu erhalten . Dann legen wir 234 beiseite , um 6758 zu bekommen . Dann legen wir 5 beiseite , um 678 zu bekommen . Schließlich legen wir 678 beiseite , um die leere Permutation zu erhalten. Dies dauert vier Runden, also ist r ( 62735814 ) = 4 .r(62735814)1627358423467585678678r(62735814)=4
Wie ist diese Darstellung zum Sortieren von 62735814 nützlich ? Nehmen Sie jeden zweiten Lauf, dh 234 , 678 , und verschieben Sie diese Zahlen nach rechts, um 51627384 zu erhalten (bearbeiten: in der Reihenfolge, in der sie in der Permutation erscheinen, dh 627384 ). Jetzt gibt es nur zwei Läufe, nämlich 1234 , 5678 , und wir können die Liste sortieren, indem wir 5678 nach rechts verschieben.62735814234,678516273846273841234,56785678
Lassen Sie mich nun die folgende Vermutung machen: Für eine Permutation π sei Π die Menge aller Permutationen, die von π aus in einem Zug erreichbar sind . Dann ist min α ∈ Π r ( α ) = ⌈ r ( π ) / 2 ⌉ .πΠπminα∈Πr(α)=⌈r(π)/2⌉
Angesichts dieser Vermutung ist es einfach zu zeigen, dass die minimale Anzahl von Zügen, die zum Sortieren einer Permutation π erforderlich sind, ⌈ log 2 r ( π ) ⌉ beträgt , und ich habe diese Formel für alle Permutationen in S n für n ≤ 8 verifiziert .π⌈log2r(π)⌉Snn≤8
Edit: Hier ist eine andere Interpretation der Laufpartitionsnummer , die sie zur Berechnung eines linearen Algorithmus gibt, und ermöglicht es mir , einen Beweis meiner Vermutung zu skizzieren, so dass die Formel Verifizieren ⌈ log 2 r ( π ) ⌉ .⌈log2r(π)⌉
Betrachten Sie noch einmal die Permutation 62735814 . Der Grund, warum der erste Lauf mit 1 endet, ist, dass 2 vor 1 erscheint . In ähnlicher Weise endet der zweite Lauf mit 4, da 5 vor 4 erscheint und so weiter. Daher ist die Laufpartitionsnummer einer Permutation die Nummer von i s, so dass i + 1 vor i erscheint .62735814121454ii+1i
Wir können dies prägnanter formulieren, wenn wir die Umkehrung der Permutation betrachten. Betrachte noch einmal π = 62735814 . Nehmen Sie π - 1 = 72485136 . Diese Permutation hat drei Abfahrten: 7 2 48 5 1 36 (eine Abfahrt ist eine Position kleiner als die vorhergehende). Jede Abfahrt entspricht dem Start einer neuen Abfahrt. Also ist r ( π ) gleich eins plus die Anzahl der Abfahrten in π - 1 .π=62735814π−1=7248513672485136r(π)π−1
Wie sieht die Operation in Bezug auf π - 1 aus ? Sei B die Menge der Zahlen, die wir nach rechts bewegen, und A die Menge der Zahlen, die links bleiben. Wir ersetzen die Zahlen in A durch eine Permutation auf { 1 , … , | A | }, die ihre relative Reihenfolge darstellen, und ersetzen Sie die Zahlen in B durch eine Permutation auf { | A | + 1 , … , | A | + | B | }π−1BAA{1,…,|A|}B{|A|+1,…,|A|+|B|}. Betrachten Sie zum Beispiel den Zug 6273 5 8 1 4 ↦ 51 627384 . In Bezug auf die inversen Permutationen sind es 7 248 5 136 ↦ 2 468 1 357 . So wurden 75 auf 21 und 248136 auf 468357 abgebildet .62735814↦5162738472485136↦246813577521248136468357
Ein Abstieg ... x y ... in π - 1 , wenn erst nach der Operation verloren x ∈ A und y ∈ B . Umgekehrt ist in Bezug auf die π - 1 , die Trennwand in A und B entspricht A -Läuft und B -Läuft; Jedes Mal, wenn ein B- Lauf endet und ein A- Lauf beginnt, gibt es eine Abfahrt. Um einen Abstieg zu "töten", müssen wir von einem A- Run zu einem B wechseln…xy…π−1x∈Ay∈Bπ−1ABABBAAB-Lauf. Wenn wir zwei Abfahrten töten, werden wir in der Mitte von einer B- Abfahrt zu einer A- Abfahrt gewechselt sein und eine Abfahrt erleiden.BA
Dieses Argument kann formalisiert werden, um zu zeigen , wenn α von entsteht π über eine Operation, dann d ( α - 1 ) ≥ ⌊ d ( π - 1 ) / 2 ⌋ , wobei d ( ⋅ ) ist die Anzahl der Abfahrten. Dies ist äquivalent zu r ( α ) ≥ ⌈ r ( π ) / 2 ⌉απd(α−1)≥⌊d(π−1)/2⌋d(⋅)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)⌉r(α)=⌈r(π/2)⌉.