BALL
1.4.1
|
00001 #ifndef BALL_STRUCTURE_BONDORDERS_KGREEDYBONDORDERSTRATEGY_H 00002 #define BALL_STRUCTURE_BONDORDERS_KGREEDYBONDORDERSTRATEGY_H 00003 00004 #ifndef BALL_STRUCTURE_BONDORDERS_BONDORDERASSIGNMENTSTRATEGY_H 00005 # include <BALL/STRUCTURE/BONDORDERS/bondOrderAssignmentStrategy.h> 00006 #endif 00007 00008 #ifndef BALL_STRUCTURE_BONDORDERS_BONDORDERASSIGNMENT_H 00009 # include <BALL/STRUCTURE/BONDORDERS/bondOrderAssignment.h> 00010 #endif 00011 00012 #ifndef BALL_STRUCTURE_BONDORDERS_ASTARBONDORDERSTRATEGY_H 00013 # include <BALL/STRUCTURE/BONDORDERS/AStarBondOrderStrategy.h> 00014 #endif 00015 00016 namespace BALL 00017 { 00027 class KGreedyBondOrderStrategy 00028 : public AStarBondOrderStrategy 00029 { 00030 public: 00034 00035 struct BALL_EXPORT Option 00036 { 00043 static const char* GREEDY_K_SIZE; 00044 }; 00045 00046 struct BALL_EXPORT Default 00047 { 00048 static const int GREEDY_K_SIZE; 00049 }; 00051 00052 KGreedyBondOrderStrategy(AssignBondOrderProcessor* parent); 00053 virtual ~KGreedyBondOrderStrategy(); 00054 00055 virtual void clear(); 00056 virtual void init(); 00057 00058 virtual bool readOptions(const Options& options); 00059 virtual void setDefaultOptions(); 00060 00061 virtual boost::shared_ptr<BondOrderAssignment> computeNextSolution(); 00062 00063 protected: 00064 00065 float greedy_atom_type_penalty_; 00066 float greedy_bond_length_penalty_; 00067 00068 Size greedy_k_; 00069 00070 vector<PartialBondOrderAssignment> greedy_set_; 00071 00072 Position current_solution_; 00073 00074 int greedy_node_expansions_; 00075 }; 00076 } 00077 00078 #endif // BALL_STRUCTURE_BONDORDERS_KGREEDYBONDORDERSTRATEGY_H