My Project
seed.h
Go to the documentation of this file.
00001 
00005 #ifndef SEED_H_
00006 #define SEED_H_
00007 
00008 #include <set>
00009 #include <iostream>
00010 #include <vector>
00011 
00012 #include "density.h"
00013 #include "graph.h"
00014 
00022 class seed
00023 {
00024     public:
00025         typedef std::set<directed_t::vertex> vertex_set; 
00033         seed(const density<bidirected_t>* dens, const bidirected_t::graph& g);
00041         seed(const density<bidirected_t>* dens, const bidirected_t::graph& g,
00042                 bidirected_t::vertex s);
00048         seed(const seed& other);
00054         seed& operator =(const seed& rhs);
00055 
00061         bool can_add_vertex(const bidirected_t::vertex& v) const;
00067         bool can_rm_vertex(const bidirected_t::vertex& v) const;
00073         void add_vertex(const bidirected_t::vertex& v);
00079         void rm_vertex(const bidirected_t::vertex& v);
00080 
00086         const bidirected_t::edge_name_t& win() const { return win_; };
00092         const bidirected_t::edge_name_t& wout() const { return wout_; };
00098         const bidirected_t::graph& graph() const { return *g_; };
00104         const density<bidirected_t>* dens_func() const { return dens_; };
00110         const vertex_set& vertices() const { return vertices_; };
00116         double dens() const { return (*dens_)(win_, wout_, vertices_.size()); };
00117         
00121         void print();
00122 
00123     private:
00131         void find_p(const bidirected_t::vertex& v,
00132                 bidirected_t::edge_name_t* p_plus,
00133                 bidirected_t::edge_name_t* p_minus,
00134                 bidirected_t::edge_name_t* p_not) const;
00135 
00136         const bidirected_t::graph* g_; 
00137         const density<bidirected_t>* dens_; 
00138         bidirected_t::edge_name_t win_; 
00139         bidirected_t::edge_name_t wout_; 
00140         vertex_set vertices_; 
00141 };
00142 
00149 std::vector<seed>* fracture_seed(const seed& S);
00150 
00155 void fracture_seed(const seed& S, seed::vertex_set& seen,
00156         seed& P, bidirected_t::vertex v);
00157 
00158 #endif
 All Classes Files Functions Variables Typedefs