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

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

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



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

【简介】

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

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

在这里插入图片描述

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

【分支限界法】

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

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

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

[解题秘籍]

① 定义解空间。

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

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

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

③ 搜索解空间。

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






推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • CSWS_E_ROB深度估计方法
    论文链接:https:arxiv.orgpdf1708.02287.pdf正文翻译概述……首先,我们把深度估计看做一种多类别的密集标记任务,然后与基于公式的 ... [详细]
  • 最近在看GitHub上的一个很火的项目是:ImageSharp。这是一个纯.netcore的图像处理库,没有使用其他的任何依赖。在看这个项目过程中激发了我对图像文件编码解码的兴趣。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 中文分词_中文分词技术小结几大分词引擎的介绍与比较
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了中文分词技术小结几大分词引擎的介绍与比较相关的知识,希望对你有一定的参考价值。笔者想说:觉得英文与中文分词有很大的区别, ... [详细]
  • 1网络设备驱动的结构Linux网络设备驱动程序体系结构如下图,从上到下依次划分为4层,依次为网路协议接口层、网络设备接口层,提供实际功能的设备驱动功能层以及网络设备与媒介层。 ... [详细]
  • 大数据环境下的存储系统构建:挑战、方法和趋势
    大数据环境下的存储系统构建:挑战、方法和趋势陈游旻,李飞,舒继武清华大学计算机科学与技术系,北京100084摘要:互联网规模的迅速扩展促使 ... [详细]
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社区 版权所有