最小生成数 克鲁斯卡尔 普里姆 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 ...
随机推荐
- ASP.NET Core 中的日志记录
目录 内置日志的使用 使用Nlog 集成ELK 参考 内置日志的使用 Logger 是 asp .net core 的内置 service,所以我们就不需要在ConfigureService里面注册了 ...
- SpringMVC源码阅读:核心分发器DispatcherServlet
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将介绍SpringMVC的核 ...
- UML——六大关系整理
UML——六大关系整理 1.定义 是一种面向对象的建模语言,它是运用统一的.标准化的标记和定义实现对软件系统进行面向对象的描述和建模(百度百科). 2.六种关系 这六种关系分别为,继承.实现.关联.聚 ...
- [九省联考 2018]IIIDX
Description 题库链接 给你 \(n+1\) 个节点的一棵树,节点编号为 \(0\sim n\) , \(0\) 为根.边集为 \(\mathbb{E}=\left\{(u,v)\big|\ ...
- Angular的第一个组件
创建组件 在vscode的命令窗口输入: ng generate component login --inline-template --inline-style 或者简写 ng g c login ...
- chrome 等浏览器不支持本地ajax请求的问题
chrome 等浏览器不支持本地ajax请求的问题 XMLHttpRequest cannot load file:///D:/WWW/angularlx/ui-router-test/templat ...
- SqlServer知识点
在公司天天写Sql写,存储过程,但是公司工具模板把创建的语句都写好了,只负责写里面的逻辑,久而久之,创建语句都不会写了.还有一些知识点都很模糊,平常使用的时候都不清楚,稀里糊涂的就在用.在这里整理一下 ...
- 【转】Cookie深度解析
Cookie简介 众所周知,Web协议(也就是HTTP)是一个无状态的协议(HTTP1.0).一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义.用户在浏览器的地址栏输入页面的URL ...
- Java代理(三)
前面说到了java的动态代理,但是动态代理依赖于接口,这次来看看cglib来实现的代理... 假设有如下方法,这回没有说接口哦~ package proxy.cglibProxy; public cl ...
- python中类的约束和限制对象添加属性
通过__slots__限制对象可添加的属性 class A: __slots__ = ['a', 'b'] pass a1 = A() a1.a = 10 print(a1.a) a1.c = 0 # ...