排列排序最小交换次数
一个排列 \(\{a_n\}\),每次可以交换任意两个数,求将其排序所需的最小交换次数 .
令 \(\{a\}\) 排序后的序列为 \(\{a'\}\),令 \(a_i\) 在 \(\{a'\}\) 中的位置为 \(i'\),则连边 \(i\to i'\) .
则答案为
其中 \(r\) 为构造出的图的连通块个数
首先我们构造出的东西肯定就是一个置换,可以拆成若干个置换环 .
令 \(F_n(r)\) 表示长度为 \(n\) 的有 \(r\) 个置换环的排列交换最小次数 .
Lemma 1
对于大小不小于 \(2\) 的置换环,将任意两个不同节点进行交换后则成为两个置换环 .
Lemma 1.5
对于两个置换环,在每个置换环中各取一个节点,将两个节点进行交换后, 两个置换环合并为一个置换环 .
Lemma 1 和 Lemma 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 1,Lemma 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\),证毕 .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16410082.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