《一类调整算法在信息学竞赛中的应用》学习笔记

\[《一类调整算法在信息学竞赛中的应用》学习笔记 \]

教练让学习论文...

找了个好玩的算法来学,\(dls\)调整法

用途

用于处理一些合法解中找最优解的问题

可以从任意一个合法解中进行微调得到最优解

基本流程

记录\(S\)为所有可能的状态集合,\(x\in S,\)定义\(F(x)\)\(x\)的权值

\(T\subset S\)为合法状态的集合中,求出\(x\in T,F(x)\)的最大值

比较常见的,每一个状态都能通过较小的变化得到另一个状态,成为邻域,记为\(N(x)\)

\(1.y\in N(x),F(y)>F(x) \ ,x=y\)

\(y\in N(x),All\ F(y)<=F(x),x=(rand()\in N(x))\)

最终可以得到一个局部最优解(全局较优解)

具体使用

\(Sit_1:\)图论匹配问题

目前一般图最大匹配的稳定算法是带花树\(O(n^w)/O(n^3)\)求得(我没有学过,本文暂时不涉及)

考虑使用调整法解决问题

我们有图\(G=(V,E),\)我们维护一个边集子集\(S\subset E,\)表示当前匹配的边,我们现在已经有一些点已经匹配了,选择未匹配的点,我们随机挑选出一个\(v,\)如果\(v\)存在未匹配相邻点,直接匹配即可,否则随机断边

代码实现简单,随机数据下比较优秀

期望复杂度\(O(n^{\frac{n}{2}+4}),\)证明略(反正你也不知道出题人会不会卡你)

闲的没事写了一发,发现\(Luoguo,UOJ\)都把随机调整卡了...

代码\(UOJ:97pts,luoguo:78pts\)

https://www.luogu.com.cn/record/list?pid=P6113&user=250036

不想卡了,直接贺。。。

\(Sit_2:\)隐式匹配问题

\(CF562E\)

题目大意\(:\)

给定\(n,x_i(i\in[1,2^n])\)构造两个长度为\(2^n\)的排列\(p_i,q_i(i\in[1,2^n])\),满足\(p_i\ xor \ q_i=x_i,\)或输出无解

我的第一眼思路,是对于每个\(x_i\)找若干对能异或出\(x_i\)的数对,然后连接,然后类似网络流建图跑匹配

首先判断无解较为显然

\(x_1\ xor\ x_2....x_n=p_i\ xor\ q_i=0\)

考虑调整算法

首先我们有\(0\sim 2^n-1,\)\(x_0\sim x_{2^n-1}\)匹配,使得异或各不相同

还是最大匹配算法,每次找一个没有匹配的\(x_n\)匹配,如果未出现此异或就匹配

否则就\(rand()\)一个\(x_n\)异或,并把原来异或和相同的断开即可(不过\(CF\ hack\)不掉挺神奇的)

\(JOI2020\)制作团子

https://www.luogu.com.cn/problem/P7218

大家都切了吧,但是我咕咕咕了(现在补上了)

这是个提答

每次随机未被匹配的点,然后判断是否存在个竹签在不和其他竹签冲突,如存在则直接插入竹签,否则\(50\%\)去掉冲突竹签

拿到的分数和你剩下的时间还有电脑的运行速度成正比...

好想又好写...

\(Sit_3:\)

\(NP\)问题(话说这种题放在\(FJOI2022\)肯定能被出题人“解决”)

\(No.1\)染色问题

将所有点用\(k\)种颜色染色,使得任意边连接两点颜色不同

首先随机染色,然后找一个点如果能换颜色之后使得同色边减少的最多,就在这些减少最多的点随机选择一个换颜色

直到得到答案

四元环可以卡掉,因为我们保证一直要不劣,存在方案使得先劣后优,其实可以调整若干轮之后再次随机染色(人类智慧的进步,爬山\(->\)退火)

四元环不加多次随机被完美\(hack\)掉(以后出数据多出这种数据,万一真有人随机一次呢)

\(No.2\)有向图哈密尔顿链

给定有向图\(G=(V,E),\)找出一条链恰好经过每个点一次

维护一个尽可能大的边集使得每个点的入度至多为\(1\)并且不构成圈,每个点的出度也不能大于\(1\)

在不构成环的基础上,随机加边,如果直接合法就加,否则,把不合法的边断掉就好了

判断成圈的话可以使用\(LCT,\)我觉得可按秩合并撤销并查集也行

也能被卡(以后出数据多出这种数据,卡人无比快乐)

因为我们左图至少断两条边,会使得更劣,不符合随机调整规则,就会被卡

\(No.3\ NP\)问题的近似解

可以转化为\(x_i\in [0,1]\)整数型线性规划为题,用随机化优化一下(我不是很明白)

https://www.cnblogs.com/Eternal-Battle/p/15856834.html

可以查找相关论文:

[1] Nikhil Bansal, On a generalization of iterated and randomized rounding. In Proceedings of the
51stAnnual ACM SIGACT Symposium on Theory of Computing, pages 1125–1135, 2019.

基本优化

\(Sit_1:\)

一个变量被若干次调整回到原状态,可以先固定这个变量,调整其他变量,若干轮之后再设为不固定

\(Sit_2:\)

使用类似退火思想,先变劣再变优的接受较劣解

后言

感觉这个论文挺好玩就学了,尽管写了一个任意图最大匹配被\(hack\)了(最后贺带花树过去了),感觉还是有不小的收获,毕竟乱搞好写又能拿不少分,在考场上是个真心不错的选择,希望我亲爱的同学们准备的论文内容也很有意思吧

posted @ 2022-05-07 11:03  Authentic_k  阅读(100)  评论(0编辑  收藏  举报