约束满足问题简介

约束满足问题的定义

约束满足问题(Constraint Satisfying Problem, CSP)

– 由一个变量集合\{X_{1}-X_{n}\}和一个约束集合\{C_{1}-C_{m}\}定义;

– 每个变量都有一个非空可能值域D_{i}

– 每个约束指定了包含若干变量的一个子集内各变量的赋值范围。

例如: 地图染色问题, N-皇后问题。

CSP问题的解

CSP的一个状态(最终解): 对一些或全部变量的赋值 \{X_{i}=v_{i},X_{j}=v_{j},...\}

• 一个不违反任何约束的对变量的赋值称为相容赋值或合法赋值

• 对每个变量都进行赋值称为完全赋值

• 一个( 一组) 对变量的赋值, 若既是相容赋值又是完全赋值(即对每个变量都赋了值,且这组赋值是合法的), 则这个(组) 赋值是CSP问题的解。

某些CSP问题要求问题的解能使目标函数最大化——约束优化。

• CSP问题常常可以可视化, 表示为约束图, 更直观地显示问题, 帮助思考问题的答案。

CSP问题的分类

根据变量的类型划分: 离散值域和连续值域。

变量—离散值域

有限值域, 如地图染色问题, 八皇后问题。

无限值域, 如整数集合或者字符串集合。

• 例如, 对于作业规划问题, 无法枚举所有可能取值,要使用约束语言 ( 线性约束 / 非线性约束 ) 描述 , 如StartJob_{1}+5\le{StartJob_{3}}

变量—连续值域

最著名的连续值域CSP是线性规划问题。

– 线性规划中的约束必须是构成一个凸多边形的一组线性不等式。

– 线性规划问题可以在变量个数的多项式时间内求解。

根据约束的类型划分:

– 线性或非线性约束。

– 一元或多元约束。

• 一元约束: 只限制一个变量的取值

• 二元约束与2个变量相关

• 高阶约束: 涉及3个或更多变量。

– 通过引入辅助变量, 转为二元约束。

– 绝对约束 vs 偏好约束。

• 我们仅讨论绝对约束

CSP问题求解的复杂度

CSP问题的求解目标是找到相容的完全赋值,最朴素的想法是依次取变量的赋值组合并检查其是否满足约束条件。

– 若CSP问题的任何一个变量的最大值域为d, 那么可能的完全赋值数量为O(d^{n})

– 指数级计算量。

例子:澳大利亚地图染色问题

澳大利亚地图染色问题: 用红绿蓝3色标出各省, 相邻者颜色不同。

• CSP问题具有一个性质: 可交换性, 变量赋值的顺序对结果没有影响。

– 所有CSP搜索算法生成后继节点时, 在搜索树每个节点上只考虑单个变量的可能赋值。

• CSP问题的求解: 深度优先的回溯搜索。

– 每次给一个变量赋值, 当没有合法赋值(不满足约束时)就要推翻前一个变量的赋值, 重新给其赋值, 这就是回溯。

澳大利亚地图染色问题的搜索树

一个简单的回溯算法(深度优先)

改进思路:约束满足问题改进技术:基于变量和赋值次序的启发式-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网加竞赛 Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 Yolov安全帽佩戴检测 危险区域进入检测 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&am…

打造专业开发者指南:针对ShardingProxy分库分表解决策略的深度剖析 – 详解部署、使用、服务治理与优化技巧

一、 ShardingProxy快速使用 ShardingProxy的功能同样是分库分表,但是他是一个独立部署的服务端,提供 统一的数据库代理服务。注意,ShardingProxy目前只支持MySQL和PostgreSQL。并且,客户端连接ShardingProxy时,最好使…

多模态大模型Vary:扩充视觉Vocabulary,实现更细粒度的视觉感知

前言 现代大型视觉语言模型(LVLMs)具有相同的视觉词汇- CLIP,它可以涵盖大多数常见的视觉任务。然而,对于一些需要密集和细粒度视觉感知的特殊视觉任务,例如文档级OCR或图表理解,特别是在非英语场景下,clip风格的词汇…

Springboot集成RabbitMq二

接上一篇:Springboot集成RabbitMq一-CSDN博客 1、搭建项目-消费者 与之前一样 2、创建配置类 package com.wym.rabbitmqconsumer.utils;import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.spring…

JDK17 - 开发者视角,从 JDK8 ~ JDK17 都增加了哪些新特性

目录 前言 一、站在开发视角,从 JDK8 升级到 JDK17 都有哪些新特性 1.1、JDK8 新特性 1.1.1、Optional 类 a)简介 b)使用方法 c)使用场景 1.2、JDK9 新特性 1.2.1、Optional - ifPresentOrElse 解决 if-else 1.2.2、Opt…

Java程序设计阶段测试1

