AI基础 L13 Constraint Satisfaction Problems I约束满足问题

news2024/11/25 21:45:25

Defining Constraint Satisfaction Problems

A constraint satisfaction problem (CSP) consists of three components, X, D, and C:
• X is a set of variables, {X1, . . . , Xn}.
• D is a set of domains, {D1, . . . , Dn}, one for each variable
• C is a set of constraints that specify allowable combination of values CSPs deal with assignments of values to variables.
• A complete assignment is one in which every variable is assigned a value
— A solution to a CSP is a consistent, complete assignment.
• A partial assignment is one that leaves some variables unassigned.
• Partial solution is a partial assignment that is consistent

约束满足问题(CSP)

约束满足问题是一个由三个主要组成部分组成的问题类型:

  1. 变量集(X)

    • 变量集 X 包含一组变量,通常表示为 {X1, . . . , Xn}。每个变量代表问题中的一个决策点或决策元素。
  2. 域集(D)

    • 域集 D 包含一组域,每个域对应一个变量,表示为 {D1, . . . , Dn}。域 Di 包含所有可能的值,每个值可以被分配给变量 Xi
  3. 约束集(C)

    • 约束集 C 包含一组约束,这些约束定义了变量值之间的允许组合。这些约束限制了变量可以取的值,以保证问题的解是有效的。

CSPs 涉及的任务

CSPs 涉及的任务是分配值给变量,以满足所有约束。

解(Solution)

  • 完整分配(Complete assignment)

    • 完整分配是指每个变量都被分配了一个值。
    • 解决方案(Solution)
      • CSPs 的解决方案是一个一致的、完整的分配,即满足所有约束的分配。
  • 部分分配(Partial assignment)

    • 部分分配是指一些变量没有分配值。
    • 部分解决方案(Partial solution)
      • 部分解决方案是一个一致的、部分分配,即满足当前分配下所有约束的分配。

• Standard search problem:
— state is a “black box” — any old data structure that supports goal test, eval, successor
• CSP:
— state is defined by variables Xi with values from domain Di
— goal test is a set of constraints specifying allowable combinations of values for subsets of variables
• Simple example of a formal representation language
• Allows useful general-purpose algorithms with more power than standard search algorithms

  • 状态(State)

    • 状态可以是任何数据结构,只要它能够存储和更新问题状态的信息。
  • 目标测试(Goal test)

    • 目标测试是一个函数,用于判断当前状态是否达到了问题的目标状态。
  • 评估(Evaluation)

    • 评估函数用于评估当前状态的优劣,这通常用于启发式搜索算法中。
  • 成功继任者(Successor)

    • 成功继任者函数用于从当前状态生成新的状态,这些新状态是当前状态的合法继任者。

Map-Colouring

 

Constraint graph

• Binary CSP: each constraint relates at most two variables
• Constraint graph: nodes are variables, arcs show constraints

General-purpose CSP algorithms use the graph structure

Varieties of CSPs
• Discrete variables
— finite domains; size d ⇒ O(dn) complete assignments
e.g., Boolean CSPs, incl. Boolean satisfiability (NP-complete)
infinite domains (integers, strings, etc.)
e.g., job scheduling, variables are start/end days for each job
— need a constraint language, e.g., StartJob1 + 5 ≤ StartJob3
— linear constraints solvable, nonlinear undecidable
• Continuous variables
e.g., start/end times for Hubble Telescope observations
— linear constraints solvable in poly time by LP methods
• Unary constraints involve a single variable,
e.g., S A̸ = green
• Binary constraints involve pairs of variables,
e.g., S A̸ = W A
• Higher-order constraints involve 3 or more variables,
e.g., cryptarithmetic column constraints
• Preferences (soft constraints),
e.g., red is better than green
• often representable by a cost for each variable assignment
→ constrained optimization problems

离散变量的CSPs

离散变量的CSPs涉及具有有限域的变量,例如布尔变量、整数、字符串等。

  • 特点
    • 变量具有有限域,如布尔值、整数或字符串。
    • 解决方案的数量随着变量数量的增加而指数级增长。

无限域的CSPs

无限域的CSPs涉及具有无限域的变量,例如整数、字符串等。

  • 特点
    • 变量具有无限域,如整数或字符串。
    • 需要一种约束语言来表达变量之间的约束关系。
    • 线性约束是可解决的,但非线性约束是不可判定的。

