Exemple #1
0
 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)
Exemple #2
0
 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)
Exemple #6
0
 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)
Exemple #7
0
 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