Depth-First深度优先、Breadth-First广度优先、Iterative Deepening迭代深入、Uniform Cost代价一致搜索算法的规则及基于n叉树的时间复杂度空间复杂度比较

本文主要是介绍Depth-First深度优先、Breadth-First广度优先、Iterative Deepening迭代深入、Uniform Cost代价一致搜索算法的规则及基于n叉树的时间复杂度空间复杂度比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Depth-First深度优先、Breadth-First广度优先、Iterative Deepening迭代深入、Uniform Cost代价一致搜索算法

分为两部分介绍:

  1. 四种算法的遍历规则
  2. 基于n叉树的时间复杂度与空间复杂度比较
四种算法的遍历规则

使用下图案例来比较四种算法的遍历规则:
在这里插入图片描述

1. Depth-First Search 深度优先算法

策略:优先遍历最深节点
实现:存贮邻接点使用LIFO stack后进先出的栈

2. Breadth-First Search 广度优先算法

策略:优先遍历最浅的一层节点,从上自下,一层层遍历
实现:存贮邻接点使用FIFO queue先入先出数列

在这里插入图片描述在这里插入图片描述
3. Iterative Deepening迭代加深算法

限制一个深度d1用深度优先算法遍历,如果没有目标
限制一个深度d2用深度优先算法遍历,如果没有目标
限制一个深度d3…

在这里插入图片描述在这里插入图片描述
4. Uniform Cost Search代价一致算法

策略:确定邻接节点的集合,从中选取,优先添加花费最小的节点(注意图三优先选取邻接节点中最小的e,即使目标节点已经邻接表中,图四不同颜色表示邻接节点集合范围)
实现:存贮邻接点使用Priority queue优先级数列(优先级为:累计成本)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
基于n叉树的时间复杂度与空间复杂度比较

用下图b叉树来比较四种算法的时间复杂度与空间复杂度(b是子节点个数,m是b叉树的层数,总的节点数: 1 + b + b 2 1+b+b^2 1+b+b2+… + b m +b^m +bm = O ( b m ) =O(b^m) =O(bm)
在这里插入图片描述

1. Depth-First Search 深度优先算法

时间复杂度:O( b m b^m bm),考虑最坏情况目标在树的右下角,所以需要遍历所有节点
在这里插入图片描述
空间复杂度:O(bm),空间复杂度也就是存贮邻接点的大小,LIFO stack后进先出的栈的容量,考虑最坏情况如图遍历到m层每一层需要存贮相邻的b个节点,故节点个数为bm
在这里插入图片描述

2. Breadth-First Search 广度优先算法

时间复杂度: O ( b s ) O(b^s) O(bs),引入新变量s,即达到目标的最浅层数,故时间复杂度为遍历目标节点前的所有节点 b s b^s bs
在这里插入图片描述
空间复杂度: O ( b s ) O(b^s) O(bs),邻接节点即每一层,考虑最坏情况在s层时,节点个数为 b s b^s bs
在这里插入图片描述

3. Iterative Deepening迭代加深算法

时间复杂度:O ( b s ) (b^s) (bs),同广度优先算法
空间复杂度: O ( b ∗ s ) O(b*s) O(bs),同深度优先算法,但最差情况由第m层变为找到目标的s层
同时汲取了深度优先算法的空间复杂度优势,及广度优先算法的时间shallow-solution较浅情况优势
在这里插入图片描述

4. Uniform Cost Search代价一致算法

时间复杂度:在这里插入图片描述,C是代价, C ∗ C* C是代价的最优值, ϵ \epsilon ϵ指每一步代价至少为,有效深度(effective depth)大约为层C*/ ϵ \epsilon ϵ
空间复杂度:在这里插入图片描述

在这里插入图片描述在这里插入图片描述

这篇关于Depth-First深度优先、Breadth-First广度优先、Iterative Deepening迭代深入、Uniform Cost代价一致搜索算法的规则及基于n叉树的时间复杂度空间复杂度比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/270551

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

hdu1180(广搜+优先队列)

此题要求最少到达目标点T的最短时间,所以我选择了广度优先搜索,并且要用到优先队列。 另外此题注意点较多,比如说可以在某个点停留,我wa了好多两次,就是因为忽略了这一点,然后参考了大神的思想,然后经过反复修改才AC的 这是我的代码 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG