最小生成ツリーのPrimアルゴリズムとKruskalアルゴリズムjavaコード実装


MiniSpanTreeの2つの静的関数は最小生成ツリーのPrimアルゴリズムとKruskalアルゴリズムを実現した.
package datastucture;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 *          
 * @author win7
 *
 */
public class MiniSpanTree {
	/**
	 *         PRIM  
	 *     :  N=(V,{E})    ,TE N             。   U={u0}(u0  V),
	 * TE={}  ,        :    u  U,v  V-U  (u,v)  E         
	 *   (u0,v0)    TE,  v0  U,  U=V  。  TE   n-1  , T=(V,{TE})
	 *  N      。
	 * @param  graph   
	 * @param start     
	 * @param n          
	 */
	public static void PRIM(int [][] graph,int start,int n){
		int [][] mins=new int [n][2];//      U V-U          ,mins[i][0]       i      
		                             //  -1          ,mins[i][1]          ,
		                             //mins[i][1]=0          U 
		for(int i=0;imins[j][1]){
					minW=mins[j][1];
					minV=j;
				}
			}
//			System.out.println("minV="+minV);
			mins[minV][1]=0;
			System.out.println("       "+i+"    =,  ="+minW);
			for(int j=0;j sets=new ArrayList();
		for(int i=0;i


上のコードには、次のようなエッジの補助クラスEdgeも必要です.
package datastucture;

public class Edge implements Comparable{
	public int i,j,w;
	public Edge(int i,int j,int w){
		this.i=i;
		this.j=j;
		this.w=w;
	}
	

	@Override
	public int compareTo(Object o) {
		Edge to=(Edge)o;
		if(this.w>to.w) return 1;
		else if(this.w==to.w) return 0;
		else return -1;
		
	}
	@Override
	public String toString() {
		return "start="+i+"||end="+j+"||w="+w;
	}
}