public static double getDunnIndex(ArrayList<ArrayList<Integer>> clusters, double[][] distance, int VERBOSE) {
		
		int logFlag = Constants.LOG_DUNNINDEX;
		
		// get the min inter cluster distance
		double MINDIST = Double.MAX_VALUE;
		for (int i=0; i<clusters.size()-1; i++){
			for (int j=i+1; j<clusters.size(); j++) {
				// test for each element in each cluster
				ArrayList<Integer> clusterI = clusters.get(i);
				ArrayList<Integer> clusterJ = clusters.get(j);
				
				double minDist = interClusterDistanceTwoClosestPoints(clusterI, clusterJ, distance, VERBOSE, logFlag);
				
				if ( minDist < MINDIST ) {
					MINDIST = minDist;
				}
				Util.logPrintln(VERBOSE, logFlag, "DUNN: minDist: "+minDist+", MINDIST: "+MINDIST);
				
			}
		}
		
		// get the max intra cluster distance
		double MAXDIST = Double.MIN_VALUE;
		for (int i=0; i<clusters.size(); i++) {
			double dist = diameterTwoFarthestPoints(clusters.get(i), distance, VERBOSE, logFlag);
			if ( dist > MAXDIST ) {
				MAXDIST = dist;
			}			
			Util.logPrintln(VERBOSE, logFlag, "DUNN: maxDist: "+dist+", MAXDIST: "+MAXDIST);
		}
		return MINDIST / MAXDIST;
	}