欧皇限定のColorCoding

Color Coding 与最小权重k-path问题


参考资料:

彩色编码技术的研究进展及应用
彩色编码技术的研究进展及应用-备用链接

https://blog.csdn.net/u010352695/article/details/40924019 (这篇博客曾经没有收费呢……)

以及来自同学的题解


用途&适用

作为一种近似算法,主要用于解决图论中的k-path问题。

近似算法

指一些不那么严谨的算法,它们通常与NP-HARD问题相关。

因为这些问题不存在精确的多项式时间算法,所以会近似地使用多项式时间复杂度,但答案会在最优解的一定范围内浮动。

评估算法的三个方面:适用范围时间复杂度最优解性质

世上总是缺乏十全十美的事物,算法亦然难以同时满足所有要求。近似算法就是舍弃第三者的产物。

更详细的内容可以询问度娘、某乎、CSDN博客等。

k-path问题

著名的NP-Hard问题。对于给定的图\(G\)(不妨设它有\(n\)个点和\(m\)条边)和一个正整数\(k\),要求找到图中一个包含\(k\)个节点的简单路径(即该路径中,不允许多次经过同一节点)。这条简单路径(的权值和)应当满足某种最值要求。


使用方法

第一步,对图(中的点)随机染色,染色使用的颜色有k种(即要选取的简单路径的节点个数)。

注:请不要纠结颜色具体是红黄蓝还是黑白灰,这里的“颜色”只是一种分类的标识而已。可以认为这一步将图中的点随机(而不是均匀)分为\(k\)类。

第二步,在颜色限制下进行状态压缩DP,求出最值路径。

状态定义需要两维:\(f(i,s)\)表示路径重点为\(i\)点,路径中经过颜色集合为s时的最大/小值

对于每条边(u,v),有如下的状态转移方程:

如果v的颜色在集合s中,则:$$f(v,s) = \max{ f(u, s')+w(u,v) }$$

其中集合\(s'\)是集合\(s\)除去\({col_{v}}\),\(w(u,v)\)是边\((u,v)\)的权值

如果\(u\)的颜色在集合\(s\)中,同理。

思想&原理

我们假定最终解中的点被染成了两两不同的颜色。

那么最终解应该是:\(ans = \max{ f(i,\{1,2,3,...,k\}) }\)

得出这个【假定最优解】的时间复杂度是\(O(m*2^k)\)。似乎是个很理想的效率。

然而,【假定最优解】真的是【最优解】吗?

不一定,说白了就是看运气()

如果真正的最优解并没有被染成两两不同的颜色,就再来一次。只要重开的次数够多,那总会那么有一次刚好得到最优解。

当然也不可能纯凭运气。

可以计算得到,最优解恰好被染成两两不同的颜色的概率是\(\frac{k!}{k^k}\)。从概率的角度,得到最优解的期望次数是\(\frac{k^k}{k!}\)。题中的\(k\)不会太大,因此期望次数实际上不会太多,多跑几遍程序基本上就能过了。

但是之所以称它为【欧皇限定】…因为始终存在和正解错过的可能,如果脸黑到一定程度的话……?

例题 HDU6664 Andy and Maze

翻译:\(n\)个房间,每个房间里有一块宝石,\(m\)条无向边连接,经过每条路径都有花费,到达每个房间可以获得一块宝石,获得\(k\)块就可以逃离迷宫,但是这条获得宝石的路径上同一个房间不能进入多次,你不知道哪里是起点。问满足条件的路径最多花费多少。

posted @ 2024-11-21 21:54  _kilo-meteor  阅读(19)  评论(0编辑  收藏  举报