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

图以节点列表表示时的BFS时间复杂度咨询

广度优先搜索(BFS)的时间复杂度分析

首先直接给出结论:不能把邻接表(即你所说的“节点列表+每个节点带邻居列表”)存储下的BFS时间复杂度表述为O(E * Neighbors),这个说法是不准确的。

关键解释:

  • 邻接表结构下,BFS的正确时间复杂度是O(V + E),其中V是节点总数,E是图中边的总数。
  • 你提到的Neighbors是单个节点的最大邻居数,而整个图的边数E本身就是所有节点邻居列表的长度之和。比如你给出的示例(修正笔误后应为[Node0{[1, 2]}, Node1{[2]}, Node2{[3]}, Node3{[]}]),总边数E=2+1+1+0=4。
  • 若写成O(E * Neighbors),会错误地高估复杂度:假设所有节点的邻居数上限为k(即Neighbors=k),那么E最多为Vk,此时O(Ek)就变成O(Vk²),但实际BFS的时间复杂度仅为O(V + E)=O(V + Vk)=O(V*k),二者量级完全不同。

从执行过程看时间消耗:

  • 每个节点只会被入队和出队一次,这部分操作的总时间是O(V)。
  • 每条边只会被遍历一次(无向图中每条边会出现在两个节点的邻居列表里,总遍历次数是2E,仍属于O(E)量级),这部分操作的总时间是O(E)。
  • 两者相加,总时间复杂度就是O(V + E),这才是邻接表存储下BFS的准确复杂度。

内容的提问来源于stack exchange,提问作者Oleksiy Druzhynin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:45:01