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

回溯搜索的通用算法的问题与改进思路

• 需改善无信息回溯搜索算法的性能。

• 通用改进方法的思路:

下一步该给哪个变量赋值, 按什么顺序给该变量赋值?

每步搜索应该做怎样的推理? 当前变量的赋值会对其他未赋值变量产生什么约束, 怎样利用这种约束以提高效率。

– 当遇到某个失败的变量赋值时, 怎样避免同样的失败? 就是说如何找到对这种失败起到关键作用的某个变量赋值。

下面介绍基于变量和赋值次序的启发式的三种方法。

MRV(最少剩余值) 启发式

由于随机的变量赋值排序难以产生高效率的搜索。

例如: 在WA=red且NT=green条件下选取SA赋值的可能(只能取blue)与Q能取到的赋值(可以取blue、red)的比为(1:2), 并且一旦给定SA赋值以后, Q、 NSW和V的赋值只有一个选择。

因此, 应当选择合法取值最少的变量, 即最少剩余值(MRV)启发式,也称为最受约束变量启发式或失败优先启发式。

为失败优先启发式是因为它可以很快找到失败的变量, 从而引起搜索的剪枝, 避免更多导致同样失败的搜索。

最少约束值启发式

最少约束值启发式: 当赋值的变量有多个值选择时, 优先的值应是约束图中排除邻居变量的可选值最少的, 即优先选择为剩余变量的赋值留下最多选择的赋值

例如, WA=red且NT=green时, 如果给Q赋值, 可以为blue或red, 而Q=blue的选择不好, 因为此时SA没有一个可选择的了。所以应该让Q=red,使得SA留下他最多的选择。

度启发式

度启发式: 选择涉及对其他未赋值变量的约束数量大(与其他变量关联最多) 的变量。

– 地图染色例子中, 度(SA)=5, 其他均为2或3。

– 实际上, 一旦选择了SA作为初始节点, 应用度启发式求解本问题, 则可以不经任何回溯就找到解。

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

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

相关文章

【Java EE初阶五】wait及notify关键字

1. wait和notify的概念 所谓的wait和notify其实就是等待、通知机制;该机制的作用域join类似;由于多个线程之间是随机调度的,引入wait和notify就是为了能够从应用层面上,干预到多个不同线程代码的执行顺序,此处的干预&a…

进程等待(wait和wait函数)【Linux】

进程等待 wait和wait函数【Linux】 进程等待的概念进程等待的必要性进程等待的方法wait函数waitpid函数 非阻塞等待和阻塞等待的对比阻塞等待:非阻塞等待 进程等待的概念 进程等待就是通过 wait/waitpid的方式,让父进程对子进程进行等待子进程退出并且将…

Planarized sentence representation for nested named entity recognition

原文链接: https://www.sciencedirect.com/science/article/pii/S0306457323000894?via%3Dihub Information Processing & Management 2023 介绍 问题 可以通过枚举span的方法来解决嵌套实体,然而目前的模型忽略了span之间的语义依赖关系&#xff…

2023我的编程之旅-地质人的山和水

引言 大家好,我是搞地质的。外行人有的说我们游山玩水,有的说我们灰头土脸,也有的说我们不是科学。 而我说,这是一门穷极一生青春,值得奉献的行业。这是一门贴近民生,又拥抱自然的学科。他的真理性在于探…

长见识!!!Java中除了消息队列之外,竟然还能这样实现异步任务

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

java进阶四-深入理解泛型和注解

泛型和注解是框架技术必备的技能 5 泛型5.1泛型理解5.1.1 泛型概念5.1.2 泛型的特点5.1.3 如何理解Java中的泛型是伪泛型?5.1.4 泛型的价值 5.2 泛型语法5.2.1 泛型类5.2.2 泛型接口3.2.3 泛型方法3.2.4泛型的上下边界3.2.5创建泛型数组 5.3泛型应用场景5.3.1数据库…

SQL Server注入之攻防技战法

那天下着很大的雨,母亲从城里走回来的时候,浑身就是一个泥人,那一刻我就知道我没有别的选择了 1.Mssql报错注入 0.判断数据库类型 1.爆当前用户名 2.爆版本 3.爆服务器名 4.判断数据库个数 5.获取全部数据库 语句只适合>2005 爆当前数据…

Windows下Jenkins自动化部署SpringBoot应用

Windows下Jenkins自动化部署SpringBoot应用 1、下载安装包 下载地址: 一个是 msi 程序: https://mirrors.aliyun.com/jenkins/windows/ 一个是 war 程序: https://get.jenkins.io/war-stable/ https://mirrors.jenkins.io/war/ 这里我…

机器人动力学一些笔记

动力学方程中,Q和q的关系(Q是sita) Q其实是一个向量,q(Q1,Q2,Q3,Q4,Q5,Q6)(假如6个关节) https://zhuanlan.zhihu.com/p/25789930 举个浅显易懂的例子,你在房…

GO语言笔记1-安装与hello world

SDK开发工具包下载 Go语言官网地址:golang.org,无法访问Golang中文社区:首页 - Go语言中文网 - Golang中文社区下载地址:Go下载 - Go语言中文网 - Golang中文社区 尽量去下载稳定版本,根据使用系统下载压缩包格式的安装…

西北工业大学计算机组成原理实验报告——verilog前两次

说明 为了有较好的可读性,报告仅仅粘贴关键代码。该PDF带有大纲功能,点击大纲中的对应标题,可以快速跳转。 实验目标 掌握单周期CPU执行指令的流程和原理;学习使用verilog HDL语言实现单周期CPU, 并通过功能仿真;提…

【教学类-43-14】 20240103 (4宫格数独:正确版:576套) 不重复的基础模板数量:576套

作品展示::——4宫格 576套不重复模板(48页*12套题) 背景需求: 生成4宫格基础模板768套,观看64页内容时,明显看到有错误 【教学类-43-13】 20240103 (4宫格数独:错误版…