00001 #ifndef TJOIN_H
00002 #define TJOIN_H
00003
00004 #include<boost/graph/iteration_macros.hpp>
00005 #include<boost/graph/adjacency_list.hpp>
00006 #include<boost/graph/adjacency_matrix.hpp>
00007 #include<boost/graph/graph_traits.hpp>
00008 #include<scil/scil.h>
00009 #include<scil/core/var_map.h>
00010 #include<iostream>
00011 #include<scil/core/cutTree.h>
00012 #include<boost/graph/connected_components.hpp>
00013
00014 namespace SCIL {
00015
00024 template <typename Graph>
00025 class TJOIN : public sym_constraint {
00026
00027 private:
00028
00029 typedef boost::graph_traits<Graph> GraphTraits;
00030 typedef typename GraphTraits::vertex_descriptor vertex_descriptor;
00031 typedef typename GraphTraits::edge_descriptor edge_descriptor;
00032
00033
00034 Graph& G;
00035 var_map<edge_descriptor>& VM;
00036 std::map<vertex_descriptor,bool>& T;
00037
00038
00039
00040 public:
00041
00047 TJOIN(Graph& G_, var_map<edge_descriptor>& VM_, std::map<vertex_descriptor, bool>& T_);
00048
00049 void init(subproblem& S);
00050
00054 status standard_separation(subproblem& S);
00055
00059 status feasible(solution& S);
00060
00061 };
00062 }
00063
00064 #include "../../../src/constraints/tjoin.cc"
00065 #endif