排列排序最小交换次数

一个排列 \(\{a_n\}\),每次可以交换任意两个数,求将其排序所需的最小交换次数 .

\(\{a\}\) 排序后的序列为 \(\{a'\}\),令 \(a_i\)\(\{a'\}\) 中的位置为 \(i'\),则连边 \(i\to i'\) .

则答案为

\[G(\{a\})=n-r \]

其中 \(r\) 为构造出的图的连通块个数


首先我们构造出的东西肯定就是一个置换,可以拆成若干个置换环 .

\(F_n(r)\) 表示长度为 \(n\) 的有 \(r\) 个置换环的排列交换最小次数 .

Lemma 1

对于大小不小于 \(2\) 的置换环,将任意两个不同节点进行交换后则成为两个置换环 .

Lemma 1.5
对于两个置换环,在每个置换环中各取一个节点,将两个节点进行交换后, 两个置换环合并为一个置换环 .

Lemma 1Lemma 1.5 是显而易见的 .

Lemma 2

对于有 \(n\) 个节点的置换环,其交换次数为 \(n-1\)(即 \(F_n(1)=n-1\)) .

看起来非常显然,但实际上需要进一步论证 .

考虑数学归纳法 .

  • \(n=1\) 时命题显然成立 .

  • 假设当 \(n\le N\) 时命题全部成立(\(N\ge 2\)),则只需证 \(n=N+1\) 时命题仍成立 .

    首先任选交换环中的两个不同的节点交换,由 Lemma 1 知,分裂成两个置换环,设他们的大小分别是 \(s_1,s_2\) (\(s_1+s_2=N+1\)),由归纳假设知 \(F_{s_1}(1)=s_1-1\)\(F_{s_2}(1)=s_2-1\),根据 Lemma 2 把他们合并起来则有 \(F_{N+1}(1)=F_{s_1}(1)+F_{s_2}(1)=s_1+s_2-2=k\) .

    于是当 \(n=N+1\) 时命题也成立 .

从而,Lemma 2 获证 .


回到原命题,欲证 \(F_n(r)=n-r\) .

仍然考虑数学归纳法 .

  • 首先当 \(n=r\) 时命题显然成立 .

  • 假设当 \(r\ge R\)\(1\le R\le n\))时命题都成立,则只需证 \(r=R-1\) 时命题仍成立 .

    (存在性)首先根据 Lemma 2,如果只交换置换环,那么就需要 \(n-r+1\) 次操作,接下来证明此为最小交换次数 .

    (极小性)假设最小的操作序列使得交换次数小于 \(n-R+1\),则该交换序列必然包含交换环间的交换操作,由 Lemma 1Lemma 1.5 可知,一次环间操作只会将置换环数量改变 \(1\)(加 \(1\) 或减 \(1\)),因为最终状态有 \(n\) 个置换环(根据归纳假设,\(R\le n\)),所以该操作序列必然存在一个已交换步数 \(k\ge1\) 使得置换环的个数等于 \(R\) .

    \(F_n(R-1)=F_n(R)+k=n-R+k\ge n-R+1\),矛盾!故不存在一个操作序列使得交换次数小于 \(n-R+1\) .

从而 \(F_n(r)=n-r\),证毕 .

posted @ 2022-06-24 20:00  Jijidawang  阅读(882)  评论(0编辑  收藏  举报
😅​