“算法设计中,有界搜索树直接控制每个分支对参数的下降,迭代压缩把大小 $k+1$ 的解逐步压回 $k$,Color Coding用随机着色暴露小子结构,树宽动态规划则把全局问题限制在小分隔袋上…”
形式陈述 ​
Colorful 事件 ​
要找含 $k$ 个顶点的简单路径,独立均匀把每个顶点染为
概率只依赖参数
颜色子集 DP ​
令 DP
直觉
简单路径图像 ​
普通子集 DP 若按顶点集合会有
例子与边界
去随机化与边界 ​
One-sided 正确性 ​
DP 返回 colorful path 时,颜色互异保证顶点互异,所以输出一定是真实简单路径;随机性只可能让已有目标在本轮不 colorful 而漏报。因此这是 one-sided Monte Carlo,可保存 DP 父指针恢复并验证路径。
重复次数来自
推论与应用
固定一种着色后,“是否存在彩色路径/子图”通常由动态规划按颜色子集和端点合并;为了从随机成功概率转成确定性覆盖,可用完美哈希族保证每个目标 k 元顶点集在某个着色下被注入地着色。
路径恢复与内存布局 ​
若要输出路径,每个首次置真的状态保存前驱顶点 DP[allColors,v] 反复删除当前颜色并读父指针,逆序即可恢复
只回答存在性时,可按子集大小分层保存 bitset,或让每个 (S,v) 用一位表示;要回溯则父指针通常需要
对无向路径,转移会从边的两个方向更新;有向路径只能沿入边到
一次着色的表可在找到目标后立即停止;多轮试验之间必须清空状态和父指针,但图邻接表可以复用。去随机化时着色族的枚举顺序不改变这套表语义,只改变外层运行次数。
参考资料
- Noga Alon, Raphael Yuster, Uri Zwick, Color-Coding, JACM, 1995.
- Marek Cygan et al., Parameterized Algorithms, Springer, 2015.