public void EdmondsKarpAlgorithmExecuteTest() { Func <IGraphEdge, Int32> capacityFunction = edge => (Int32)(edge["Capacity"]); IDictionary <OperationParameter, Object> parameters = new Dictionary <OperationParameter, Object>(); parameters[GraphOperationParameters.SourceVertex] = _sourceVertex; parameters[GraphOperationParameters.TargetVertex] = _targetVertex; parameters[GraphOperationParameters.CapacityMetric] = capacityFunction; EdmondsKarpAlgorithm operation = new EdmondsKarpAlgorithm(_sourceGraph, parameters); operation.Execute(); Assert.AreEqual(_resultGraph.VertexCount, operation.Result.VertexCount); Assert.AreEqual(5, operation.Result["MaximumFlow"]); foreach (IGraphEdge edge in _resultGraph.Edges) { IGraphEdge resultEdge = operation.Result.Edges.FirstOrDefault(e => e.Source.Coordinate.Equals(edge.Source.Coordinate) && e.Target.Coordinate.Equals(edge.Target.Coordinate)); Assert.IsNotNull(resultEdge); Assert.AreEqual(edge["ResidualCapacity"], resultEdge["ResidualCapacity"]); } }
private static void P6EdmondsKarp() { Console.WriteLine("-------------------------------"); Console.WriteLine("Neuer Graph"); var hFileName = GraphFileRessources.P5Fluesse; var hGraph = AdjacentListGraphImporter.ImportAdjacentList <CapacityWeighted>(hFileName, EdgeKind.DirectedWeighted); var hEdmondsKarpAlgorithm = new EdmondsKarpAlgorithm(hGraph); hEdmondsKarpAlgorithm.Execute(0, 7); Console.WriteLine("-------------------------------"); Console.WriteLine("Neuer Graph"); hFileName = GraphFileRessources.P5Fluesse2; hGraph = AdjacentListGraphImporter.ImportAdjacentList <CapacityWeighted>(hFileName, EdgeKind.DirectedWeighted); hEdmondsKarpAlgorithm = new EdmondsKarpAlgorithm(hGraph); hEdmondsKarpAlgorithm.Execute(0, 7); Console.WriteLine("-------------------------------"); Console.WriteLine("Neuer Graph"); hFileName = GraphFileRessources.P5GraphG12; hGraph = AdjacentListGraphImporter.ImportAdjacentList <CapacityWeighted>(hFileName, EdgeKind.DirectedWeighted); hEdmondsKarpAlgorithm = new EdmondsKarpAlgorithm(hGraph); hEdmondsKarpAlgorithm.Execute(0, 7); }