Reference no: EM131735
Minimal Spanning Tree Decreasing Edge Dismissal
Reverse-delete algorithm. Develop an implementation that computes the MST as follows: Start with a graph containing all of the edges. Then repeatedly go through the edges in decreasing order of weight. For each edge, check if deleting that edge will disconnect the graph; if not, delete it. Prove that this algorithm computes the MST. What is the order of growth of the number of edge-weight compares performed by your implementation?
1)Code (one or more classes) that implements the algorithm using the graph primitives of Sedgewick Here is some code for graphs. we need to use these codes(classes) for our program check 4.3.9,4.3.11,4.3.17.
2)A text file with detailed analysis of the order of growth using the doubling test
public class DoublingTest {
int [] Ns;
int [] T;
float [] as;
float [] ratio;
int [] Tp;
int b;
float a;
// input arrays of inputs sizes (each a double) and times
public DoublingTest(int[] _Ns, int[] _T) {
Ns = _Ns;
T = _T;
int i;
ratio = new float [Ns.length];
for (int j=1;j<T.length;j++){
ratio[j]=T[j]/T[j-1];
}
b = (int) (Math.log((int) ratio[3])/Math.log(2));
// estimate b as = new float[Ns.length];
for (int j=1;j<as.length;j++){
float factor = (float) Math.pow(Ns[j],b);
as[j]= T[j]/factor;
}
a = as[T.length-1];
// estimate a Tp = new int [Ns.length];
for (i=0; i<Tp.length; i++){
Tp[i] = (int) (a*Math.pow(Ns[i],b));
}
}
public void report (){
printIntArray(Ns,"Ns");
printIntArray(T,"Tn");
System.out.println(" === doubling test ===");
printFloatArray(ratio, "% ");
System.out.println("\t\tchoose b = "+b);
printFloatArray(as,"as");
System.out.println("\t\tchoose a = "+a);
printIntArray(Tp,"Tp:");
}
private static void printFloatArray(float[] floats, String string) {
System.out.print(string+": ");
for (int i = 0; i<floats.length; i++)
System.out.print("\t"+floats[i]);
System.out.println();
}
private static void printIntArray(int[] ints, String string) {
System.out.print(string+": ");
for (int i = 0; i<ints.length; i++)
System.out.print("\t"+ints[i]);
System.out.println();
}
}
3)mathematical analysis of your code