一、BFS的复杂度分析

BFS是一种借用队列来存储的过程,分层查找,优先考虑距离出发点近的点。无论是在邻接表还是邻接矩阵中存储,都需要借助一个辅助队列,v个顶点均需入队,最坏的情况下,空间复杂度为O(v)。

邻接表形式存储时,每个顶点均需搜索一次,时间复杂度T1=O(v),从一个顶点开始搜索时,开始搜索,访问未被访问过的节点。最坏的情况下,每个顶点至少访问一次,每条边至少访问1次,这是因为在搜索的过程中,若某结点向下搜索时,其子结点都访问过了,这时候就会回退,故时间复 杂度为O(E),算法总的时间复 度为O(|V|+|E|)。

邻接矩阵存储方式时,查找每个顶点的邻接点所需时间为O(V),即该节点所在的该行该列。又有n个顶点,故算总的时间复杂度为O(|V|^2)。

二、DFS复杂度分析

DFS算法是一一个递归算法,需要借助一个递归工作栈,故它的空问复杂度为O(V)。

遍历图的过程实质上是对每个顶点查找其邻接点的过程,其耗费的时间取决于所采用结构。

邻接表表示时,查找所有顶点的邻接点所需时间为O(E),访问顶点的邻接点所花时间为O(V),此时,总的时间复杂度为O(V+E)。

邻接矩阵表示时,查找每个顶点的邻接点所需时间为O(V),要查找整个矩阵,故总的时间度为O(V^2)。

v为图的顶点数,E为边数。

BFS、DFS复杂度分析(时间、空间)相关推荐

  1. 图之DFS与BFS的复杂度分析

    1. BFS的复杂度分析 vvv为图的顶点数,EEE为边数. BFS是一种借用队列来存储的过程,分层查找,优先考虑距离出发点近的点.无论是在邻接表还是邻接矩阵中存储,都需要借助一个辅助队列,vvv个顶 ...

  2. 代码复杂度分析——时间、空间复杂度

    最近练习算法题,又看了极客时间中的<数据结构与算法之美>写的真不错,于是总结一下关于复杂度的知识,代码和图片都是课程里面的.虽然是按课程写的,但是自己写一遍最好,否则看过就忘了. 数据结构 ...

  3. matlab 趋势分析,科学网—SEN趋势度分析及其MATLAB实现 - 杨建华的博文

    SEN趋势度分析及其MATLAB实现 一.博文概述 1.目的 学习理解SEN趋势度分析方法及其应用,并编写简易的SEN趋势度分析函数 2.时间 2016年12月24日 3.关键词 SEN趋势度分析   ...

  4. 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)

    前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...

  5. 算法笔记(一):复杂度分析:最好、最坏、平均、均摊

    数据结构指的是"一组数据的存储结构", 算法指的是"操作数据的一组方法". 数据结构是为算法服务的,算法是要作用再特定的数据结构上的. 效率和资源消耗的度量衡- ...

  6. 卷积神经网络的复杂度分析

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | Michael Yuan@知乎(已授权) 来源 | htt ...

  7. 数据结构:复杂度分析以及数据结构整体概览

    复杂度无非是空间,时间复杂度. 掌握了时间,空间复杂度的分析,基本算掌握了数据结构与算法的一半内容. 之所以引入这几个复杂度概念,是因为,同一段代码,在不同输入的情况下,复杂度量级有可能是不一样的. ...

  8. 算法录 之 复杂度分析。

    一个算法的复杂度可以说也就是一个算法的效率,一般来说分为时间复杂度和空间复杂度... 注意接下来说的均是比较YY的,适用与ACM等不需严格分析只需要大致范围的地方,至于严格的算法复杂度分析的那些数学证 ...

  9. 算法之如何进行算法复杂度分析

    一.什么是复杂度分析? 1.数据结构和算法解决是"如何让计算机更快时间.更省空间的解决问题". 2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能. 3.分别用时间复 ...

最新文章

  1. jsp error-page没有生效
  2. bit byte B KB Kbps KBps ps
  3. IOS成长之路-检测耳机插入/拔出
  4. mysql update 几万 非常慢_mysqL update 太慢,求解决方法
  5. 动态添加行 为元素解绑事件 delegate的解绑事件 off的解绑事件
  6. 文献记录(part47)--KU-HAR: An open dataset for heterogeneous human activity recognition
  7. 数据挖掘—K-中心点聚类算法(Java实现)
  8. Java中使用有返回值的线程
  9. 工作任务:解决双主控倒换时双机切换问题
  10. 技术博客2013年2月份头条记录
  11. ubuntu文字界面与图形界面切换
  12. RNA 22. SCI 文章中基于表达估计恶性肿瘤组织的基质细胞和免疫细胞(ESTIMATE)
  13. hustoj 服务器配置
  14. 彻底清除计算机磁盘上的病毒,电脑硬盘病毒无法彻底删除怎么办
  15. failed shard on node [XXX], failed recovery, failure RecoveryFailedException
  16. 互联网创业公司技术总监工作职责描述
  17. Windows 7精简版(2019.04.10)
  18. 东芝和摩飞多功能锅到底哪一款值得拔草呢?本篇深度评测让你剁手不后悔;
  19. 修練營ASP.NET]淺談多層式架構 (Multi Tiers)
  20. ECU安全访问系列_2(代码篇)

热门文章

  1. CentOS7安装 jq
  2. matplotlib绘制鼠标的十字光标(内置方式)
  3. 小坤二次元炫酷导航HTML源码
  4. Roson的Qt之旅#71 Qt绘制星空和旋转的星球
  5. ff14 掉线 服务器维护,《FF14》29日更新维护 暂不推出手工补丁
  6. UE4学习笔记--EQS系统
  7. windows批处理脚本bat命令解析【6】常用命令整理
  8. HDU-1253-胜利大逃亡
  9. 云服务器系统设计,云服务器 用户系统设计
  10. unity将遮挡人物的模型透明化_笔记