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"]);
            }
        }
Example #2
0
        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);
        }