回溯法与分枝—限界法的区别以及分支限界法分类以及LC学习

简介: 回溯法与分枝—限界法的区别以及分支限界法分类以及LC学习

区别


首先理解什么是状态空间树。

状态空间树:是指解空间的树结构

在状态空间树生成过程中有3类结点:活结点、E-结点、死结点

回溯法与分支限界法的区别主要在于:构造状态空间树的过程不一样。

回溯法是利用深度优先搜索构造,分支限界法是用广度优先搜索构造。

1685019353112.jpg


分类


接下来了解分支限界法。

可以利用队列或栈来导出分支限界法,所以依次分支限界法可以分为FIFO(队列)检索、LIFO(栈)检索

但两种扩充结点的方法过于呆板,导致偏向于正确答案的结点没有优先权。

分支限界法是扩展完一个E-结点所有儿子后再找一个结点作为E-结点扩展,上面两种扩展过于呆板,那是不是可以选择代价最小的结点的作为下一个E-结点进行拓展?

可以,这就是LC(least cost )检索的分支限界法。


LC分支限界法


LC分支限界法:选用一个成本函数C来标识结点成本,选择最小代价结点作为下一个E-结点:初始:C定义为结点x到目标答案结点的步数,但这个问题是要已知目标答案,所以不能这么精确.然后用g’来估计x到答案结点的代价,但是又会造成纵深检索;最后引入h函数表示根结点到x结点的位置减少纵深检索。

C’=f(h(x))+g’(x)

LC检索分支限界法流程:

1685019374623.jpg

当有多个答案是是否LC算法能够最小成本答案?

否,除非保证C(X)<C(Y),有C’(X)<C’(Y),或者保证C’(X)<=C(X)而且对答案结点有两种成本函数相等。


LC分支限界法应用


1. 15迷问题

1685019388939.jpg

首先先判断是否可达!

首先按照目标状态给棋盘方格编号,得出position(i)代表初始状态下标号i所在位置的棋盘编号,空格位置用16代替。

记录less(i)函数(编号比i小但是初始位置在position(i)之后的数字数目)

若less(i)累加+x(空格是否在偶数位(不考虑目标状态的偶数位),偶1,奇0)为偶数,可达!


LC算法:g’(x):该结点与目标状态的差距=不在其目标位置的非空白牌数目(精髓)


成本函数的上界的作用和定义:求答案的最小成本,过滤,初始为无穷


2.带期限的作业排序问题

1685019398350.jpg

按编号选取作业

g’(x)为已经考虑过但不在j集合的罚款数目

这里c’=g’.

1685019410952.jpg

相关文章
|
存储 缓存 NoSQL
MySQL索引详解(一文搞懂)
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
49898 17
MySQL索引详解(一文搞懂)
|
3月前
|
机器学习/深度学习 分布式计算 算法
规则引擎开发现在已经演化成算法引擎了
规则引擎是一种基于专家知识的程序,用于解决复杂决策问题。它通过条件与动作的匹配,实现自动化判断,广泛应用于金融、电商等领域。核心功能包括规则管理、推理算法(如Rete算法)及决策模型,如DMN标准,提升了建模能力与执行效率。
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇——3D生成技术
在Python中,人工智能(AI)与3D生成技术的结合可以体现在多个方面,比如使用AI算法来优化3D模型的生成、通过机器学习来预测3D模型的属性,或者利用深度学习来生成全新的3D内容。然而,直接通过AI生成完整的3D模型(如从文本描述中生成)仍然是一个活跃的研究领域。 3D生成技术是一种通过计算机程序从二维图像或文本描述自动创建三维模型的过程。这一技术在近年来得到了飞速的发展,不仅为游戏、动画和影视行业带来了革命性的变革,还在虚拟现实、增强现实以及工业设计等多个领域展现出了巨大的应用潜力
420 2
|
数据采集 监控 数据库
爬虫技术详解:从原理到实践
本文详细介绍了爬虫技术,从基本概念到实际操作,涵盖爬虫定义、工作流程及Python实现方法。通过使用`requests`和`BeautifulSoup`库,演示了如何发送请求、解析响应、提取和保存数据,适合初学者学习。强调了遵守法律法规的重要性。
4181 4
|
存储 Java 索引
Java LinkedList详解
`LinkedList`是Java集合框架中的一个重要类,实现了`List`、`Deque`和`Cloneable`接口。它基于双向链表,支持动态扩展,允许重复元素。虽然通过索引访问元素的时间复杂度为O(n),但在插入和删除操作上表现优异,时间复杂度为O(1)。常用操作包括创建、添加、获取、删除和查找元素,以及使用迭代器遍历。适用于频繁插入和删除的场景,如队列和栈的实现。
461 6
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
这篇文章提供了在VScode中设置背景图的详细步骤,包括下载background插件、编辑setting.json文件、配置背景样式,并解决了设置后出现的不支持提示的问题。
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
|
运维 关系型数据库 网络安全
宝塔面板忘记了登录用户名密码怎么办?
当忘记宝塔面板的用户名或密码,可通过以下方法解决: 1. 登录后台修改:访问面板设置-&gt;面板用户,输入新用户名和密码。 2. 使用SSH连接服务器,输入`bt`命令选择相应选项(5修改密码,6修改用户名)。 3. Windows用户可在CMD输入`bt`同样操作。
1513 0
 宝塔面板忘记了登录用户名密码怎么办?
|
负载均衡 Java 应用服务中间件
Gateway服务网关
本节针对微服务中另一重要组件:网关 进行了实战性演练,网关作为分布式架构中的重要中间件,不仅承担着路由分发(重点关注Path规则配置),同时可根据自身负载均衡策略,对多个注册服务实例进行均衡调用。本节我们借助GateWay实现的网关只是技术实现的方案之一,后续大家可能会接触像:Zuul、Kong等,其实现细节或有差异,但整体目标是一致的。
如何做好技术选型
在软件开发领域,几乎每天都有新的技术框架诞生、更新,一些新的概念更是层出不穷,技术选型时,难免让人无从抉择。对于技术选型,我个人有以下几点建议。
2085 0