예제 #1
0
 def test_graph_vf2_mapping_identical_removals(self):
     graph = retworkx.generators.path_graph(2)
     second_graph = retworkx.generators.path_graph(4)
     second_graph.remove_nodes_from([1, 2])
     second_graph.add_edge(0, 3, None)
     mapping = retworkx.graph_vf2_mapping(graph, second_graph)
     self.assertEqual({0: 0, 1: 3}, next(mapping))
예제 #2
0
 def test_graph_vf2_number_of_valid_mappings(self):
     graph = retworkx.generators.mesh_graph(3)
     mapping = retworkx.graph_vf2_mapping(graph, graph, id_order=True)
     total = 0
     for _ in mapping:
         total += 1
     self.assertEqual(total, 6)
예제 #3
0
 def test_graph_vf2_mapping_identical_vf2pp(self):
     graph = retworkx.generators.grid_graph(2, 2)
     second_graph = retworkx.generators.grid_graph(2, 2)
     mapping = retworkx.graph_vf2_mapping(graph,
                                          second_graph,
                                          id_order=False)
     self.assertEqual(next(mapping), {0: 0, 1: 1, 2: 2, 3: 3})
예제 #4
0
 def test_subgraph_vf2_mapping(self):
     graph = retworkx.generators.grid_graph(10, 10)
     second_graph = retworkx.generators.grid_graph(2, 2)
     mapping = retworkx.graph_vf2_mapping(graph,
                                          second_graph,
                                          subgraph=True)
     self.assertEqual(next(mapping), {0: 0, 1: 1, 10: 2, 11: 3})
예제 #5
0
 def test_subgraph_vf2_mapping_vf2pp(self):
     graph = retworkx.generators.grid_graph(3, 3)
     second_graph = retworkx.generators.grid_graph(2, 2)
     mapping = retworkx.graph_vf2_mapping(graph,
                                          second_graph,
                                          subgraph=True,
                                          id_order=False)
     self.assertEqual(next(mapping), {4: 0, 3: 2, 0: 3, 1: 1})
예제 #6
0
 def test_graph_vf2_mapping_identical_removals_first_vf2pp(self):
     second_graph = retworkx.generators.path_graph(2)
     graph = retworkx.generators.path_graph(4)
     graph.remove_nodes_from([1, 2])
     graph.add_edge(0, 3, None)
     mapping = retworkx.graph_vf2_mapping(graph,
                                          second_graph,
                                          id_order=False)
     self.assertEqual({0: 0, 3: 1}, next(mapping))
예제 #7
0
 def test_empty_graph_vf2_mapping(self):
     g_a = retworkx.PyGraph()
     g_b = retworkx.PyGraph()
     for id_order in [False, True]:
         with self.subTest(id_order=id_order):
             mapping = retworkx.graph_vf2_mapping(g_a,
                                                  g_b,
                                                  id_order=id_order,
                                                  subgraph=False)
             self.assertEqual({}, next(mapping))
예제 #8
0
 def test_subgraph_vf2_all_mappings(self):
     graph = retworkx.generators.path_graph(3)
     second_graph = retworkx.generators.path_graph(2)
     mapping = retworkx.graph_vf2_mapping(graph,
                                          second_graph,
                                          subgraph=True,
                                          id_order=True)
     self.assertEqual(next(mapping), {0: 0, 1: 1})
     self.assertEqual(next(mapping), {0: 1, 1: 0})
     self.assertEqual(next(mapping), {2: 1, 1: 0})
     self.assertEqual(next(mapping), {1: 1, 2: 0})
예제 #9
0
 def test_subgraph_vf2_mapping_out_size(self):
     first = retworkx.PyGraph()
     first.add_nodes_from([0, 1, 2, 3])
     first.add_edges_from_no_data([(0, 1), (0, 2), (1, 2), (2, 3)])
     second = retworkx.PyGraph()
     second.add_nodes_from([0, 1, 2, 3])
     second.add_edges_from_no_data([(0, 1), (0, 2), (1, 3)])
     mapping = retworkx.graph_vf2_mapping(first,
                                          second,
                                          subgraph=True,
                                          id_order=True,
                                          induced=False)
     self.assertEqual(next(mapping), {0: 0, 1: 2, 2: 1, 3: 3})
예제 #10
0
    def test_vf2pp_remapping(self):
        temp = retworkx.generators.grid_graph(3, 3)

        graph = retworkx.PyGraph()
        dummy = graph.add_node(0)

        graph.compose(temp, dict())
        graph.remove_node(dummy)

        second_graph = retworkx.generators.grid_graph(2, 2)
        mapping = retworkx.graph_vf2_mapping(graph,
                                             second_graph,
                                             subgraph=True,
                                             id_order=False)
        self.assertEqual(next(mapping), {5: 0, 4: 2, 1: 3, 2: 1})