热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

搜索技术【广度优先搜索】简介分支限界法

搜索技术【广度优先搜索】-简介&分支限界法【简介】在图的应用中已讲过图的广度优先搜索,树上的广度优先搜索实际上就是层次遍历。首先遍历第1层,然后第



搜索技术【广度优先搜索】 - 简介 & 分支限界法

【简介】

在图的应用中已讲过图的广度优先搜索,树上的广度优先搜索实际上就是层次遍历。

首先遍历第1层,然后第2层……同一层按照从左向右的顺序访问,直到最后一层。一棵树如下图所示,

在这里插入图片描述

首先遍历第1层A;然后遍历第2层,从左向右遍历B、C;再遍历第3层,从左向右遍历D、E、F;再遍历第4层G。

【分支限界法】

分支限界法通常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。

首先将根节点加入活节点表中,接着从活节点表中取出根节点,使其成为当前扩展节点,一次性生成其所有孩子节点,判断对孩子节点是舍弃还是保留,舍弃那些得不到可行解或最优解的节点,将其余节点保留在活节点表中。再从活节点表中取出一个活节点作为当前扩展节点。重复上述过程,直到找到所需的解或活节点表为空时为止。每一个活节点最多只有一次机会成为扩展节点。活节点表的实现通常有两种形式:一种是普通的队列,即先进先出队列;另一种是优先级队列,按照某种优先级决定哪个节点为当前扩展节点。

根据活节点表的不同,分支限界法分为以下两种:队列式分支限界法和优先队列式分支限界法。

[解题秘籍]

① 定义解空间。

解空间的大小对搜索效率有很大的影响,首先要定义合适的解空间,确定解空间包括解的组织形式和显约束。解的组织形式规范为一个n 元组{x 1 ,x 2 ,…,xn },具体问题表达的含义不同。显约束是对解分量的取值范围的限定。

② 确定解空间的组织结构。

对解空间的组织结构通常用解空间树形象地表达,根据解空间树的不同,解空间分为子集树、排列树、m叉树等。

③ 搜索解空间。

分支限界法指按照广度优先搜索策略,一次性生成所有孩子节点,根据约束函数和限界函数判定对孩子节点是舍弃还是保留,如果保留,则将其依次放入活节点表中,活节点表是普通队列或优先队列。然后从活节点表中取出一个节点,继续扩展,直到找到所需的解或活节点表为空时为止。如果对该问题只求可行解,则只需设定约束函数即可;如果求最优解,则需要设定约束函数和限界函数。在优先队列分支限界法中还有一个关键问题,即优先级的设定:选择什么值作为优先级?如何定义优先级?因为优先级的设计直接决定算法的效率。






推荐阅读
  • 广度优先遍历(BFS)算法的概述、代码实现和应用
    本文介绍了广度优先遍历(BFS)算法的概述、邻接矩阵和邻接表的代码实现,并讨论了BFS在求解最短路径或最短步数问题上的应用。以LeetCode中的934.最短的桥为例,详细阐述了BFS的具体思路和代码实现。最后,推荐了一些相关的BFS算法题目供大家练习。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 模块化区块链生态系统的优势概述及其应用案例
    本文介绍了相较于单体区块链,模块化区块链生态系统的优势,并以Celestia、Dymension和Fuel等模块化区块链项目为例,探讨了它们解决可扩展性和部署问题的方案。模块化区块链架构提高了区块链的可扩展性和吞吐量,并提供了跨链互操作性和主权可扩展性。开发人员可以根据需要选择执行环境,并获得奖学金支持。该文对模块化区块链的应用案例进行了介绍,展示了其在区块链领域的潜力和前景。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Linux内核那些事之连接跟踪
    “本文分析了Linux内核连接跟踪的关键实现”连接跟踪(也叫会话管理)是状态防火墙关键核心,也是很多网元设备必不可少的一部分。各厂商的实 ... [详细]
  • 谁说QLC闪存不堪大用!Intel 670p SSD深度揭秘
    ssd品牌众多,intel可以说是非常优秀的那一个,早些年的x25系列至今都是让人津津乐道的经典,不过近些年,intel固态存储的主要精力转向了企业、数据中心市场,消费级领域产品并 ... [详细]
  • 【图解HTTP】第一章 了解web及网络基础
    [图解HTTP]了解Web及网络基础Web页面是如何呈现的?根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源(resour ... [详细]
  • 运行机制_PHP 底层的运行机制与原理转
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP底层的运行机制与原理--转相关的知识,希望对你有一定的参考价值。发现一片总结的还不错的文 ... [详细]
  • webrtc学习笔记三:webrtc架构
    文章目录 ... [详细]
  • NLP自然语言处理中的单词,句子,经过各种处理编码,电脑识别到的还是一串数字,即一个有前后关系的时间序列。放到交通工程、土木 ... [详细]
author-avatar
wtc21232
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有