2.2.5 Analysts & 2.3 Conclusions

2.2.5 Analysts

虽然早期认识到解决CSP通常是NP难的,但是各种分析技术被用来评估,预测或比较算法性能并将问题复杂性与问题结构联系起来。 特别是,需要权衡以避免搜索所需的努力,例如, 通过进行更智能的控制或进行更多的推理,以及减少搜索工作量。

Knuth [46]和Purdom [63]使用探测技术来估计回溯程序的效率。 Haralick和Elliott进行了统计分析[35],由Nudel [62]重新定义,用于计算基本问题参数定义的问题类别的“预期复杂性”。 Brownand Purdom研究了平均时间行为[7,64]。 Mackworth和Freuder对各种易处理的传播算法进行了最坏情况行为的算法复杂性分析[55]。 他们表明,弧度一致性的时间复杂度在约束数量上是线性的,解决了一个未解决的问题。 这个结果对于使用弧形一致性和基本操作的约束编程语言非常重要[56]。 当然,实验评估很常见,但在早期可能过于依赖于n皇后问题,而对随机问题实验的潜在缺陷了解甚少。

问题复杂性可能与问题结构有关。 Seidel [66]使用基于图切割集的分解技术开发了动态编程合成算法,该算法将问题复杂性与他称为“前端长度”的问题参数相关联。 Freuder [27]通过引入约束图“宽度”的结构概念证明了树状结构约束图的问题,并证明了宽度和一致性水平之间的联系,确保了树状结构问题可以通过回溯来解决 - 弧一致性预处理后的自由搜索。 他随后将最大双连通分量[28]和稳定集[30]的问题结构的复杂性联系起来。

2.3 Conclusions

本章不是一个完整的历史,当然也不是一个详尽的调查。 我们专注于早期的主题,但值得注意的是,许多非常现代的主题也已经出现在这个早期阶段。 例如,即使在1965年,Golomb和Baumert也在暗示对称性和问题重构。

因此,回溯的成功归因于程序员的基本方法能够使基本方法适应手头的问题,并且能够重新解决问题以利用他自己的计算设备的特性。 也就是说,回溯编程(许多其他类型的编程)在某种程度上是一门艺术。

正如本手册的其余部分将展示的那样,很多进展都在制造约束程序员可用的更强大的方法。 然而,约束编程仍然“有点艺术”。 未来的挑战将是使约束编程更多地成为工程活动,并且非程序员可以更加透明地访问约束技术。

猜你喜欢

转载自blog.csdn.net/weixin_38354912/article/details/83217587
2.3