2025

163 posts

CSP排序

在约束满足问题的回溯搜索中,排序启发式(Ordering Heuristics)决定了**搜索过程中变量选择和值选择的顺序**。好的排序策略可以**显著减少搜索空间的探索**,将指数级的搜索问题转化为多项式时间可解的问题。...

CSP算法

> 下面是对CSP的相关概念的接口预实现,之后会用到 ```python class CSP: """Constraint Satisfaction Problem class""" def __init__(self, variables: List[str], domains: Dict[str, Set[Any]], constraints: List[Constraint]):...

约束满足问题

约束满足问题(Constraint Satisfaction Problem, CSP)是一类特殊的搜索问题,它提供了一种**结构化的方式来表示和解决组合问题**。与传统搜索问题不同,CSP关注的是**找到变量赋值的组合,使之满足所有约束条件**,而不是寻找从起始状态到目标状态的路径。...

有信息搜索

在无信息搜索中,我们会从起始点开始、展开当前边界的所有可能后继状态。但是这样的搜索效率很低,会导致进行很多没必要的搜索。如果我们了解了当前环境的信息、对当前的空间的搜索方向有一定概念,就可以显著提高性能、快速到达目标。 启发式函数是实现到目标状态距离的核心驱动力——它们是**接收一个状态作为输入并输出相应估计值的函数**。 -...

本地搜索

在某些问题中,我们**只关心找到目标状态而并不需要知道达到这个状态的优化路径**,并不需要通过设计算法来让路径成本优化。局部搜索算法允许我们找到目标状态而无需优化到达那里的路径成本。 在局部搜索问题中,状态空间由“完整”解的集合组成。我们使用这些算法来尝试找到满足某些约束或优化某个目标函数的配置。...

搜索概念

如果在一个给定的世界中有$n$个变量对象,它们可以分别取$x_1, x_2, \ldots, x_n$个不同的值,那么状态的总数就是$x_1 \cdot x_2 \cdot \ldots \cdot x_n$。 状态空间图的构建方式是:状态代表节点,从一个状态到其子状态存在有向边。这些边代表动作,任何相关的权重代表执行相应动作的成本。注意,**在状态空间图中,每个状态只被表示一次**。 >...

无信息搜索

边界是当前**已发现,但是还未被拓展的节点的集合**,是搜索的边界。 在搜索过程中,我们会**展开当前边界的所有可能的后继状态,并把它加入边界中**。这相当于下一步Search的探索动作。然后当前的边界就会被丢弃。 - 完备性 (Completeness) - 如果搜索问题存在解,该策略是否保证在无限计算资源下找到它? - 最优性 (Optimality) -...