You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

邻接矩阵与邻接表存储下BFS和DFS的时间复杂度分析问询

BFS与DFS时间复杂度分析

我们先直接给出不同存储结构下的复杂度结论,再做简单解释:

  • 邻接矩阵存储
    • BFS时间复杂度:O(V²)
    • DFS时间复杂度:O(V²)
  • 邻接表存储
    • BFS时间复杂度:O(V+E)
    • DFS时间复杂度:O(V+E)

复杂度逻辑解释

两种算法的核心执行逻辑一致:每个顶点仅会被访问一次,每条边仅会被检查一次,最终复杂度由存储结构的特性决定:

  1. 邻接矩阵是V×V的二维数组,查询某个顶点的所有邻接顶点时,需要遍历该顶点对应的整行数组(长度固定为V,V是顶点总数),不管实际有多少条有效边。总遍历次数固定为V*V,因此不管BFS还是DFS复杂度都是平方级。
  2. 邻接表仅存储每个顶点实际存在的邻接边,所有顶点的访问开销总和为O(V),所有边的检查开销总和为O(E)(E是边总数),两者相加就是整体时间复杂度。

你之前认为的O(n)结论仅在稀疏图(边数和顶点数同阶,E≈V)且使用邻接表存储的场景下成立,此时O(V+E)可以简化为O(V)也就是你说的O(n),但该结论不具备通用性。

内容的提问来源于stack exchange,提问作者Andro Star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 14:30:01