Kruskal(克鲁斯卡尔)
2013-08-07 18:14
162 查看
设有一个有n个顶点的连通网N={V,E},最初先构造一个只有n个顶点,
没有边的非 连通图 T={V, E}, 图中每个顶点自成一个连通分量。
当在E中选到一条具有最小权值的边时,若该边的两个顶点落在不同的连通分量上,
则将此边加入到T中;否则将此边舍去,重新选择一条权值最小的边。
如此重复下去,直到所有顶点在同一个连通分量上为止。
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 =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)算法
- Num 32 : HDOJ : 1233 还是畅通工程 [ kruskal( 克鲁斯卡尔 )算法 ] [ 最小生成树 ]
- 【图】最小生成树(最小成本):克鲁斯卡尔(Kruskal)算法
- 最小生成树之克鲁斯卡尔(Kruskal)算法、普里姆(prim)算法
- MST最小生成树及克鲁斯卡尔(Kruskal)算法
- zoj 1203 Swordfish (kruskal 克鲁斯卡尔)
- 最小生成树之克鲁斯卡尔(Kruskal)算法实现,代码详解!!!!
- 普利姆(prim)算法和克鲁斯卡尔(kruskal)算法
- 最小生成树——克鲁斯卡尔(Kruskal)算法
- poj 2421 Constructing Roads kruskal克鲁斯卡尔最小生成树
- MST最小生成树及克鲁斯卡尔(Kruskal)算法
- 图的最小生成树---克鲁斯卡尔(Kruskal)算法
- 最小生成树——Kruskal(克鲁斯卡尔)算法
- 算法:图解最小生成树之克鲁斯卡尔(Kruskal)算法
- 最小生成树MST-克鲁斯卡尔(Kruskal)算法
- Kruskal(克鲁斯卡尔) 最小生成树 算法详解+模板
- 图论之最小生成树-----克鲁斯卡尔(Kruskal)算法
- 畅通工程 HDU杭电1863【克鲁斯卡尔Kruskal || Prim】
- 最小生成树——Kruskal(克鲁斯卡尔)算法