连续变量的CSPs

连续变量的CSPs涉及具有连续域的变量,例如天文观测的开始和结束时间。

  • 特点
    • 变量具有连续域,如时间或空间。
    • 可以使用线性规划方法解决线性约束。
    • 非线性约束的解决可能需要更复杂的方法。

约束的类型

  • 单变量约束(Unary constraints)

    • 涉及单个变量,例如 S ≠ green
  • 二变量约束(Binary constraints)

    • 涉及两个变量的关系,例如 S ≠ W
  • 高阶约束(Higher-order constraints)

    • 涉及三个或更多变量的关系,例如密码算术列约束。

偏好约束(Preferences)

偏好约束是软约束,它们为每个变量分配了一个成本,表示对某个变量的偏好。

  • 特点
    • 偏好约束可以表示为对每个变量分配的成本。
    • 偏好约束通常用于约束优化问题。

eg  Cryptarithmetic

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

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

相关文章

STM32+ESP8266 WiFi连接机智云平台APP远程控制教程

本文档将介绍如何用STM32ESP8266 WiFi模块从零开始连接上机智云,并通过APP进行远程控制。 机智云官网:机智云|智能物联网操作系统 (gizwits.com) 准备:STM32、ESP8266、手机、可上网的WiFi。 1.创建设备 1.1 注册登陆 请自行注册账号并登陆…

脱离八股文,真实开发中的延时处理需求实现思路(超时订单处理为例)

前言 咱们聊聊那些在开发过程中经常遇到的延时处理需求吧。比如说,网购时那些迟迟不付款的订单,或者是社交软件里那些需要稍后处理的消息,再或者是金融交易中那些需要等待确认的交易。这些都是咱们得搞定的活儿。 不过,很多时候&a…

JS面试真题 part3

JS面试真题 part3 11、bind、call、apply区别?如何实现一个bind12、JavaScript中执行上下文和执行栈是什么13、说说JavaScript中的事件模型14、解释下什么是事件代理?应用场景?15、说说你对闭包的理解?闭包使用场景 11、bind、cal…

make 程序规定的 makefile 文件的书写语法

(1) 常用的 gcc 选项: (2) make 的作用: (3) 搭建 make 的实验环境 , linux 的很简单, windows 的复杂一点: windows 上 make 环境的搭建&#…

python爬虫基础:了解html

编辑器vscode <!DOCTYPE html> <html><head><title>第一个网页</title></head><body><h1>字体</h1><h2>字体</h2><h3>字体</h3><p>Lorem, ipsum dolor sit amet consectetur adipisicing…

电商平台如何实现自动监控订单签收状态,加快资金划拨进程?

资金划拨作为交易流程的核心环节之一&#xff0c;直接关系到商家资金回笼的速度、消费者购物体验的满意度以及平台自身的信誉与稳定性。 区别于自营电商&#xff0c;电商平台入驻了许多第三方商家&#xff0c;为了保障交易安全和控制风险&#xff0c;在交易未完成之前&#xff…

Java 入门指南:Java 并发编程 —— 同步工具类 Semephore(信号量)

文章目录 同步工具类Semephore核心功能限制并发访问量公平与非公平策略灵活性与适应性 常用方法使用示例 同步工具类 JUC&#xff08;Java.util.concurrent&#xff09;是 Java 提供的用于并发编程的工具类库&#xff0c;其中包含了一些通信工具类&#xff0c;用于在多个线程之…

Spring和MyBatis常见面试题总结

文章目录 1 Spring 基础1.1 说一下你对 Spring 的理解&#x1f525;1.2 Spring,Spring MVC,Spring Boot 之间什么关系?1.3 Spring 框架中用到了哪些设计模式&#xff1f;&#x1f525;1.4 说说自己对于 Spring MVC 了解?1.5 Spring MVC 的核心组件有哪些&#xff1f;1.6 Spri…

flutter开发实战-GoRouter路由go与push区别实践

flutter开发实战-GoRouter路由go与push区别实践 GoRouter是一个flutter的声明性路由包&#xff0c;使用路由器API提供一个方便的、基于url的API&#xff0c;用于在不同屏幕之间导航。可以定义URL模式、使用URL导航、处理深度链接以及许多其他与导航相关的场景。 之前使用了Go…

