通信网第二章(一)——最短主树(P算法、K算法、破圈法、穷举法、调整法)

无限制条件:

(1)P算法            (2)K算法        (3)破圈法

有限制条件:

(1)穷举法(可用置换法)                     (2)调整法(可用E-W算法)

(1)P算法

顺序取端的谱列姆(Prim)算法,简称P算法

P0:起始,置邻接阵为全零阵。任取一端Vj1 ,作子图G1={Vj1}。比较G1到G-G1中各边长度,取最小的。把所连接端Vj2并入G1得 G1 ={Vj1,Vj2}     

示例

依算法可顺序得:

G1={v1}

G2={v1,v2}                         d12最小

G3={v1,v2,v5}                    d25最小

G4={v1,v2,v5,v4}               d54最小

G5={v1,v2,v5,v4,v3}          d23最小      

通信网第二章(一)——最短主树(P算法、K算法、破圈法、穷举法、调整法)_第1张图片

邻接阵:

     通信网第二章(一)——最短主树(P算法、K算法、破圈法、穷举法、调整法)_第2张图片

树枝总长为:d12+ d25 + d54 + d23=8

 

P算法复杂性

从算法开始到终止共进行n-1步,每步须从r个Gr中的端与n-r个G-Gr中的端间的距离进行比较,求出最小者, Gr和G-Gr最多有r(n-r)条边,可见第r步中最多要作r(n-r)-1次比较,由此得到P算法的计算量为:

通信网第二章(一)——最短主树(P算法、K算法、破圈法、穷举法、调整法)_第3张图片

这是n3的量级。

P算法中的比较是有重复的,若每次比较结果都记下来,则比较次数可降到至n2级,不过,算法将比较复杂

无论是n3还是n2,复杂性都属于多项式型,即当n很大的时候,一般均可借助于计算机来实现。

 

(2)K算法

K算法:即顺序取边的克鲁斯格尔(Kruskal)算法

K0:起始,邻接阵C为全零。把所有边按长度排成有序的队列,取最短边dij,与相关联的端构成子图G1={vi,vj} ,并在边的队列中删去这条边,置cij=cji=1。

K1:设已取r条边、r+1个端所构成的子图Gr,在所剩的边队列中取最短边,检查加上这条边后是否有环,也就是这边的两端是否已在Gr中。若有环,删去这条边,继续取最短的,直到不形成环。

设此时所取的边长为drk,则得Gr+1=Gr∪{vr,vk},置crk=ckr=1。

K2:若r

通信网第二章(一)——最短主树(P算法、K算法、破圈法、穷举法、调整法)_第4张图片

K算法的复杂性分析

K算法的时间复杂度由排序算法决定,若采用快排则时间复杂度为O(n log n)

如:对于n个端的图,最大边数是(n(n-1) )/2,则复杂性可以为n2long2n量级,是多项式型的,这里忽略了检查是否形成环的计算量,可证明这个量的量级低于n2long2n,当n大时可以不计。(参照《图论与网络流理论》P21)

 

(3)破圈法

从联结图中寻找圈,然后在圈中删去权值最大边,最后剩下的无圈联结图为最短主树。其步骤如下:

Q0:设G(k)是G的联结子图,G(0)=G;

Q1:若G(k)中包含圈,设m是G(k)中的一个圈,取m上的一条权最大的边e(k),令G(k+1)=G(k)-e(k);

Q2:若G(k)中不再含圈(即上述Q1步中的G(k+1)不再含圈),则它是最短主树,算法终止;否则,重复Q1。

 

评价:

1P(Prim)算法就是顺序取端(point),K算法就是顺序取边(edge),注意都不能成圈

2边数较多就用P算法,端数较多就用K算法

3走在行业的前面真好,这些东西真的简单,可是发现的人却能以他们明名

你可能感兴趣的:(通信网)