最小生成数 克鲁斯卡尔 普里姆 matlab
克鲁斯卡尔:
function T=MST_Kruskal(G)
n=0;
if isfield(G,'w') && ~isempty(G.w) && size(G.w,1)==size(G.w,2)
W=G.w;n=size(W,1);
end
if isfield(G,'e') && ~isempty(G.e) && size(G.e,2)==3
E=G.e; n=max(max(E(:,1:2));
elseif n==0
error('incorrect input argument');
else
E=[];
for i=1:n
for j=i+1:n
if W(i,j)~=0 && W(i,j)~=inf
E=[E; i j W(i,j)];
end
end
end
end T=[];
m=0;
C=1:n;
while m<n-1 && ~isempty(E)
e=E(:,3);
[minW, ind]=min(e);
v1=E(ind,1);
v2=E(ind,2);
if C(v1)~=C(v2)
T=[T; E(ind,:)];
m=m+1;
C(C==C(v2))=C(v1);
end
E(ind,:)=[];
end
普里姆:
function T=MST_Prim(G)
n=0;
if isfield(G,'w') && ~isempty(G.w) && size(G.w,1)==size(G.w,2)
W=G.w;n=size(W,1);
end
if isfield(G,'e') && ~isempty(G.e) && size(G.e,2)==3
E=G.e; n=max(max(E(:,1:2));
elseif n==0
error('incorrect input argument');
else
E=[];
for i=1:n
for j=i+1:n
if W(i,j)~=0 && W(i,j)~=inf
E=[E; i j W(i,j)];
end
end
end
end V=1:n;
U=[1]; V=setdiff(V,U);
T=[]; while length(U)<n
EUV=[];
for k=1:size(E,1)
if ismember(E(k,1), U) && ismember(E(k,2), U) || ~ismember(E(k,1), U) && ~ismember(E(k,2), U)
else
EUV=[EUV; E(k,:)];
end
end e=EUV(:,3);
[minW ind]=min(e);
v1=EUV(ind,1);
v2=EUV(ind,2);
if ismember(v1,U)
U=[U, v2];
else
U=[U, v1];
end
T=[T; v1 v2 minW];
end
最小生成数 克鲁斯卡尔 普里姆 matlab的更多相关文章
- hduoj-1301 Jungle Roads(最小生成树-克鲁斯卡尔和普里姆求解)
普里姆求解: #include<cstdio> #include<cmath> #include<cstring> #include<iostream> ...
- 最小生成树入门(克鲁斯卡尔+普利姆 hdu1233)
克鲁斯卡尔 #include <set> #include <map> #include <queue> #include <stack> #inclu ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 最小生成树---普里姆算法(Prim算法)和克鲁斯卡尔算法(Kruskal算法)
普里姆算法(Prim算法) #include<bits/stdc++.h> using namespace std; #define MAXVEX 100 #define INF 6553 ...
- 经典问题----最小生成树(prim普里姆贪心算法)
题目简述:假如有一个无向连通图,有n个顶点,有许多(带有权值即长度)边,让你用在其中选n-1条边把这n个顶点连起来,不漏掉任何一个点,然后这n-1条边的权值总和最小,就是最小生成树了,注意,不可绕成圈 ...
- 图解最小生成树 - 普里姆(Prim)算法
我们在图的定义中说过,带有权值的图就是网结构.一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边.所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接 ...
- 普里姆Prim算法介绍
普里姆(Prim)算法,和克鲁斯卡尔算法一样,是用来求加权连通图的最小生成树的算法. 基本思想 对于图G而言,V是所有顶点的集合:现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T ...
- JS实现最小生成树之普里姆(Prim)算法
最小生成树: 我们把构造连通网的最小代价生成树称为最小生成树.经典的算法有两种,普利姆算法和克鲁斯卡尔算法. 普里姆算法打印最小生成树: 先选择一个点,把该顶点的边加入数组,再按照权值最小的原则选边, ...
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
随机推荐
- Visual Studio使用阿里云Code Git服务器的常见问题
使用Github的服务器太慢,阿里的https://code.aliyun.com的国内服务器还是很快的.但是使用阿里的Git服务器总是有些地方出问题,现记录下常见的问题: 1.如提示源码已在TFS管 ...
- ZOJ 1203 Swordfish(Prim算法求解MST)
题目: There exists a world within our world A world beneath what we call cyberspace. A world protected ...
- mariadb(mysql)从库relaylog损坏无法同步的处理方法
故障说明 晚上备用服务器自动重启,收到报警,备用服务器上的mariadb从库无法去同步主库.启动mariadb后,报如下错误(重点看红色字体) mariadb_1 | -- :: [Note] Pl ...
- win10 uwp 让焦点在点击在页面空白处时回到textbox中
在网上 有一个大神问我这样的问题:在做UWP的项目,怎么能让焦点在点击在页面空白处时回到textbox中? 虽然我的小伙伴认为他这是一个 xy 问题,但是我还是回答他这个问题. 首先需要知道什么是空白 ...
- jQuery 效果 - 停止动画
jQuery 停止动画 jQuery stop() 方法用于在动画或效果完成前对它们进行停止. jQuery stop() 方法 jQuery stop() 方法用于停止动画或效果,在它们完成之前. ...
- ASP.NET jQuery 事件里调用后台方法
利用js 调用后台写的方法 <script src="js/jquery-1.7.1.min.js"></script> <script> $( ...
- JavaWeb项目WebContent下的资源文件无法引用
JavaWeb项目引用资源的时候尽量使用绝对路径. 作者在帮助同学完善其JavaWeb项目端页面的时候,css样式文件怎么也引用不了. 第一个想到的是:是不是文件路径写错了? 于是,作者换了绝对路径, ...
- python数据类型之集合
对python中集合的理解 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = set ...
- LINUX创建LVM、PV、VG、LV ORACLE服务器方案划分
为裸盘分区 查看硬盘分区 fdisk -l 进入分区管理 fdisk /dev/sda 创建PV 创建PV pvcreate /dev/sda1 pvcreate /dev/sdb1 pvcreate ...
- java Date 当天时间戳处理
1. 代码 private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; private static Date ...