第 II 部分 · 问题求解

第 6 章 约束满足问题

Chapter 6 · Constraint Satisfaction Problems

⏱ 建议学习时长:约 5 小时

本章导读

一类特殊的搜索问题:状态是变量赋值,目标是满足一组约束。通过约束传播与启发式回溯大幅剪枝,是求解调度、图着色、数独等组合问题的标准武器。

学习要点

核心概念

术语English一句话解释
约束满足问题CSP变量 + 值域 + 约束构成的一类结构化搜索问题
回溯搜索Backtracking Search逐变量赋值、冲突即回退的深度优先搜索
最少剩余值MRV优先给候选值最少的变量赋值(失败优先)
前向检验Forward Checking赋值后立即删除邻居的非法候选值
弧一致性Arc Consistency变量每个取值在约束另一端都有支持
AC-3AC-3用队列传播弧一致性的经典算法
最少冲突Min-Conflicts每次选择与已赋变量冲突最少的值
树分解Tree Decomposition把约束图切成子问题降低求解复杂度
全局约束Global Constraint涉及大量变量的结构化约束,可做专门传播

配套代码(aima-python)

aima-python 是官方维护的开源算法库(MIT 协议),建议每学完一章就跑一遍对应模块的示例。

延伸资源