排列排序最小交换次数
一个排列 ,每次可以交换任意两个数,求将其排序所需的最小交换次数 .
令 排序后的序列为 ,令 在 中的位置为 ,则连边 .
则答案为
其中 为构造出的图的连通块个数
首先我们构造出的东西肯定就是一个置换,可以拆成若干个置换环 .
令 表示长度为 的有 个置换环的排列交换最小次数 .
Lemma 1
对于大小不小于 的置换环,将任意两个不同节点进行交换后则成为两个置换环 .
Lemma 1.5
对于两个置换环,在每个置换环中各取一个节点,将两个节点进行交换后, 两个置换环合并为一个置换环 .
Lemma 1 和 Lemma 1.5 是显而易见的 .
Lemma 2
对于有 个节点的置换环,其交换次数为 (即 ) .
看起来非常显然,但实际上需要进一步论证 .
考虑数学归纳法 .
-
当 时命题显然成立 .
-
假设当 时命题全部成立(),则只需证 时命题仍成立 .
首先任选交换环中的两个不同的节点交换,由 Lemma 1 知,分裂成两个置换环,设他们的大小分别是 (),由归纳假设知 ,,根据 Lemma 2 把他们合并起来则有 .
于是当 时命题也成立 .
从而,Lemma 2 获证 .
回到原命题,欲证 .
仍然考虑数学归纳法 .
-
首先当 时命题显然成立 .
-
假设当 ()时命题都成立,则只需证 时命题仍成立 .
(存在性)首先根据 Lemma 2,如果只交换置换环,那么就需要 次操作,接下来证明此为最小交换次数 .
(极小性)假设最小的操作序列使得交换次数小于 ,则该交换序列必然包含交换环间的交换操作,由 Lemma 1,Lemma 1.5 可知,一次环间操作只会将置换环数量改变 (加 或减 ),因为最终状态有 个置换环(根据归纳假设,),所以该操作序列必然存在一个已交换步数 使得置换环的个数等于 .
则 ,矛盾!故不存在一个操作序列使得交换次数小于 .
从而 ,证毕 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16410082.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】