热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

【算法】【殊途同归】搜索算法之(深度优先||广度优先)(约束条件||限界函数)

对于所谓的分支限界法和回溯法,我们完全可以更加灵活,请看表格。深度优先广度优先约束条件限界函数算法策略√√回溯法局部判定√√√分支限界法局部判定√√√

对于所谓的分支限界法回溯法,我们完全可以更加灵活,请看表格。


深度优先广度优先约束条件限界函数算法策略
回溯法局部判定
分支限界法局部判定
加限界的回溯法局部判定
枚举法全局判定
枚举法全局判定

前两种是我们常见的,但是,事实上,这几种方式, 怎么玩都行,看实际需求了。

一般来说,剪枝策略使用 约束条件 + 限界函数,然后再配合深度优先或者广度优先,是最好不过的了,也就是后两种

这样一来,能够尽可能地剪枝,以提高搜索效率。

而最后两种枚举法,则没有剪枝策略,是一种全局判定方式,是最低效的。

总之,这三种常见的搜索算法,无非就是


  • 枚举策略
    • 深度优先
    • 广度优先
  • 剪枝策略
    • 约束条件
    • 限界函数

枚举策略剪枝策略
深度优先约束条件
广度优先限界函数

其中,枚举策略有且仅有一种,剪枝策略则随意,然后就有了经典的枚举法(蛮力法)、回溯法和分支限界法。


搜索算法的学习策略

已经显而易见了,这4种方式,单独学明白,懂逻辑,会实现,然后再组合起来使用就OK了。


预测思想:限界函数

限界函数是通过对子树未来的上界/下界的预测,来评定是否需要继续生成,方法就是按照平均值排序后,乘以剩余容量。

具体实例可以参考


  1. 0/1 knapsack problem using branch and bound

  2. 分支限界法-01背包问题


限界函数和约束条件的目标


  1. 约束条件,是为了去掉不可行解,从而进行剪枝
  2. 限界函数,是为了去掉非最优解,从而剪枝,但是它依然是可行解

在这里插入图片描述

明确了这两个目标,就能够更加针对性选择了,如果题目求多个可行解,那么就不可能使用限界函数。


推荐阅读
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 精选商业地产管理系统推荐
    对于商业地产物业管理者而言,在挑选合适的管理系统时,应综合考量系统功能、服务质量、服务商规模及已有客户案例等因素。本文将为您详细介绍如何做出明智的选择。 ... [详细]
  • LeetCode 104. 二叉树的最大深度 - 深度优先与广度优先策略
    本题探讨了如何通过深度优先搜索(DFS)和广度优先搜索(BFS)两种算法策略来求解二叉树的最大深度问题。二叉树的最大深度定义为从根节点到最远叶子节点的最长路径上的节点数目。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • Web开发实践:创建连连看小游戏
    本文详细介绍了如何在Web环境中开发一款连连看小游戏,适合初学者和技术爱好者参考。通过本文,您将了解游戏的基本结构、连线算法以及实现方法。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
author-avatar
点燃半吱煙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有