mst算法matlab_Prim算法和Kruskal算法的Matlab实现

本文介绍了使用Matlab实现Prim和Kruskal算法来解决最小生成树问题,详细阐述了算法原理、程序流程,并通过具体实例验证了算法的正确性。此外,还探讨了算法的时间复杂度和优化策略。
摘要由CSDN通过智能技术生成

《计算机仿真》期末大作业

实现算法的

MatlabPrim

算法和

Kruskal

)

(

3005605

刘禹

050697

连线问题应用举例:

nj

C

i

,试设计个城市的高速公路,

若城与欲铺设连接城之间的高速公路造价为

ij

一个线路图,使总的造价最低。

Matlab

连线问题

的数学模型就是图论中在连通的赋权图上求权最小的支撑树。

试用

算法

(避圈法)

分别实现求

最小支撑数的

Prim

算法和

Krusal

.

基本要求:一

画出程序流程图;

(

1

)

对关键算法、变

量和步骤进行解释说明;

(

2

)用如下两图对所写算法的正确性进行验证。即输入图的信息,输

出对应图

(

3

)

的最小支撑树及其权值。

v

24

6

2

v

329

7

181

4

14

32

6

2

26

1

30

v

11419

vv

3

155

61

56

43

1620

v

5

v

448

5

7

4

(

4

)分析两种算法的实现复杂度。

.

扩展要求:

(

1

)提供对算法效率(复杂度)进行评估的方法,并通过举例验证,与分析得到的算法复杂度

结果相对照;

(

2

)从降低内存消耗、减少计算时间的角度,对算法进行优化。

三.实验步骤

I.

Prim

算法求最小生成树

i

.算法分析及需求分析,程序设计

prim

算法的基本思想是:设

G=

(

V

E

)是一个无向连通网,令

T=

(

U

TE

)是

G

最小生成树。

T

的初始状态为

U={v0}

(

v0

)

TE={}

,然后重复执行下述操作:在所有

uU

U=V

,直至

U

并入

v

,同时

TE

)并入集合

v

uv

的边中找一条代价最小的边(

V

-

U

为止。算法

的基本思想是以局部最优化谋求全局的最优化,

而且,

还涉及到起始显然,

Prim

结点的问题。

程序完成的功能是:从图中的任意结点出发,都能够找出最小生成树

实现方案分析:

1

/

14

k

中有。设当前

TPrim

算法的关键是如何找到连接

U

V

-

U

的最短边来扩充生成树

T

条,

uU

kvV

-

U

的顶点集个点(即

TU

中有

k

个顶点)则所有满足的边最多有性质,可以用下

述方法构造候选最

MST

从如此大的边集中选取最短边是不太经济的。

利用中的各顶点的最短边,

取候选边最短

U

小边集:对应

V

-

U

中的每个顶点,保留从该顶点到需设置两为表示候选最短边

集,中的

n

-

k

个顶点所关联的

n

-

k

条最短边的集合。边集为

V

-

U

中用来保存集合

V

-

U

中的各顶

点与集合

Ulowcost

个一维数组

lowcost[n]

adjvex[n]

,

其中用来保存依

adjvexv

已经加入

最小生成树中;表示顶点顶点的最短边的权值,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值