import java.util.*; import java.io.*; public class AnalyseSmallWorld { private static double kappa(int n,int k,double p){ double kappa = (k*(k-1)*Math.log(1.0/(1.0 - p)))/(2.0 *(logFactorial(n) - logFactorial(k) - logFactorial(n-k)));; return kappa; } private static double logFactorial(int n){ double fac = 0; for (int a = 2; a <= n; a++) fac += Math.log(a); return fac; } private static void show(long[]x){ int n = x.length; for (int i=0;i<n;i++) System.out.print(x[i] + " "); System.out.println(); } private static long average(long[]x){ int n = x.length; long sum = 0; for (int i=0;i<n;i++) sum = sum + x[i]; return sum/n; } private static double geometricMean(long[]x){ int n = x.length; double logSum = 0.0; for (int i=0;i<n;i++) logSum = logSum + Math.log((double)x[i]); return Math.exp(logSum/(double)n); } private static long median(long[]x){ int n = x.length; Arrays.sort(x); return x[n/2]; } private static long min(long[]x){ int n = x.length; long min = x[0]; for (int i=1;i<n;i++) min = Math.min(min,x[i]); return min; } private static long max(long[]x){ int n = x.length; long max = x[0]; for (int i=1;i<n;i++) max = Math.max(max,x[i]); return max; } private static void stats(String alg,int n,int p,int lwb,int upb) throws IOException { int count = 0; String fname = ""; long[] size = new long[upb-lwb+1]; // size of max indSet long[] nds = new long[upb-lwb+1]; // nodes visited long[] solveTime = new long[upb-lwb+1]; // milliseconds String s = ""; if (p < 10) s = "0" + p; else s = s + p; for (int i=lwb;i<=upb;i++){ if (i < 10) fname = "../randomResultsJava/"+ alg +"-"+ n +"-"+ s +"-0"+ i +".txt"; else fname = "../randomResultsJava/"+ alg +"-"+ n +"-"+ s +"-"+ i +".txt"; Scanner sc = new Scanner(new File(fname)); size[count] = sc.nextLong(); nds[count] = sc.nextLong(); solveTime[count] = sc.nextLong(); count++; sc.close(); } System.out.format("%d %.2f ",n,((float)p)/100.0); System.out.print(average(nds) +" "+ min(nds) +" "+ median(nds) +" "+ max(nds) +" "); System.out.print(average(solveTime) +" "+ min(solveTime) +" "+ median(solveTime) +" "+ max(solveTime) +" "); System.out.print(average(size) +" "+ min(size) +" "+ median(size) +" "+ max(size)); System.out.println(); } public static void main(String[] args) throws IOException { String alg = args[0]; int n = Integer.parseInt(args[1]); // vertices in a graph int pLo = Integer.parseInt(args[2]); // edge probability int pHi = Integer.parseInt(args[3]); // edge probability int pInc = Integer.parseInt(args[4]); // increment for p int lwb = Integer.parseInt(args[5]); // index of 1st results file int upb = Integer.parseInt(args[6]); // index of last results file for (int p=pLo;p<=pHi;p=p+pInc) stats(alg,n,p,lwb,upb); } }