70 likes | 218 Views
第四节 最小树问题. 最小树及其性质 求最小树的 Kruskal 算法 算法步骤 算法复杂性 求最小树的 Dijkstra 算法 算法步骤 算法复杂性. 证明. 最小树及其性质. 支撑树 T 的权(或长) : 最小树 : G 中权最小的支撑树 定理 6.4.1 设 T 是 G 的一个支撑树,则 T 是 G 的最小树当且仅当对任意边 e ∈ T * 有. 证明. 最小树及其性质. 续. 定理 6.4.3 设 T 是 G 的支撑树,则 T 是 G 的唯一最小树当且仅当对任意边 e ∈ G T , e 是 C ( e ) 中的唯一最大边。
E N D
第四节 最小树问题 最小树及其性质 求最小树的Kruskal算法 算法步骤 算法复杂性 求最小树的Dijkstra算法 算法步骤 算法复杂性
证明 最小树及其性质 支撑树T的权(或长): 最小树:G中权最小的支撑树 定理6.4.1设T是G的一个支撑树,则T是G的最小树当且仅当对任意边e∈T*有
证明 最小树及其性质 续 定理6.4.3设T是G的支撑树,则T是G的唯一最小树当且仅当对任意边e∈G\T,e是C(e)中的唯一最大边。 定理6.4.4设T是G的支撑树,则T是G的唯一最小树当且仅当对任意边e∈T,e是Ω(e)中的唯一最小边。
例 Kruskal算法的步骤 第1步 开始把边按权的大小由小到大排列,即将图的边排序为a1,a2, …,am,使W(a1) ≤W(a2)≤…≤W(am) 置S=Φ,i=0,j=1。 第2步 若|S|=i=n-1,则停止。这时G[S]=T即为所求;否则,转向第3步。 第3步 若G[S∪{aj}]不构成回路,则置ei+1=aj,S=S∪{ei+1},i:=i+1,j:=j+1,转向第2步;否则,置j:=j+1,转向第2步。
Kruskal算法的复杂性 首先,在第1步中把边按权的大小由小到大排列起来,这约需mlog2m次比较(m为此网络的边数) 其次,第2步最多循环n次 在第3步中,判定加边后是否构成回路总共约需m次比较,而加边后点的重新标号最多需n(n-1)次比较 所以,总的计算量为 mlog2m+n+m+n(n-1)~O(n2log2n)
例 Dijkstra算法的步骤 第1步 置uj=w1j,T=Φ,R={1},S={2,3, …,n}
Dijkstra算法的复杂性 执行第2步时,第一次是(n-2)次比较, 第二次为(n-3)次比较, 第三次为(n-4)次比较,…, 因此总的比较为(n-1)(n-2)/2次 执行第3步时,第一次是(n-2)次比较, 第二次为(n-3)次比较, 第三次为(n-4)次比较,…, 因此总的比较为(n-1)(n-2)次 所以,总的计算量约为O(n2)