Exemple #1
0
 def test_cycle_with_isolated_points(self):
     graph = Graph()
     graph.add_directed_link(1, 2)
     graph.add_vertex(6)
     graph.add_vertex(7)
     graph.add_directed_link(2, 3)
     graph.add_vertex(1)
     graph.add_directed_link(6, 4)
     graph.add_directed_link(3, 1)
     graph.add_directed_link(3, 4)
     self.assertEqual(graph.topological_sort(), None)
Exemple #2
0
 def test_DAG_sort(self):
     graph = Graph()
     graph.add_directed_link(1, 2)
     graph.add_directed_link(1, 3)
     graph.add_directed_link(2, 4)
     graph.add_directed_link(3, 4)
     graph.add_directed_link(4, 5)
     graph.add_directed_link(2, 3)
     self.assertEqual(graph.topological_sort(), [1, 2, 3, 4, 5])
Exemple #3
0
 def test_two_connected_components(self):
     graph = Graph()
     graph.add_directed_link(1, 2)
     graph.add_directed_link(2, 3)
     graph.add_directed_link(3, 1)
     graph.add_directed_link(4, 5)
     graph.add_directed_link(5, 6)
     graph.add_directed_link(6, 4)
     self.assertEqual(graph.topological_sort(), None)
Exemple #4
0
 def test_not_connected_DAG_sort(self):
     graph = Graph()
     graph.add_directed_link(1, 2)
     graph.add_directed_link(1, 3)
     graph.add_directed_link(2, 4)
     graph.add_directed_link(3, 4)
     graph.add_directed_link(4, 5)
     graph.add_directed_link(2, 3)
     graph.add_directed_link(6, 7)
     graph.add_directed_link(6, 8)
     graph.add_directed_link(7, 9)
     graph.add_directed_link(8, 9)
     graph.add_directed_link(9, 10)
     graph.add_directed_link(7, 8)
     ans1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     ans2 = [6, 7, 8, 9, 10, 1, 2, 3, 4, 5]
     arr = graph.topological_sort()
     match1 = True
     match2 = True
     for i in range(10):
         match1 = match1 or (arr[i] == ans1[i])
     for i in range(10):
         match2 = match2 or (arr[i] == ans2[i])
     self.assertTrue(match1 or match2)
Exemple #5
0
 def test_many_connected_components_with_cycle(self):
     graph = Graph()
     graph.add_directed_link(1, 2)
     graph.add_directed_link(1, 3)
     graph.add_directed_link(1, 4)
     graph.add_directed_link(2, 4)
     graph.add_directed_link(5, 6)
     graph.add_directed_link(7, 5)
     graph.add_directed_link(7, 9)
     graph.add_directed_link(11, 12)
     graph.add_directed_link(13, 12)
     graph.add_directed_link(11, 15)
     graph.add_directed_link(15, 16)
     graph.add_directed_link(15, 17)
     graph.add_directed_link(17, 10)
     graph.add_directed_link(10, 11)
     graph.add_directed_link(10, 17)
     self.assertEqual(graph.topological_sort(), None)
Exemple #6
0
 def test_cycle(self):
     graph = Graph()
     graph.add_directed_link(1, 2)
     graph.add_directed_link(2, 3)
     graph.add_directed_link(3, 1)
     self.assertEqual(graph.topological_sort(), None)