這是我的綴的證明ecture。假設n
是排列的長度,m
是我們允許旋轉的窗口的長度,其中1 ≤ m ≤ n
。如果存在將P
轉換爲Q
的窗口旋轉序列,則排列P
和Q
是幾乎相等。幾乎相等是一個等價關係。以下是關於等價類的聲明。
(1) m = 1: P almost equals Q if and only if P = Q
(2) m = n: P almost equals Q if and only if they're rotations of each other
(3) 1 < m < n, m odd: P almost equals Q if and only if they have the same parity
(4) 1 < m < n, n even: P almost equals Q
前兩個索賠是顯而易見的。至於(3)
,奇偶條件的必要性來自旋轉奇數長度的窗口是偶數排列的事實。
這裏爭論的肉找到時n = m + 1 ≥ 4
的算法,因爲在一般情況下,我們可以使用類似於插入排序算法進行改造P
讓所有,但最後m + 1
元素匹配Q
,並且具體而言,案件(n, m) = (3, 2)
可以通過檢查來解決。在m
爲偶數的情況下,我們進一步確保轉換匹配Q
的奇偶性,如果必要的話將最後的m
元素旋轉一次。 (對於m
奇數,我們只是假設等於奇偶校驗。)
我們需要一種技術來一次移動少於m
的元素。假設狀態如下。
1, 2, 3, 4, ..., m, m + 1
旋轉第二個窗口m - 1
(即一次反向)。
1, 3, 4, ..., m, m + 1, 2
旋轉第一個窗口m - 1
次。
3, 4, ..., m, m + 1, 1, 2
二,兩次。
3, 2, 4, ..., m, m + 1, 1
3, 1, 2, 4, ..., m, m + 1
我們成功地旋轉了前三個元素。這足以結合通過旋轉到「插入排序」Q
的第一個m - 1
元件到位。另外兩個按照正確的順序排列。
猜想:如果排列的長度爲m,則檢查它們是否彼此旋轉。否則,如果m是奇數,那麼檢查它們是否具有相同的奇偶性。如果m是偶數並且小於置換長度,那麼它們總是幾乎相等。 –