目录

Section-2 MinimumSpanningTree 第2节 最小生成树 - OptimalRatioSpanningTree 最优比率生成树

优质
小牛编辑
134浏览
2023-12-01

问题

用广度优先搜索从图(G)的节点(beg)开始,遍历图(G)中的所有节点。

解法

在图(G)中,假设节点(i)的邻节点集合为(V_i),对于图中的任意节点(i),在访问节点(i)之后,总是优先访问该节点的邻节点集合(V_i)中的所有节点,然后才继续访问其他节点。

广度优先遍历需要一个队列(queue)来存储那些等待访问而尚未被访问的节点,在遍历过程中,为了避免重复的访问一个节点,当某个节点(i)加入(queue)时我们将其染成红色。下面演示从无向图(G)中的节点(0)开始进行广度优先搜索过程:

OptimalRatioSpanningTree 最优比率生成树 - 图1

((1))初始时从节点(0)开始,将它染红并加入(queue)中;

OptimalRatioSpanningTree 最优比率生成树 - 图2

((2))从(queue)中取出头节点(0)进行访问,然后考虑其未被染色的邻节点( {1, 4, 5} ),将( { 1, 4, 5 })节点染红并加入(queue)中;

OptimalRatioSpanningTree 最优比率生成树 - 图3

((3))从(queue)中取出头节点(1)进行访问,然后考虑其未被染色的邻节点( {2, 3} ),将( { 2, 3 } )节点染红并加入(queue)中;

OptimalRatioSpanningTree 最优比率生成树 - 图4

((4))从(queue)中取出头节点(4)进行访问,它没有未被染色的邻节点;

((5))从(queue)中取出头节点(5)进行访问,它没有未被染色的邻节点;

((6))从(queue)中取出头节点(2)进行访问,它没有未被染色的邻节点;

((7))从(queue)中取出头节点(3)进行访问,它没有未被染色的邻节点;

((8))队列(queue)为空,算法结束;

广度优先搜索的时间复杂度是(O(n))。




广度优先搜索: