探索传播器的潜力
1. 引言
传播是约束编程(CP)的核心,它能让约束求解器跳过搜索空间的大部分,从而显著提升性能。然而,其有效性取决于过滤值节省的时间与运行传播器所花费时间的平衡。CP 社区投入大量研究精力来优化这一权衡,目标是在不改变传播技术输入输出行为的前提下,提升其性能。
通常可通过两种方式实现这一目标:
- 设计更高效的算法以实现相同的过滤效果。
- 用必要条件控制传播器的激活,减少无效激活。
但这两种方式都需要长期且艰巨的努力,且结果不确定。例如,序列约束在 1994 年被引入,直到 2006 年才出现多项式时间的广义弧一致性(GAC)算法,且原始的 $O(n^3)$ 运行时间仍不足以始终优于较弱但成本较低的传播器,相关改进工作至今仍在进行。对于 NP 难约束,计算时间和剪枝能力的权衡更为关键,如能量推理(ER)虽在 90 年代被提出作为强大的过滤技术,但因其运行时间长而未被广泛应用,改进其原始的 $O(n^3)$ 复杂度花费了约 20 年时间。
传统评估传播器的方法是在一组基准实例上测量时间和失败次数,但这种方法对如何改进传播器提供的信息有限,且使用静态搜索策略可能降低分析的意义,解决问题至完全性可能使分析偏向较小的实例。
为解决这些问题,我们提出了一种扩展的评估方法,包括:
- 对求解器进行插桩以收集约束信息。
- 存储和重放搜索树,以便使用任意搜索策略和实例大小进行公平比较。
2. 提出的方法
2.1 评估过滤函数
我们考虑评估一个过滤函数 $\varphi$,它将一组域 $D_0, \ldots, D_{n - 1
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



