Definire il numero della partizione di marcia di una permutazione , indicata con r ( π ) , utilizzando il seguente processo. Sia k il numero intero massimo tale che i numeri min ( π ) , ... , k compaiano in ordine crescente in ππr(π)kmin(π),…,kπ . Rimuovili da e ripeti il processo. Il numero di round necessari per consumare l'intera permutazione è r ( π ) .πr(π)
Ad esempio, calcoliamo . Prima mettiamo da parte 1 , per ottenere 6273584 . Quindi mettiamo da parte 234 , per ottenere 6758 . Quindi mettiamo da parte 5 , per ottenere 678 . Infine, abbiamo messo da parte 678 per ottenere la permutazione vuota. Questo richiede quattro round, quindi r ( 62735814 ) = 4 .r(62735814)1627358423467585678678r(62735814)=4
In che modo questa rappresentazione è utile per l'ordinamento ? Prendi ogni secondo, cioè 234 , 678 , e sposta questi numeri a destra per ottenere 51627384 (modifica: nell'ordine in cui compaiono nella permutazione, cioè 62738462735814234,67851627384627384 ). Ora ci sono solo due esecuzioni, ovvero , e possiamo ordinare l'elenco spostando 5678 a destra.1234,56785678
Ora lasciami fare la seguente congettura: Per una permutazione , lascia che Π sia l'insieme di tutte le permutazioni che sono raggiungibili da π in una mossa. Quindi min α ∈ Π r ( α ) = ⌈ r ( π ) / 2 ⌉ .πΠπminα∈Πr(α)=⌈r(π)/2⌉
Data questa congettura, è facile dimostrare che il numero minimo di mosse necessarie per ordinare una permutazione è ⌈ log 2 r ( π ) ⌉ e ho verificato questa formula per tutte le permutazioni inπ⌈log2r(π)⌉ per n ≤ 8 .Snn≤8
Modifica: Ecco una diversa interpretazione del numero di partizione di corsa che fornisce un algoritmo di tempo lineare per il suo calcolo e mi permette di tracciare una prova della mia congettura, verificando così la formula .⌈log2r(π)⌉
Considera di nuovo la permutazione . Il motivo per cui la prima esecuzione termina con 1 è che 2 appare prima di 1 . Allo stesso modo, la seconda corsa termina in 4 poiché 5 appare prima di 4 e così via. Pertanto il numero della partizione di marcia di una permutazione è il numero di i62735814121454i tale che appare prima di i .i+1i
Possiamo affermarlo in modo più succinto se osserviamo l'inverso della permutazione. Considera di nuovo . Prendi π - 1 = 72485136 . Questa permutazione ha tre discese: 7 2 48 5 1 36 (una discesa è una posizione più piccola della precedente). Ciascuna delle discese corrisponde all'inizio di una nuova corsa. Quindi r ( π ) è uguale a uno più il numero di discese in π - 1 .π=62735814π−1=7248513672485136r(π)π−1
Come appare l'operazione in termini di ? lascia che B sia l'insieme di numeri che spostiamo a destra e A che sia l'insieme di numeri che rimangono a sinistra. Sostituiamo i numeri in A con una permutazione su { 1 , … , | A | } che rappresenta il loro ordine relativo e sostituisce i numeri in B con una permutazione su { | A | + 1 , … , | π−1BAA{1,…,|A|}B{|A|+1,…,|A|+|B|}. Ad esempio, considera la mossa . In termini di permutazioni inverse, è 7 248 5 136 ↦ 2 468 1 357 . Quindi 75 è stato mappato su 21 e 248136 è stato mappato su 468357 .62735814↦5162738472485136↦246813577521248136468357
Una discesa in π - 1 è perso dopo l'operazione solo se x ∈ A e y ∈ B . Viceversa, in termini di π - 1 , la partizione in A e B corrisponde a A- runs e B -runs; ogni volta che un B estremità -Run e un A -run inizia, c'è una discesa. Per "uccidere" una discesa, dobbiamo passare da una A- corsa a una B…xy…π−1x∈Ay∈Bπ−1ABABBAAB-correre. Se uccidiamo due discese, saremmo passati nel mezzo da una run a una A- run, sostenendo una discesa.BA
Questo argomento può essere formalizzato per mostrare che se deriva da π tramite un'operazione, allora d ( α - 1 ) ≥ ⌊ d ( π - 1 ) / 2 ⌋ , dove d ( ⋅ ) è il numero di discese. Ciò equivale a r ( α ) ≥ ⌈ r ( π ) / 2 ⌉απd(α−1)≥⌊d(π−1)/2⌋d(⋅)r(α)≥⌈r(π)/2⌉, dimostrando così una direzione della mia congettura. L'altra direzione è più semplice ed è già stata delineata sopra: facciamo semplicemente ogni secondo giro e spingiamo questi giri a destra per ottenere una permutazione / 2 ) ⌉ .αsoddisfacente r(α)=⌈r(π/2)⌉