50 ifstream in (filename.c_str());
54 typedef adjacency_list<vecS, vecS, undirectedS,
55 property<vertex_index_t, std::size_t, property<vertex_color_t, int, property<vertex_name_t, std::size_t> > >,
56 property<edge_index_t, std::size_t, property<edge_weight_t, int> >,
57 property<graph_name_t, string> > tmp_graph_type;
59 dynamic_properties tmpdp;
60 tmpdp.property(
"node_id", get(vertex_name, tmpg));
61 tmpdp.property(
"label", get(vertex_name, tmpg));
62 tmpdp.property(
"weight", get(edge_weight, tmpg));
63 tmpdp.property(
"label", get(edge_weight, tmpg));
64 std::cout <<
"read_graphviz\n";
65 limboAssert(read_graphviz(in, tmpg, tmpdp,
"node_id"));
67 std::cout <<
"num_vertices: " << num_vertices(tmpg) <<
"\n";
68 std::cout <<
"num_edges: " << num_edges(tmpg) <<
"\n";
71 graph_type g (num_vertices(tmpg));
72 graph_traits<tmp_graph_type>::vertex_iterator vit, vit_end;
73 for (tie(vit, vit_end) = vertices(tmpg); vit != vit_end; ++vit)
75 size_t name = get(vertex_name, tmpg, *vit);
76 int color = get(vertex_color, tmpg, *vit);
77 put(vertex_color, g, (vertex_descriptor)name, color);
80 graph_traits<tmp_graph_type>::edge_iterator eit, eit_end;
81 for (tie(eit, eit_end) = edges(tmpg); eit != eit_end; ++eit)
83 size_t s_name = get(vertex_name, tmpg, source(*eit, tmpg));
84 size_t t_name = get(vertex_name, tmpg, target(*eit, tmpg));
85 pair<edge_descriptor, bool> pe = add_edge(s_name, t_name, g);
87 int weight = get(edge_weight, g, *eit);
88 put(edge_weight, g, pe.first, weight);
91#ifdef DEBUG_GRAPHSIMPLIFICATION
92 dynamic_properties dp;
93 dp.property(
"id", get(vertex_index, g));
94 dp.property(
"node_id", get(vertex_index, g));
95 dp.property(
"label", get(vertex_index, g));
96 dp.property(
"weight", get(edge_weight, g));
97 dp.property(
"label", get(edge_weight, g));
98 ofstream out (
"graph_init.gv");
99 write_graphviz_dp(out, g, dp,
string(
"id"));
101 system(
"dot -Tpdf graph_init.gv -o graph_init.pdf");
106 simplification_type gs (g, 3);
107 std::vector<int> vPrecolor (num_vertices(g), -1);
108 if (vPrecolor.size() > 0) vPrecolor[0] = 0;
109 if (vPrecolor.size() > 3) vPrecolor[3] = 0;
110 if (vPrecolor.size() > 4) vPrecolor[4] = 0;
111 gs.precolor(vPrecolor.begin(), vPrecolor.end());
113 gs.hide_small_degree();
114 gs.write_graph_dot(
"graph_simpl1");
116 gs.biconnected_component();
119 gs.simplify(simplification_type::HIDE_SMALL_DEGREE | simplification_type::BICONNECTED_COMPONENT);
121 gs.write_graph_dot(
"graph_simpl3");
122 gs.write_simplified_graph_dot(
"graph_simpl_merge");