Vue3封装table表格右键菜单功能

1) 效果&#xff0c;右键单击单元格&#xff0c;打开菜单弹窗: 点击菜单选项&#xff0c;可选择只读/编辑&#xff0c;可在只读/编辑方法中&#xff0c;拿到该行列表格的数据&#xff0c;进行相关操作 2) 思路 1、右键菜单组件 出现的时机&#xff0c;是右键单击table表格row-…

移动安全需求分析与安全保护工程

移动应用安全威胁与需求分析 移动应用系统组成&#xff1a; 移动应用&#xff1a;简称App 通信网络&#xff1a;无线网络&#xff0c;移动通信网络及互联网 应用服务端&#xff1a;由相关服务器构成&#xff0c;负责处理来自App相关信息或数据 移动应用安全分析 Android系统…

【0基础】制作HTML网页小游戏——贪吃蛇(附详细解析)

我在昨天的文章&#xff08;贪吃蛇HTML源码&#xff09;里面分享了网页版贪吃蛇小游戏的源码&#xff0c;今天就来给大家详细讲解一下每部分代码是如何运作的&#xff0c;以及以后要如何美化贪吃蛇的UI界面&#xff0c;在哪里修改等。 目录 一、代码运作 1、HTML结构: 2、C…

数组的常用算法

数组是同类型数据的集合。便于整体处理数据&#xff0c;数组操作的主要算法有&#xff1a; 1求极值 2查找 3排序 2查找 cprimer plus第11.1节278--279页 4数组和指针的区别&#xff1a;数组表示法和指针表示法 数组表示法1 int a[4]{2,4,1,5}; for(int i0;i<4;i)cou…

JAVA 的excel数据批量导入解析 现在都用什么API工具 Apache POI 、EasyExcel 、easypoi有什么区别

&#x1f4dd;个人主页&#x1f339;&#xff1a;个人主页 ⏩收录专栏⏪&#xff1a;SpringBoot &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339;&#xff0c;让我们共同进步&#xff01; 在Java中&#xff0c;处理Excel数据批量导入解析时&#xff0c;常…

通讯录

在写一个程序前需要了解的知识&#xff0c;需要对通讯录的流程了如指掌&#xff0c;才能写出一个完整的程序 。 写一个主函数&#xff0c;里面包含菜单、对菜单的选择、以及循环。创建个人信息结构体&#xff0c;多人构成的结构体数组。分析每一个函数&#xff1a; 1).增加信…

webstorm修改主题色和配色常用插件(全部实用)包含主题、界面、开发效率等

Windows 用户打开setting 选择配色 更换主题看这里 效率插件 Rainbow Brackets 推荐理由&#xff1a;用各种鲜明的颜色显示括号&#xff0c;这样可以很容易分清楚括号配对问题。 Key promoter 推荐理由&#xff1a;只要是鼠标操作能够用快捷键替代的&#xff0c;Key Promoter…

若依漏洞综合利用工具

若依漏洞综合利用工具 安装与使用 该工具使用java开发&#xff0c;环境要求&#xff1a;JDK1.8版本 java -jar “文件名” 即可打开图形化界面。 注意查看"必看操作说明"模块。 1.首先下载好几个必要模块。 然后把openjfx-17.0.11_windows-x64_bin-sdk放在D盘根…

音视频入门基础:AAC专题(1)——AAC官方文档下载

一、AAC简介 高级音频编码&#xff08;英语&#xff1a;Advanced Audio Coding&#xff0c;AAC&#xff09;是有损音频压缩的专利数字音频编码标准&#xff0c;由Fraunhofer IIS、杜比实验室、贝尔实验室、Sony、Nokia等公司共同开发。出现于1997年&#xff0c;为一种基于MPEG…

【python因果推断库14】饮酒年龄 - 贝叶斯分析

目录 饮酒年龄 - 贝叶斯分析 主效应模型 交互模型 将连续变量以治疗阈值为中心 饮酒年龄 - 贝叶斯分析 这个例子使用了回归断点设计来探讨最低合法饮酒年龄&#xff08;在美国为21岁&#xff09;对全因死亡率的因果效应。数据集来自carpenter2009effect 的一项研究。 impo…

C语言蓝桥杯:语言基础

竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_search函数&#xff0c;用于查找…