1
数学建模——
Matlab
中求解最小生成树
关键词:
Matlab
、最小生成树、破圈法、避圈法、运筹学
要求:选择一道编程题自己
独立完成
,必须自己编写源代码,不能从网上
下载。先编写算法的通用程序,然后以例子运行,论文内容包括
程序代码、程
序说明、
例子运行结果
,
最终程序文件连同论文一起发至
,
便于老师运行
程序是否正确。编程使用
C
或
MATLAB
。
选择题目:编写实现生成树、最小生成树的程序(包括避圈法、破圈法)
。
题目分析:
本题要求编写实现生成树、
最小生成树的程序,
首先来了解一下关于
关于生成树的概念:
1
、树的概念:
树是无向图的特殊情况,即对于一个
N
个节点的无向图,其中只有
N-1
条边,
且图中任意两点间有且只有一条路径,即图中不存在环,这样的图称为树。
2
、生成树的概念:
对于一个无向连通图
G=(V
,E)
,其中
V
代表顶点,
E
代表边,对它做一次遍历,
每个节点经过一次,那么图中的
N
个节点再加上遍历过程中经过的
N-1
条边所
构成的子图就是图
G
的一个生成树。
3
、最小生成树的概念:
对于一个无向连通图
G=(V
,E),
给它的每条边(
u,v
)赋一个权值
w(u,v)
。若图
G
的生成树不止一个,
那么其中包含的
N-1
条边的权值之和的最小的生成树就是图
G
的最小生成树。
4
、关于运筹学中最小生成树有
2
种不错的算法,即避圈法和破圈法,下面来看
一下求解最小生成树的算法:
先看一下图示法表示的最小生成树: