【人工智能】— CSP约束满足问题、回溯搜索、最少剩余值MRV、度启发式、最少约束值启发式

文章介绍了约束满足问题(CSP)的概念,如地图着色问题,并探讨了CSP的不同类型,包括离散和连续变量的问题。标准搜索公式和回溯搜索算法被提出,以及如何通过启发式方法如最少剩余值、度启发式和最少约束值启发式来提高搜索效率。前向检验和约束传播是避免无效搜索的重要策略。文章还提到了这些方法在现实世界问题如作业分配和时间调度中的应用。
摘要由CSDN通过智能技术生成

约束满足问题 CSP

  • 标准搜索问题:
    • 状态是一个“黑匣子”——任何支持目标测试、评估、后续的旧数据结构
  • CSP:
    • 状态由变量Xi和(值域)Di域中的值定义
    • 目标测试是一组约束条件,每个约束包括一些变量的子集,并指定这些子集的值之间允许进行的合并

示例:地图着色

  • 变量WA、NT、Q、NSW、V、SA、T
    域Di={红、绿、蓝}
    限制:相邻区域必须有不同的颜色
  • 原始图:在这里插入图片描述
  • 一种解决方案:在这里插入图片描述解决方案是满足所有约束的分配,例如{WA=red, NT =green, Q=red, NSW =green, V =red, SA=blue, T =green}

约束图

  • 二进制CSP:每个约束与两个变量相关
  • 约束图:节点是变量,圆弧是约束在这里插入图片描述
  • 通用CSP算法使用图结构来加快搜索速度。

CSP的种类

  • 离散变量:
    • finite domains 有限值域:
      • n个变量,域大小 d → O ( d n ) d→O(d^n) dO(dn)
      • 布尔CSPs,包括布尔可满足性(NP完全)如3-SAT
    • infinite domains 无限值域 (integers, strings, etc.)
      • 例如,作业调度,变量是每个作业的开始/结束日期
      • need a constraint language(约束语言)
      • 线性约束可解,非线性不可解
  • 连续变量:
    • 例如,哈勃太空望远镜观测的开始/结束时间
    • 用线性规划(LP)方法在多项式时间内可解的线性约束

约束类型

  • Unary(一元)约束包含单个变量
    • 例如,SA≠green
  • Binary(二元) 约束包含成对的变量
    • 例如,SA≠WA
  • Higher-order(更高阶)约束包含3个或更多变量
    • 例如,密码运算(密码算数) 列约束
  • 偏好(软约束),例如,红色比绿色好
  • 通常用每个个体变量赋值的耗散来表示→约束优化问题

举例:密码算法

在这里插入图片描述

现实世界的CSP

  • 分配作业问题,例如,谁教什么课,谁复习哪些论文
  • 时间表问题,例如,何时何地提供哪门课
    • 硬件配置
    • 运输调度
    • 工厂调度
    • 平面布置
  • 请注意,许多现实世界中的问题都涉及实值变量
  • 逐个枚举
    • 低效
    • 需要指数时间dn
    • 但完备
      • 如何令指数时间算法高效一点

标准搜索公式

  • incremental增量形式化
    • 让我们从简单的方法开始,然后完善它
    • 状态由迄今为止分配的值定义
      • 初始状态:空赋值,{}
      • 后继函数
        • 为未赋值的变量赋值,该变量与当前赋值不冲突
        • 如果没有合法分配,则失败
      • 目标测试:当前任务已完成
    1. 优点: 对所有CSP,形式化方法都是一样的
    2. 每个解都出现在深度n处,有n个变量
      • 所以可以用深度优先搜索
    3. 路径之间是不相关的,所以可以使用完全状态形式化
    4. 缺点:CSP有n个值域大小为d的变量,顶层的分支因子为nd,因为有n个变量,每个变量的取值可以是d个值中的任何一个。在下一层,分支因子是(n-1)d,依此类推n层。生成了一棵有n!·dn个叶子的搜索树,尽管可能的完整赋值只有dn个!
    5. 在这里插入图片描述

回溯搜索

  • 变量赋值是可交换的

    • [ WA = red then NT = green ][ NT = green then WA = red ]是相同的
  • 具有单变量赋值的CSP的深度优先搜索称为回溯搜索

  • 回溯搜索是CSP的基本无信息算法。可以解决n≈25的n皇后问题在这里插入图片描述在这里插入图片描述在这里插入图片描述

改进回溯搜索的效率

  • 通用方法可以在速度上带来巨大的收益:
    1. 接下来应该分配哪个变量?
    2. 应该按照什么顺序尝试它的值?
    3. 我们能发现当前的方案是行不通的吗? 提前失败?
    4. 我们能利用问题结构吗?
最少剩余值启发式

解决:下一步应该分配哪个变量

  • Minimum remaining values 最少剩余值(MRV):选择合法值最少的变量,但是在这里对选择第一个着色区域没有帮助,因为初始时每个区域都有合法的三种颜色可选在这里插入图片描述- 相比于随机或静态的排序,MRV启发式通常性能更好- 可以选择出最可能很快导致失败的变量
度启发式

解决:下一步应该分配哪个变量

  • 度启发式:通过选择与其他未赋值变量约束最多的变量来试图降低未来的分支因子
  • 最少剩余值启发式通常是一个强有力的导引,而度启发式对打破僵局非常有用。
  • 在这里,度启发式可以决定选择第一个着色区域在这里插入图片描述
最少约束值启发式

解决:应该按照什么顺序尝试它的值

  • 一旦一个变量被选定,算法需要决定检验它的取值顺序。有时最少约束值启发式很有效
  • 它优先选择的值是给邻居变量留下更多的选择。
  • 排除剩余变量中最小值的一个;请注意,这可能需要一些计算才能确定!在这里插入图片描述
  • 将这些启发式方法结合起来,那么1000皇后问题也是可行的
Forward checking—前向检验
  • 思想:跟踪未分配变量的剩余合法值,当任何变量没有合法值时终止搜索在这里插入图片描述
Constraint propagation — 约束传播
  • 前向检查将信息从已分配的变量传播到未分配的变量,但不能为所有故障提供早期检测:
  • 在第三个状态出现问题:NT和SA不能都是蓝色的!说明后续的状态是无意义的。在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之墨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值