matlab练习程序(Prim最小生成树)
2013-04-10 13:38
337 查看
算法步骤:
1.任意找一顶点加入树中。
2.寻找所有与树相邻的元素,并取其边权重最小的并且不在树中的元素入树。
3.继续第二步,直到所有元素都入树。
效果和Kruskal算法是类似的。
matlab代码:
main.m
biaoji.m
1.任意找一顶点加入树中。
2.寻找所有与树相邻的元素,并取其边权重最小的并且不在树中的元素入树。
3.继续第二步,直到所有元素都入树。
效果和Kruskal算法是类似的。
matlab代码:
main.m
clear all; close all; clc; G=[0 4 0 0 0 0 0 8 0; 4 0 8 0 0 0 0 11 0; 0 8 0 7 0 4 0 0 2; 0 0 7 0 9 14 0 0 0; 0 0 0 9 0 10 0 0 0; 0 0 4 14 10 0 2 0 0; 0 0 0 0 0 2 0 1 6; 8 11 0 0 0 0 1 0 7; 0 0 2 0 0 0 6 7 0]; [m n]=size(G); q=[1]; %已经被标记的元素 k=1; %已经标记的元素个数 A=[]; %最后产生的最小生成树 while length(q)~=m e=[]; for i=1:k for j=1:n if G(q(i),j)~=0 && ~biaoji(j,q) %不在数中的元素 e=[e;G(q(i),j) q(i) j]; end end end [junk index]=min(e(:,1)); %求与当前标记的所有元素相邻的权重最小的边的索引 A=[A;e(index,:)]; %最小生成树的三元组表示 q=[q e(index,3)]; k=k+1; end
biaoji.m
function re=biaoji(j,biao) %判断j点是否已被标记 l=length(biao); for i=1:l if j==biao(i) re=1; return; end end re=0; return; end
相关文章推荐
- matlab练习程序(Kruskal最小生成树)
- matlab练习程序(线性分类器<最小二乘>)
- 图结构练习——最小生成树-prim
- matlab练习程序(生成高斯图像)
- matlab练习程序(矩阵生成无向网络图)
- matlab练习程序(最大流/最小割)
- matlab练习程序(生成希尔伯特曲线)
- matlab练习程序(矩阵生成有向网络图)
- matlab练习程序(Ritter‘s最小包围圆)
- poj 1258 小白算法练习 Agri-Net 最小生成树 prim kruskal
- 牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第四场)A.石油采集(dfs) B.道路建设(最小生成树prim) C.求交集(暴力) F.Call to your teacher(迪杰斯特拉乱用) H.老子的全排列呢(dfs)
- matlab练习程序(生成多维高斯分布概率密度函数)
- 手写matlab的prim最小生成树(注释很详细)
- 数学建模(14)——MATLAB实现最小生成树(Prim与Kruskal算法)
- matlab练习程序(生成黑白网格)
- matlab练习程序(最小包围矩形)
- 算法练习,最小生成树的prim,kruskal算法
- 小白算法练习 安慰奶牛 最小生成树 lanqiao prim
- matlab练习程序(最小二乘多项式拟合)
- MATLAB - 练习程序,求灰度图像均值、最大、最小数值