《计算机仿真》期末大作业
实现算法的
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
已经加入
最小生成树中;表示顶点顶点的最短边的权值,