Discrete Optimization (Coursera) week3-1 Constraint Programming (CP)

本文介绍了约束编程(CP)的概念,将其比喻为解决数独问题的方式,通过已知条件缩小解的空间。以八皇后问题为例,阐述了放置皇后的过程和如何利用约束条件进行回溯。CP的核心在于使用约束来限制变量的取值范围,并通过修剪和分支策略寻找解决方案。CP是一种完整的方法,能够找到优化问题的最优解或满足问题的解。
摘要由CSDN通过智能技术生成

Introduction

CP的idea大致就像在解一个数独。运用已知的知识来deduce和排除一些solution,从而使得solution space变小。

拿八皇后举一个例子:

(这是一个鼎鼎大名的问题)要求在8x8的棋盘上放置八个皇后(皇后可以竖着走横着走斜着走),使得任一皇后不在其他皇后的攻击范围内。

在这里插入图片描述

假设从左往右开始放置皇后。

放置第一个 column的时候,此时没有限制,可以在 (1, 1)处放置。这样就导致 (2, 1), (3, 1),…,(8, 1) 不能放置皇后;同理 (2, 2), (3, 3), …, (8, 8)也不能放置皇后

放置第二个 column的时候,此时可以在第3~8位放置,那么假设就在 (2, 3)放置。这样就导致 (3, 3), (4, 3),…,(8, 3)不能放置皇后;同理 (3, 4),…(7, 8)与(3, 2)不能放置皇后

以此类推,我们会发现解的可选范围的确缩小了。如果遇到不能摆出八皇后的窘境,那就得回溯一下,在前面某个column的可行解中挑选另一值,再继续放置皇后。


Computational Paradigm:

  • Use constraints to reduce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值