Kruskal(克鲁斯卡尔)
import java.io.BufferedInputStream;
import java.util.*;
/*
* @author denghuilong
*
* 2013-8-7上午11:36:00
*
*/
public class Kruskal{
public static void main(String args[]){
ArrayList<P> ay=new ArrayList<P>();
P p0=new P(0, 1, 10);
P p1=new P(0, 5, 11);
P p2=new P(1, 8, 12);
P p3=new P(1, 2, 18);
P p4=new P(1, 6, 16);
P p5=new P(2, 8, 8);
P p6=new P(2, 3, 22);
P p7=new P(3, 4, 20);
P p8=new P(3, 7, 16);
P p9=new P(3, 6, 24);
P p10=new P(3, 8, 21);
P p11=new P(4, 7, 7);
P p12=new P(4, 5, 26);
P p13=new P(5, 6, 17);
P p14=new P(6, 7, 19);
ay.add(p0);
ay.add(p1);
ay.add(p2);
ay.add(p3);
ay.add(p4);
ay.add(p5);
ay.add(p6);
ay.add(p7);
ay.add(p8);
ay.add(p9);
ay.add(p10);
ay.add(p11);
ay.add(p12);
ay.add(p13);
ay.add(p14);
System.out.println("按权值排序");
Collections.sort(ay);
for(P pp:ay){
System.out.println(pp);
}
System.out.println("Kruskal(克鲁斯卡尔)");
int length=ay.size();
int patten[]=new int[length];//判断是否构成回路
for(int i=0;i<length;i++){
//查找定点尾部的下标
int n=find(patten,ay.get(i).start);
int m=find(patten,ay.get(i).end);
if(n!=m){
patten[n]=m;
System.out.println(ay.get(i));
}
}
}
public static int find(int patten[],int m){ return patten[m]>0?patten[m]:m;
}
}
class P implements Comparable<P>{
public int start;
public int end;
public int num;
public P(int start, int end, int num) {
this.start = start;
this.end = end;
this.num = num;
}
public int compareTo(P o) {
return this.num>o.num?1:-1;
}
public String toString(){
return "["+start+","+end+","+num+"]";
}
}
Kruskal(克鲁斯卡尔)的更多相关文章
- 最小生成树之Kruskal(克鲁斯卡尔)算法
学习最小生成树算法之前我们先来了解下下面这些概念: 树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所 ...
- 经典问题----最小生成树(kruskal克鲁斯卡尔贪心算法)
题目简述:假如有一个无向连通图,有n个顶点,有许多(带有权值即长度)边,让你用在其中选n-1条边把这n个顶点连起来,不漏掉任何一个点,然后这n-1条边的权值总和最小,就是最小生成树了,注意,不可绕成圈 ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- P1546 最短网络 Agri-Net题解(克鲁斯卡尔)
P1546 最短网络 Agri-Net 那么这个题是一道最小生成树的板子题 在此讲解kruskal克鲁斯卡尔方法: 原理: 并查集在这里被用到: 众所周知:树满足这样一个定理:如果 图 中有n个节点并 ...
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...
- 贪心算法(Greedy Algorithm)之最小生成树 克鲁斯卡尔算法(Kruskal's algorithm)
克鲁斯卡尔算法(Kruskal's algorithm)是两个经典的最小生成树算法的较为简单理解的一个.这里面充分体现了贪心算法的精髓.大致的流程能够用一个图来表示.这里的图的选择借用了Wikiped ...
- 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal's algorithm)
克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...
- c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树
c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n-1条线路 ...
- 最小生成树之克鲁斯卡尔(kruskal)算法
#include <iostream> #include <string> using namespace std; typedef struct MGraph{ string ...
随机推荐
- 【数据库摘要】12_Sql_存储过程
SQL 存储过程 存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); ...
- win7+Powerpoint2007下设置演讲者视图,两步搞定
步骤1: 步骤2: 这样,你就可以对着ppt的备注讲解了,且用户看不到你的备注以及你的电脑桌面.cool!
- 与众不同 windows phone (7) - Local Database(本地数据库)
原文:与众不同 windows phone (7) - Local Database(本地数据库) [索引页][源码下载] 与众不同 windows phone (7) - Local Databas ...
- android在假设绘制自己定义的bitmap,然后返回给ImageView
先来说一下FontMetrics这个类.这个类是关于字符属性和測量的类 用图能够更精确的知道各个属性的含义: 我们在Layout中有一个ImageView,我们能够通过: <span style ...
- 得到一个div下 特定ID的所有标签
比如说得到 <div id="showsp"> <div id="a"></div> <div id="a& ...
- Apache commons-net用法的一个示例
jar: commons-io-2.4.jarcommons-net-3.3.jar Code: import java.io.File; import java.io.FileInputStream ...
- (76) Clojure: Why would someone learn Clojure? - Quora
(76) Clojure: Why would someone learn Clojure? - Quora ★ Why would someone learn Clojure? Edit
- 你真的了解JAVA中与Webservice相关的规范和实现吗?
非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...
- Mybatis在oracle、mysql、db2、sql server的like模糊查询
<!-- oracle --> <select id="searchUserBySearchName" parameterType="java.lang ...
- 《转》 Openstack Grizzly 指定 compute node 创建 instance
声明:此文档仅仅做学习交流使用,请勿用作其它商业用途 作者:朝阳_tony 邮箱:linzhaolover@gmail.com 2013年6月4日9:37:44 星期二 转载请注明出处:http:// ...