def test_edmondskarp(self): algorithm = EdmondsKarp(self.G) algorithm.run(0, 3) expected_max_flow = 20 expected_flow = { 0: { 0: 0, 2: 10, 1: 10, 3: 0 }, 1: { 0: -10, 2: 0, 1: 0, 3: 10 }, 2: { 0: -10, 2: 0, 1: 0, 3: 10 }, 3: { 0: 0, 2: -10, 1: -10, 3: 0 } } self.assertEqual(algorithm.max_flow, expected_max_flow) self.assertEqual(algorithm.flow, expected_flow)
def test_edmonds_karp(self): algorithm = EdmondsKarp(self.G) algorithm.run(0, 5) expected_max_flow = 19 expected_flow = { 0: { 0: 0, 1: 10, 2: 9, 3: 0, 4: 0, 5: 0 }, 1: { 0: -10, 1: 0, 2: 0, 3: 4, 4: 6, 5: 0 }, 2: { 0: -9, 1: 0, 2: 0, 3: 0, 4: 9, 5: 0 }, 3: { 0: 0, 1: -4, 2: 0, 3: 0, 4: -5, 5: 9 }, 4: { 0: 0, 1: -6, 2: -9, 3: 5, 4: 0, 5: 10 }, 5: { 0: 0, 1: 0, 2: 0, 3: -9, 4: -10, 5: 0 } } self.assertEqual(algorithm.max_flow, expected_max_flow) self.assertEqual(algorithm.flow, expected_flow)
def test_edmonds_karp(self): algorithm = EdmondsKarp(self.G) algorithm.run(0, 3) expected_max_flow = 20 expected_flow = { 0: {0: 0, 2: 10, 1: 10, 3: 0}, 1: {0: -10, 2: 0, 1: 0, 3: 10}, 2: {0: -10, 2: 0, 1: 0, 3: 10}, 3: {0: 0, 2: -10, 1: -10, 3: 0}} self.assertEqual(algorithm.max_flow, expected_max_flow) self.assertEqual(algorithm.flow, expected_flow)
def test_edmonds_karp(self): algorithm = EdmondsKarp(self.G) algorithm.run(0, 5) expected_max_flow = 19 expected_flow = { 0: {0: 0, 1: 10, 2: 9, 3: 0, 4: 0, 5: 0}, 1: {0: -10, 1: 0, 2: 0, 3: 4, 4: 6, 5: 0}, 2: {0: -9, 1: 0, 2: 0, 3: 0, 4: 9, 5: 0}, 3: {0: 0, 1: -4, 2: 0, 3: 0, 4: -5, 5: 9}, 4: {0: 0, 1: -6, 2: -9, 3: 5, 4: 0, 5: 10}, 5: {0: 0, 1: 0, 2: 0, 3: -9, 4: -10, 5: 0}} self.assertEqual(algorithm.max_flow, expected_max_flow) self.assertEqual(algorithm.flow, expected_flow)
def test_edmonds_karp(self): algorithm = EdmondsKarp(self.G) algorithm.run(0, 6) expected_max_flow = 5 expected_flow = { 0: {0: 0, 1: 2, 2: 0, 3: 3, 4: 0, 5: 0, 6: 0}, 1: {0: -2, 1: 0, 2: 2, 3: 0, 4: 0, 5: 0, 6: 0}, 2: {0: 0, 1: -2, 2: 0, 3: 1, 4: 1, 5: 0, 6: 0}, 3: {0: -3, 1: 0, 2: -1, 3: 0, 4: 0, 5: 4, 6: 0}, 4: {0: 0, 1: 0, 2: -1, 3: 0, 4: 0, 5: 0, 6: 1}, 5: {0: 0, 1: 0, 2: 0, 3: -4, 4: 0, 5: 0, 6: 4}, 6: {0: 0, 1: 0, 2: 0, 3: 0, 4: -1, 5: -4, 6: 0}} self.assertEqual(algorithm.max_flow, expected_max_flow) self.assertEqual(algorithm.flow, expected_flow)
def test_edmondskarp(self): algorithm = EdmondsKarp(self.G) algorithm.run(0, 6) expected_max_flow = 5 expected_flow = { 0: { 0: 0, 1: 2, 2: 0, 3: 3, 4: 0, 5: 0, 6: 0 }, 1: { 0: -2, 1: 0, 2: 2, 3: 0, 4: 0, 5: 0, 6: 0 }, 2: { 0: 0, 1: -2, 2: 0, 3: 1, 4: 1, 5: 0, 6: 0 }, 3: { 0: -3, 1: 0, 2: -1, 3: 0, 4: 0, 5: 4, 6: 0 }, 4: { 0: 0, 1: 0, 2: -1, 3: 0, 4: 0, 5: 0, 6: 1 }, 5: { 0: 0, 1: 0, 2: 0, 3: -4, 4: 0, 5: 0, 6: 4 }, 6: { 0: 0, 1: 0, 2: 0, 3: 0, 4: -1, 5: -4, 6: 0 } } self.assertEqual(algorithm.max_flow, expected_max_flow) self.assertEqual(algorithm.flow, expected_flow)
def test_exceptions(self): self.assertRaises(ValueError, EdmondsKarp, Graph()) self.assertRaises(ValueError, EdmondsKarpSparse, Graph()) self.assertRaises(ValueError, lambda: EdmondsKarp(self.G).run(0, 0)) self.assertRaises(ValueError, lambda: EdmondsKarpSparse(self.G).run(0, 0))
print "Calculate parameters ..." print "Nodes:", G.v(), V print "Edges:", G.e(), E print "Directed:", G.is_directed() print "Testing FordFulkerson ..." t1 = timeit.Timer(lambda: FordFulkerson(G).run(0, V - 1)) print V, E, t1.timeit(1) # single run print "Testing FordFulkersonSparse ..." t1 = timeit.Timer(lambda: FordFulkersonSparse(G).run(0, V - 1)) print V, E, t1.timeit(1) # single run print "Testing FordFulkersonWithEdges ..." t1 = timeit.Timer(lambda: FordFulkersonWithEdges(G).run(0, V - 1)) print V, E, t1.timeit(1) # single run print "Testing FordFulkersonRecursive ..." t1 = timeit.Timer(lambda: FordFulkersonRecursive(G).run(0, V - 1)) print V, E, t1.timeit(1) # single run print "Testing EdmondsKarp ..." t1 = timeit.Timer(lambda: EdmondsKarp(G).run(0, V - 1)) print V, E, t1.timeit(1) # single run print "Testing EdmondsKarpSparse ..." t1 = timeit.Timer(lambda: EdmondsKarpSparse(G).run(0, V - 1)) print V, E, t1.timeit(1) # single run # EOF