
BFS是一种借助队列来存储的过程,分层查找,优先考虑距离出发点近的点。无论是在邻接表还是邻接矩阵中存储,都需要借助一个辅助队列,N个顶点均需入队,最坏的情况下,空间复杂度为O(N)O(N)O(N)。
邻接表形式存储时,每个顶点均需搜索一次,时间复杂度T1=O(N)T1=O(N)T1=O(N),从一个顶点开始搜索时,开始搜索,访问未被访问过的节点。最坏的情况下,每个顶点至少访问一次,每条边至少访问1次,这是因为在搜索的过程中,若某结点向下搜索时,其子结点都访问过了,这时候就会回退,故时间复 杂度为O(E)O(E)O(E),算法总的时间复 度为O(N+E)O(N+E)O(N+E)。
邻接矩阵存储方式时,查找每个顶点的邻接点所需时间为O(N)O(N)O(N),即该节点所在的该行该列。又有nnn个顶点,故算总的时间复杂度为O(N2)O(N^2)O(N2)。
BFS算法通过队列进行分层查找,空间复杂度在最坏情况下为O(N)。在邻接表中,时间复杂度为O(N+E),邻接矩阵中则为O(N^2)。

5497

被折叠的 条评论
为什么被折叠?



