00001
00002
00003
00004
00005
00006 #ifndef KCONNECTED_H
00007 #define KCONNECTED_H
00008
00009 #include <boost/foreach.hpp>
00010 #include <boost/graph/adjacency_list.hpp>
00011 #include <boost/graph/adjacency_matrix.hpp>
00012 #include <boost/graph/graph_traits.hpp>
00013 #include <boost/graph/iteration_macros.hpp>
00014 #include <boost/type_traits/is_base_and_derived.hpp>
00015 #include <boost/type_traits/is_same.hpp>
00016 #include <cstdarg>
00017 #include <iostream>
00018 #include <list>
00019 #include <scil/core/cutTree.h>
00020 #include <scil/core/min_cut.h>
00021 #include <scil/scil.h>
00022
00023 namespace SCIL {
00024
00029 template <typename Graph>
00030 class KCONNECTED : public sym_constraint {
00031
00032 private:
00033
00034 typedef boost::graph_traits<Graph> GraphTraits;
00035 typedef typename GraphTraits::vertex_descriptor vertex_descriptor;
00036 typedef typename GraphTraits::edge_descriptor edge_descriptor;
00037
00038 Graph& G;
00039 var_map<edge_descriptor>& VM;
00040 int k;
00041
00042 public:
00044 KCONNECTED(Graph& G_, var_map<edge_descriptor>& VM_, int k_);
00045
00047 void init(subproblem& S);
00048
00051 int cutTreeSeparation(solution& sol, std::list<cons_obj*>& newCons);
00052
00055 status standard_separation(subproblem& S);
00056
00057
00058
00059 status feasible(solution& S);
00060
00063 void info();
00064
00065 };
00066
00067 };
00068
00069 #include "../../../src/constraints/kconnected.cc"
00070 #endif