一、单选题(共15题; 共30.0分) 2.0分 1、以下哪个是Java应用程序main方法的有效定义? A.public static void main(); B.public static void main( String args ); C.public static void main( String args[] ); D.public static boolea…

Go Lang Fiber介绍

利用GoLang Fiber进行高性能Web开发 在不断发展的Web开发世界中,选择合适的框架至关重要。速度、简洁性和强大的功能集是每个开发者都追求的品质。在使用Go构建Web应用时,“Fiber”作为一个强大且轻量级的框架在众多选择中脱颖而出。在这份全面的指南中…

扩展:键盘录入笔记(next()、nextLine()、nextInt()、nextDouble())

文章目录 一,键盘录入涉及到的方法如下:1)next()、nextLine():代码示例:代码示例: 2)nextInt():代码示例&…

无辅源电压继电器 RWY-D2/3 180-440VAC 导轨安装 josef约瑟

RWY-D1型电压继电器; RWY-D2型电压继电器; 一、 概述 RWY-D系列电压继电器(以下简称本继电器)用于发电机、变压器和输电线的电器保护装置中,作为过电压保护或低电压闭锁的启动原件。本继电器为集成电路静态型继电器…

设计模式--适配器模式

适配器模式 适配器模式(Adapter),将一个类的接口转换为客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 系统的数据和行为都正确,但接口不符合时,我们应该…

Python入门学习篇(十七)——封装、继承、多态

1 封装 1.1 理解 属性和方法书写到类里面的操作即为封装 封装可以理解成私有化属性和私有化方法1.2 示例代码 class Person():p_num 0 # 用于统计数量def __init__(self, name, age, sex, job):# __name为私有化属性self.__name nameself.age ageself.sex sexself.job …

使用anaconda创建爬虫spyder工程

1.由于每个工程使用的环境都可能不一样,因此一个好的习惯就是不同的工程都创建属于自己的环境,在anaconda中默认的环境是base,我们现在来创建一个名为spyder的环境,专门用于爬虫工程: //括号中名字,代表当…

森林火灾数据集

野外火灾是全球范围内最致命和危险的天然灾害之一。它不仅对人类的生命安全构成严重威胁,还对动植物的生存环境造成巨大的破坏。预测火灾行为不仅可以帮助消防员更好地应对火情,还可以为未来的火灾预防和应对策略提供有力支持。 随着航空图像技术的不断…

Windows可以ping通ubuntu,但ubuntu无法ping通windows

使用了NAT网卡和桥接网卡,电脑连了WiFi,桥接网卡桥接到WLAN上,Windows可以ping通Ubuntu但反过来不行! 1.可能是防火墙的问题,按照如下设置,无果 考虑是不是使用了两个网卡冲突了,取消NAT的链接 …

【笔记】书生·浦语大模型实战营——第一课

群公告 1月3日*更新 第一次课程视频链接:https://www.bilibili.com/video/BV1Rc411b7ns/,第一次课程只需要记笔记,没有作业。第一次课程(1月3日)和第二次课程(1月5日)到本周末(1月7日)截止,笔记记录在 知乎/CSDN/Github 或者任何你…

【操作系统xv6】学习记录--实验1 Lab: Xv6 and Unix utilities--未完

ref:https://pdos.csail.mit.edu/6.828/2020/xv6.html 实验:Lab: Xv6 and Unix utilities 环境搭建 实验环境搭建:https://blog.csdn.net/qq_45512097/article/details/126741793 搭建了1天,大家自求多福吧,哎。~搞环境真是折磨…

QProgressDialog用法及结合QThread用法,四种线程使用

1 QProgressDialog概述 QProgressDialog类提供耗时操作的进度条。 进度对话框用于向用户指示操作将花费多长时间,并演示应用程序没有冻结。此外,QPorgressDialog还可以给用户一个中止操作的机会。 进度对话框的一个常见问题是很难知道何时使用它们;操作…

Document对象详解

前言 在前端开发中,DOM(文档对象模型)扮演着重要的角色。它允许我们使用JavaScript来与网页文档进行交互,实现动态的网页效果。DOM的核心部分之一就是Document对象,它代表了整个HTML文档。在本篇博客中,我们…

华媒舍:6个使你的媒体发稿推广更简单的方法!

做为新闻报道媒体从业人员,在宣传发稿上要行走在最前沿,保持竞争力。下面我们就向您介绍六个又简单又实用的方法,帮助你提升新闻报道媒体营销推广发稿效果。 方法一:明确目标群体我们应该明确定义我们自己的目标群体。掌握观众的特…

小H靶场笔记:DC-3

DC-3 January 3, 2024 4:11 PM Tags:Joomla owner:只惠摸鱼 信息收集 探测靶机ip: 192.168.199.133 nmap 扫描端口、 系统版本 漏洞 发现只有80端口开发, 且有cve-2017-8917漏洞存在是Joomla的SQL注入漏洞 Joomla版本为3.7.0…