这里有些伪代码(无视我的风格)
从v1开始(排队):

function BFS(queue Q)
  v2 = dequeue Q
  enqueue all unvisited connected nodes of v2 into Q
  BFS(Q)
end // maybe minor problems here

由于图中有V顶点,并且这些V顶点连接到E边,并且访问连接节点(相当于访问连接边)在内环中(外环是递归本身),在我看来,复杂性应该是O(v*e)而不是O(v+e)。有人能给我解释一下吗?

最佳答案

e不是每个顶点相邻的边的数目-它实际上是图中边的总数。用这种方式定义它很有用,因为不一定每个顶点上都有相同数量的边。
由于每个边沿在DFS结束时访问一次,所以从该部分得到O(E)复杂性。然后添加o(v)以访问每个顶点一次,得到o(v+e)。

10-06 12:42