15 #ifndef TSP_BOOST_INCLUDED
16 #define TSP_BOOST_INCLUDED
27 #include <boost/graph/adjacency_list.hpp>
28 #include <boost/graph/graph_utility.hpp>
29 #include <boost/graph/connected_components.hpp>
30 #include <boost/graph/kruskal_min_spanning_tree.hpp>
31 using namespace boost;
33 typedef property<edge_weight_t, double,
35 typedef adjacency_list<vecS, vecS, undirectedS,
54 const double tol = 1.0e-6){
56 property_map<Graph, edge_weight_t>::type e_weight
57 =
get(edge_weight, m_sg);
58 property_map<Graph, edge_index_t>::type e_index
59 =
get(edge_index, m_sg);
60 graph_traits<Graph>::edge_descriptor ed;
bool inserted;
61 for (
int c = 0; c < len; ++c) {
65 tie(ed, inserted) = add_edge(uv.first, uv.second, m_sg);
66 e_weight[ed] = val[c];
74 property_map<Graph, edge_index_t>::type e_index
75 =
get(edge_index, m_cgV);
76 graph_traits<Graph>::edge_descriptor ed;
bool inserted;
79 for(u = 1; u < nVerts; u++){
80 for(v = 0; v < u; v++){
81 if(u != vert && v != vert){
82 tie(ed, inserted) = add_edge(u, v, m_cgV);
95 return connected_components(m_sg, &component[0]);
99 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)