第四节最小树问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定理6.4.4 设T是G的支撑树,则T是G的唯一最小树当且仅
当对任意边e∈T ,e是Ω(e)中的唯一最小边。
Kruskal算法的步骤
第1步 开始把边按权的大小由小到大排列,即将图Fra Baidu bibliotek 边排序为a1,a2, …,am,使W(a1) ≤W(a2)≤…≤W(am) 置 S=Φ,i=0,j=1。
第2步 若|S|=i=n-1,则停止。这时G[S]=T即为所求; 否则,转向第3步。
j
}
wik
,置T
=T
U {eik } ,
R = R U{k} , S = S \ {k} ;
第3步
若 S = Φ ,则停止;否则,置
uk
=
min{u jS
j
,w
kj
},
j S ,返回第 2 步。

Dijkstra算法的复杂性
执行第2步时,第一次是(n-2)次比较, 第二次为(n-3)次比较, 第三次为(n-4)次比较,…, 因此总的比较为(n-1)(n-2)/2次
在第3步中,判定加边后是否构成回路总共约需m次 比较,而加边后点的重新标号最多需n(n-1)次比较
所以,总的计算量为 mlog2m+n+m+n(n-1)~O(n2log2n)
Dijkstra算法的步骤
第1步 置uj=w1j,T=Φ,R={1},S={2,3, …,n}
第2步
取 uk
min{u jS
证明
W (e) max W (e) eC ( e )
最小树及其性质 续
定理 6.4.2 设 T 是 G 的支撑树,则 T 是 G 的最小树当 且仅当对任意边 eT 有
W (e) min W (e) eΩ ( e )
其中 Ω(e) T * + e 为一个唯一割集。
证明 定理6.4.3 设T是G的支撑树,则T是G的唯一最小树当且仅 当对任意边e∈G\T,e是C(e)中的唯一最大边。
第四节 最小树问题
最小树及其性质 求最小树的Kruskal算法
算法步骤 算法复杂性
求最小树的Dijkstra算法
算法步骤 算法复杂性
最小树及其性质
支撑树T的权(或长):W (T ) W (e) eE
最小树:G中权最小的支撑树
定理6.4.1 设T是G的一个支撑树,则T是G的最小树 当且仅当对任意边e∈T*有
第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步时,第一次是(n-2)次比较, 第二次为(n-3)次比较, 第三次为(n-4)次比较,…, 因此总的比较为(n-1)(n-2)次
所以,总的计算量约为O(n2)
相关文档
最新文档