13 #ifndef TSP_BOOST_INCLUDED
14 #define TSP_BOOST_INCLUDED
25 #include <boost/graph/adjacency_list.hpp>
26 #include <boost/graph/graph_utility.hpp>
27 #include <boost/graph/connected_components.hpp>
28 #include <boost/graph/kruskal_min_spanning_tree.hpp>
29 using namespace boost;
31 typedef property<edge_weight_t, double,
33 typedef adjacency_list<vecS, vecS, undirectedS,
52 const double tol = 1.0e-6){
54 property_map<Graph, edge_weight_t>::type e_weight
55 =
get(edge_weight, m_sg);
56 property_map<Graph, edge_index_t>::type e_index
57 =
get(edge_index, m_sg);
58 graph_traits<Graph>::edge_descriptor ed;
bool inserted;
59 for (
int c = 0; c < len; ++c) {
63 tie(ed, inserted) = add_edge(uv.first, uv.second, m_sg);
64 e_weight[ed] = val[c];
72 property_map<Graph, edge_index_t>::type e_index
73 =
get(edge_index, m_cgV);
74 graph_traits<Graph>::edge_descriptor ed;
bool inserted;
77 for(u = 1; u < nVerts; u++){
78 for(v = 0; v < u; v++){
79 if(u != vert && v != vert){
80 tie(ed, inserted) = add_edge(u, v, m_cgV);
93 return connected_components(m_sg, &component[0]);
97 return static_cast<int>(degree(nodeIndex, m_sg));
int getDegree(const int nodeIndex)
int findConnectedComponents(vector< int > &component)
adjacency_list< vecS, vecS, undirectedS, no_property, edge_prop > Graph
pair< int, int > UtilBothEndsU(const int index)
void buildSubGraph(const int len, const double *val, const double tol=1.0e-6)
property< edge_weight_t, double, property< edge_index_t, int > > edge_prop
void buildCompleteGraphMinusVert(const int vert, const int nVerts)