package GKA.Graph;
import static org.junit.Assert.*;
import java.io.File;
import org.junit.Test;
public class FlowTest {
GKAGraph graph4 = (GKAGraph) GKAGraphInterface.newGraph(new File("..\\TestGraphen\\graph4Own.gka"));
//GKAGraph graph4 = (GKAGraph) GKAGraphInterface.newGraph(new File("..\\aufgabe1Bsp\\graph4.gka"));
GKAGraph complex = (GKAGraph) GKAGraphInterface.newGraph(new File("..\\TestGraphen\\TestGraph.gka"));
double delta = 1.0E-9;
@Test
public void ComplexTest(){
EdmondKarp edmondKarp = new EdmondKarp(complex);
FordFulkerson fordFulkerson = new FordFulkerson(complex);
assertEquals(Double.POSITIVE_INFINITY, edmondKarp.maxFlow("S", "S"),delta);
assertEquals(Double.POSITIVE_INFINITY, fordFulkerson.maxFlow("S", "S"),delta);
assertEquals(9.0, edmondKarp.maxFlow("S", "T"),delta);
assertEquals(9.0, fordFulkerson.maxFlow("S", "T"),delta);
for(String v1: complex.getjGraph().vertexSet()){
for(String v2: complex.getjGraph().vertexSet()){
assertEquals(fordFulkerson.maxFlow(v1, v2), edmondKarp.maxFlow(v1,v2), delta);
}
}
}
@Test
public void Graph4Test() {
EdmondKarp edmondKarp = new EdmondKarp(graph4);
FordFulkerson fordFulkerson = new FordFulkerson(graph4);
for(String v1: graph4.getjGraph().vertexSet()){
for(String v2: graph4.getjGraph().vertexSet()){
assertEquals(fordFulkerson.maxFlow(v1, v2), edmondKarp.maxFlow(v1,v2), delta);
}
}
}
@Test
public void bigNet(){
GKAGraph big = (GKAGraph) GKAGraphInterface.newGraphBigNet(50, 800);
EdmondKarp edmondKarp = new EdmondKarp(big);
FordFulkerson fordFulkerson = new FordFulkerson(big);
long timeFord =0;
long timeEdmond = 0;
for(int i = 0; i< 100;i++){
int sink = (int)(Math.random() * 50);
int source = (int)(Math.random() * 50);
assertEquals(edmondKarp.maxFlow(String.valueOf(source), String.valueOf(sink)),
fordFulkerson.maxFlow(String.valueOf(source), String.valueOf(sink)), delta);
timeFord += fordFulkerson.getRunTime();
timeEdmond += edmondKarp.getRunTime();
}
System.out.println("Durchschnittliche Laufzeit Edmond Karp: " + (timeEdmond/100) + " Ford Fulkerson: " + (timeFord/100));
big = (GKAGraph) GKAGraphInterface.newGraphBigNet(100,1600);
edmondKarp = new EdmondKarp(big);
fordFulkerson = new FordFulkerson(big);
timeFord =0;
timeEdmond = 0;
for(int i = 0; i< 100;i++){
System.out.println("running round: " + i);
int sink = (int)(Math.random() * 100);
int source = (int)(Math.random() * 100);
assertEquals(edmondKarp.maxFlow(String.valueOf(source), String.valueOf(sink)),
fordFulkerson.maxFlow(String.valueOf(source), String.valueOf(sink)), delta);
timeFord += fordFulkerson.getRunTime();
timeEdmond += edmondKarp.getRunTime();
}
System.out.println("Durchschnittliche Laufzeit Edmond Karp: " + (timeEdmond/100) + " Ford Fulkerson" + (timeFord/100));
}
}