예제 #1
0
def construct_vertex_labelled_graph(graph):

  ( copy, mapping ) = utility.copy_graph_and_map_vertices( graph = graph )

  for v in graph.vertices():
    copy.set_vertex_label( vertex = mapping[ v ], label = frozenset( ( v, ) ) )

  return copy
def construct_vertex_labelled_graph(graph):

  ( copy, mapping ) = utility.copy_graph_and_map_vertices( graph = graph )

  for v in graph.vertices():
    copy.set_vertex_label( vertex = mapping[ v ], label = frozenset( ( v, ) ) )

  return copy
예제 #3
0
def copy_graph_and_merge_vertices(graph, merge1, merge2):

  ( copy, mapping ) = utility.copy_graph_and_map_vertices( graph = graph )
  contract_undirected_graph(
    graph = copy,
    v1 = mapping[ merge1 ],
    v2 = mapping[ merge2 ],
    )

  return (
    copy,
    contract_undirected_graph.joint_vertex_label(
      graph.vertex_label( vertex = merge1 ),
      graph.vertex_label( vertex = merge2 ),
      ),
    )
def copy_graph_and_merge_vertices(graph, merge1, merge2):

  ( copy, mapping ) = utility.copy_graph_and_map_vertices( graph = graph )
  contract_undirected_graph(
    graph = copy,
    v1 = mapping[ merge1 ],
    v2 = mapping[ merge2 ],
    )

  return (
    copy,
    contract_undirected_graph.joint_vertex_label(
      graph.vertex_label( vertex = merge1 ),
      graph.vertex_label( vertex = merge2 ),
      ),
    )
예제 #5
0
    def manipulation(self, g):

        vd0 = g.add_vertex(label=object())
        vd1 = g.add_vertex(label=object())
        vd2 = g.add_vertex(label=object())

        g.add_edge(vertex1=vd0, vertex2=vd1, weight=object())
        g.add_edge(vertex1=vd0, vertex2=vd2, weight=object())
        g.add_edge(vertex1=vd1, vertex2=vd2, weight=object())

        (copy, mapping) = utility.copy_graph_and_map_vertices(graph=g)
        self.assertEqual(copy.num_vertices(), 3)
        self.assertEqual(copy.num_edges(), 3)

        self.assertEqual(len(mapping), 3)

        for vertex in g.vertices():
            self.assertTrue(vertex in mapping)
            self.assertEqual(
                g.vertex_label(vertex=vertex),
                copy.vertex_label(vertex=mapping[vertex]),
            )

        weight_of_edge_between = {}

        for edge in copy.edges():
            sv = copy.source(edge=edge)
            dv = copy.target(edge=edge)
            weight_of_edge_between[frozenset(
                (sv, dv))] = copy.edge_weight(edge=edge)

        for edge in g.edges():
            sv = copy.source(edge=edge)
            dv = copy.target(edge=edge)
            key = frozenset((mapping[sv], mapping[dv]))
            self.assertTrue(key in weight_of_edge_between)
            self.assertEqual(weight_of_edge_between[key],
                             g.edge_weight(edge=edge))