BALL  1.5.0
FPTBondOrderStrategy.h
Go to the documentation of this file.
1 #ifndef BALL_STRUCTURE_BONDORDERS_FPTBONDORDERSTRATEGY_H
2 #define BALL_STRUCTURE_BONDORDERS_FPTBONDORDERSTRATEGY_H
3 
4 #ifndef BALL_COMMON_GLOBAL_H
5 # include <BALL/COMMON/global.h>
6 #endif
7 
8 #ifndef BALL_MATHS_COMMON_H
9 # include <BALL/MATHS/common.h>
10 #endif
11 
12 #ifndef BALL_KERNEL_ATOMCONTAINER_H
14 #endif
15 
16 #ifndef BALL_KERNEL_BOND_H
17 # include <BALL/KERNEL/bond.h>
18 #endif
19 
20 #ifndef BALL_DATATYPE_HASHMAP_H
21 # include <BALL/DATATYPE/hashMap.h>
22 #endif
23 
24 #ifndef BALL_DATATYPE_GRAPH_H
26 #endif
27 
28 #ifndef BALL_DATATYPE_GRAPH_GRAPHALGORITHMS_H
30 #endif
31 
32 #ifndef BALL_DATATYPE_GRAPH_TREEWIDTH_H
34 #endif
35 
36 #ifndef BALL_STRUCTURE_BONDORDERS_BONDORDERASSIGNMENTSTRATEGY_H
38 #endif
39 
40 #ifndef BALL_STRUCTURE_BONDORDERS_BONDORDERASSIGNMENT_H
42 #endif
43 
44 #include <algorithm>
45 #include <map>
46 #include <set>
47 #include <vector>
48 #include <stack>
49 #include <iterator>
50 #include <queue>
51 
52 #include <boost/shared_ptr.hpp>
53 #include <boost/ref.hpp>
54 
55 namespace BALL
56 {
57  //TODO: documentation is obsolete!
123  {
124  public:
127 
130 
132 
136  typedef float Penalty;
137 
142  typedef int Valence;
143 
148  typedef int BondOrder;
149 
152  static const Penalty infinite_penalty;
153  static const Valence max_valence;
154 
156  struct BALL_EXPORT Option
158  {
164  };
165 
168  {
174  };
175 
177 
179 
184  virtual ~FPTBondOrderStrategy();
185 
191  virtual void clear();
192 
198  virtual void init();
199 
200  virtual bool readOptions(const Options& options);
201  virtual void setDefaultOptions();
202 
208  virtual boost::shared_ptr<BondOrderAssignment> computeNextSolution();
209 
210  protected:
220  class DPConfig_
221  {
222  public:
226  DPConfig_();
227 
233 
237  DPConfig_(std::vector<Valence> const& v, std::vector<BondOrder> const& bo);
238 
242  DPConfig_& operator=(DPConfig_ const& copy);
243 
247  template<typename ValenceIterator, typename BondIterator>
248  DPConfig_(ValenceIterator vit, ValenceIterator vend, BondIterator boit, BondIterator boend)
249  : consumed_valences(vit, vend),
250  bond_assignments(boit, boend)
251  {
252  }
253 
257  bool operator < (DPConfig_ const& conf) const;
258 
262  bool operator > (DPConfig_ const& conf) const;
263 
267  bool operator <= (DPConfig_ const& conf) const;
268 
272  bool operator >= (DPConfig_ const& conf) const;
273 
277  bool operator == (DPConfig_ const& conf) const;
278 
289  int compare(DPConfig_ const& other) const;
290 
294  Size numberOfAtoms() const;
295 
299  Size numberOfBonds() const;
300 
305  std::vector<Valence> consumed_valences;
306 
314  std::vector<BondOrder> bond_assignments;
315 
316  };
317 
322  typedef std::pair<boost::reference_wrapper<DPConfig_>, Penalty> DPRow_;
323 
328  typedef std::pair<boost::reference_wrapper<DPConfig_ const>, Penalty> DPConstRow_;
329 
335  typedef std::pair<DPConfig_*, Penalty> DPPointerRow_;
336 
341  typedef std::map<DPConfig_, Penalty> DPMap_;
342 
350  class DPTable_
351  {
352  protected:
358 
359  public:
363  DPTable_();
364 
368  DPTable_(DPTable_ const& table);
369 
373  typedef DPMap_::iterator iterator;
374 
378  typedef DPMap_::const_iterator const_iterator;
379 
383  Penalty operator[](DPConfig_ const& config) const;
384 
389  bool insert(DPConfig_ const& config, Penalty penalty);
390 
394  Size size() const;
395 
399  Penalty bestPenalty() const;
400 
406  DPConstRow_ bestEntry() const;
407 
411  iterator begin();
412 
416  iterator end();
417 
421  const_iterator begin() const;
422 
426  const_iterator end() const;
427  };
428 
435  {
436  public:
441 
446 
450  AdditionalBagProperties_& operator=(AdditionalBagProperties_ const& copy);
451 
456 
460  std::vector<MolecularGraphTraits::EdgeType> bonds;
461 
466  };
467 
468  class DPBackTracking_;
470 
479  {
480  public:
481  friend class DPBackTracking_;
484 
492  FPTBondOrderAssignment_(FPTBondOrderStrategy& parent, boost::shared_ptr<TreeDecomposition>& ntd,
493  Penalty upper_bound = infinite_penalty);
494 
501 
507  Penalty compute();
508 
509  protected:
514 
519 
523  boost::shared_ptr<TreeDecomposition> ntd_;
524 
529  vector<AdditionalBagProperties_> properties_;
530 
539 
544 
549 
562  DPTable_* operator() (TreeDecompositionBag& bag,
563  std::vector<DPTable_*>::const_iterator begin, std::vector<DPTable_*>::const_iterator end);
564 
572  std::vector<MolecularGraphTraits::EdgeType> getBondsInBag(TreeDecompositionBag& bag);
573 
580  void computeLeafIntroduceBag(AdditionalBagProperties_& bag_properties);
581 
592  void computeIntroduceBag(TreeDecompositionBag& bag,
593  DPTable_& child, AdditionalBagProperties_& bag_properties);
594 
609  void computeForgetBag(TreeDecompositionBag& bag,
610  DPTable_& child, AdditionalBagProperties_& property);
611 
625  void computeJoinBag(TreeDecompositionBag& bag,
626  DPTable_& leftChild, DPTable_& rightChild, AdditionalBagProperties_& bag_properties);
627 
633  void computeRootBag(TreeDecompositionBag& bag, DPTable_& child, AdditionalBagProperties_& bag_properties);
634 
640  Penalty forgetInnerVertexIn(TreeDecompositionBag& bag, DPConstRow_ child_row, DPConfig_& entry,
641  std::vector<MolecularGraphTraits::EdgeType>& child_bonds, Size forgotten_index);
642 
643  };
644 
651  {
652  public:
656  ComputingData_();
657 
661  ~ComputingData_();
662 
666  vector<FPTBondOrderAssignment_*> bond_assignments;
667 
672 
676  boost::shared_ptr<TreeWidth<MolecularGraph> > tw;
677 
682  vector<Bond const *> bonds;
683  };
684 
699  {
700  public:
704  Assignment_();
705 
710  Assignment_(Size num_bonds);
711 
715  Assignment_(Assignment_ const& copy);
716 
721  Assignment_(std::vector<BondOrder> const& bonds, Penalty penalty);
722 
726  Assignment_& operator=(Assignment_ const& copy);
727 
732  BondOrder operator [](Size index) const;
733 
738  BondOrder& operator [](Size index);
739 
750  void combine(Assignment_ const& other);
751 
755  std::vector<BondOrder> const& getBondOrders() const;
756 
762  int compare(Assignment_ const& a) const;
763 
767  bool operator < (Assignment_ const& a) const;
768 
772  bool operator > (Assignment_ const& a) const;
773 
777  bool operator <= (Assignment_ const& a) const;
778 
782  bool operator >= (Assignment_ const& a) const;
783 
787  bool operator == (Assignment_ const& a) const;
788 
797  bool isValid(MolecularGraph& molecule, FPTBondOrderStrategy& parent);
798 
803 
804  protected:
808  std::vector<BondOrder> bonds_;
809 
810  };
811 
818  {
823  bool operator() (DPConfig_ const* leftp, DPConfig_ const* rightp) const;
824 
830  int compare(DPConfig_ const* leftp, DPConfig_ const* rightp) const;
831  };
832 
836  {
837  public:
839 
841  : graph_(graph)
842  { }
843 
844  bool operator() (Edge const& e1, Edge const& e2);
845 
846  protected:
848  };
849 
857  {
858  public:
863 
868 
873 
877  BackTrackingState_& operator=(BackTrackingState_ const& other);
878 
883  int compare(BackTrackingState_ const& other) const;
884 
888  bool operator < (BackTrackingState_ const&) const;
889 
893  bool operator > (BackTrackingState_ const&) const;
894 
898  bool operator <= (BackTrackingState_ const&) const;
899 
903  bool operator >= (BackTrackingState_ const&) const;
904 
908  bool operator == (BackTrackingState_ const&) const;
909 
915 
921 
927  std::stack<std::pair<DPConfig_, Size> > join_branches;
928 
934 
935 
936  };
937 
942  typedef std::pair<DPTable_::const_iterator, DPTable_::const_iterator> DPPairIt_;
943 
947  static bool compareJoinTablePairs_(DPPairIt_ const& left, DPPairIt_ const& right);
948 
952  static bool compareTablePointerEntries_(DPPointerRow_ const& left, DPPointerRow_ const& right);
953 
958  typedef std::multimap<DPConfig_ const*, Penalty, DPJoinMapComparator_> DPJoinMap_;
959 
980  {
981  public:
985 
996  DPBackTracking_(FPTBondOrderAssignment_& bond_assignment, Size max_number_of_solutions,
997  std::vector<MolecularGraphTraits::EdgeType> const& bonds, Penalty upperbound = infinite_penalty);
998 
1002  DPBackTracking_(DPBackTracking_ const& copy);
1003 
1007  ~DPBackTracking_();
1008 
1012  DPBackTracking_& operator= (DPBackTracking_ const& copy);
1013 
1019  Assignment_& getSolution();
1020 
1027  Assignment_ const& getSolution() const;
1028 
1033  bool hasMoreSolutions() const;
1034 
1039  void nextSolution();
1040 
1045  Penalty penaltyOfNextSolution() const;
1046 
1047  void clear();
1048 
1050  {
1051  bags_->push_back(node);
1052  }
1053 
1055  {
1056  }
1057 
1059  {
1060  }
1061 
1062  protected:
1063 
1068  {
1072  bool operator () (BackTrackingState_ const * left, BackTrackingState_ const * right) const;
1073  };
1074 
1081 
1086 
1091  std::multiset<BackTrackingState_*, StateComparator_> queue_;
1092 
1097 
1102  std::vector<MolecularGraphTraits::EdgeType> const* bonds_;
1103 
1107  boost::shared_ptr<std::vector<TreeDecompositionBag> > bags_;
1108 
1114 
1119 
1124 
1125  typedef vector<TreeDecompositionBag> BagVector;
1126 
1130  DPTable_& getTable(Size order);
1131 
1135  AdditionalBagProperties_& getProperties(Size order);
1136 
1142  void visitLeaf(BackTrackingState_& state);
1143 
1156  void visitJoin(BackTrackingState_& state, TreeDecompositionBag& bag,
1157  DPTable_& leftTable, DPTable_& rightTable);
1158 
1166  void visitForget(BackTrackingState_& state, TreeDecompositionBag& bag, DPTable_& table);
1167 
1175  void visitIntroduce(BackTrackingState_& state, TreeDecompositionBag& bag, DPTable_& table);
1176 
1182  Size bondIndexFor(MolecularGraphTraits::EdgeType bond) const;
1183 
1191  void remember(BackTrackingState_& state);
1192 
1197  bool isSolutionNeeded(Penalty penalty);
1198 
1207  void setStateAssignment(BackTrackingState_& state, TreeDecompositionBag& bag,
1208  DPConfig_& antecessor, MolecularGraphTraits::VertexType forgotten_vertex);
1209 
1217  void extendState(BackTrackingState_& state, DPConfig_ const& antecessor, Penalty additional_penalty);
1218 
1225  void branchState(BackTrackingState_& state, TreeDecompositionBag const& child, DPConfig_ const& antecessor);
1226 
1227  };
1228 
1241  {
1242  public:
1248  DPBackTrackingCombiner_(std::vector<FPTBondOrderAssignment_*>& bond_assignments,
1249  Size solution_number, Penalty upper_bound = infinite_penalty);
1250 
1255 
1260 
1261  void clear();
1262 
1266  DPBackTrackingCombiner_& operator = (DPBackTrackingCombiner_ const& copy);
1267 
1271  bool hasMoreSolutions() const;
1272 
1277  void nextSolution();
1278 
1282  Assignment_& getSolution();
1283 
1287  Assignment_ const& getSolution() const;
1288 
1293  Penalty penaltyOfNextSolution() const;
1294 
1299  std::vector<MolecularGraphTraits::EdgeType> sorted_edges;
1300 
1301  protected:
1305  std::vector<DPBackTracking_*> backtrackers_;
1306 
1312  std::priority_queue<Assignment_, std::vector<Assignment_>, std::greater<Assignment_> > priority_queue_;
1313 
1318  std::vector<std::vector<Assignment_> > component_solutions_;
1319 
1324 
1329 
1334 
1339 
1344  std::pair<Size, Penalty> getNextMinimumBackTracker_() const;
1345 
1351  void applyAssignment_(Size backtracker_index, Size solution_index);
1352 
1356  void initialize_();
1357 
1362  void combineEachSolution_(Size mindex);
1363 
1367  std::vector<DPBackTracking_*> deepCopyOfBacktrackers_() const;
1368 
1369  };
1370 
1371 
1373  void initPenaltyData_();
1374 
1376  Penalty getPenaltyFor_(MolecularGraphTraits::VertexType vertex, Valence valence) const;
1377 
1381  std::vector<int> const* penalties_;
1382 
1386  std::vector<Position> const * block_to_start_idx_;
1387 
1391  std::vector<Size> const * block_to_length_;
1392 
1396  std::vector<int> const * block_to_start_valence_;
1397 
1401  std::vector<std::vector<int> > const* atom_to_block_;
1402 
1407  boost::shared_ptr<ComputingData_> computing_data_;
1408 
1412  boost::shared_ptr<DPBackTrackingCombiner_> combiner_;
1413  };
1414 }
1415 #endif // BALL_STRUCTURE_BONDORDERS_FPTBONDORDERSTRATEGY_H
BALL::FPTBondOrderStrategy::Option::UPPER_PENALTY_BOUND
static String UPPER_PENALTY_BOUND
Definition: FPTBondOrderStrategy.h:163
BALL::FPTBondOrderStrategy::DPBackTracking_::BagVector
vector< TreeDecompositionBag > BagVector
Definition: FPTBondOrderStrategy.h:1125
BALL::FPTBondOrderStrategy::DPConfig_
Definition: FPTBondOrderStrategy.h:220
BALL::FPTBondOrderStrategy::DPConfig_::bond_assignments
std::vector< BondOrder > bond_assignments
Definition: FPTBondOrderStrategy.h:314
BALL::FPTBondOrderStrategy::DPConstRow_
std::pair< boost::reference_wrapper< DPConfig_ const >, Penalty > DPConstRow_
Definition: FPTBondOrderStrategy.h:328
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::component_solutions_
std::vector< std::vector< Assignment_ > > component_solutions_
Definition: FPTBondOrderStrategy.h:1318
BALL::FPTBondOrderStrategy::EdgeComparator_::graph_
MolecularGraph * graph_
Definition: FPTBondOrderStrategy.h:847
BALL::FPTBondOrderStrategy::DPBackTracking_::max_heap_size_
Size max_heap_size_
Definition: FPTBondOrderStrategy.h:1113
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::backtrackers_
std::vector< DPBackTracking_ * > backtrackers_
Definition: FPTBondOrderStrategy.h:1305
BALL::FPTBondOrderStrategy::TreeDecompositionBag
TreeWidth< MolecularGraph >::TreeDecompositionBag TreeDecompositionBag
Definition: FPTBondOrderStrategy.h:129
BALL::atoms
BALL_EXPORT AtomList atoms(const AtomContainer &fragment, const String &expression=String())
BALL::FPTBondOrderStrategy::Assignment_::bonds_
std::vector< BondOrder > bonds_
Definition: FPTBondOrderStrategy.h:808
BALL::FPTBondOrderStrategy::DPBackTracking_::max_num_solutions_
Size max_num_solutions_
Definition: FPTBondOrderStrategy.h:1096
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::properties_
vector< AdditionalBagProperties_ > properties_
Definition: FPTBondOrderStrategy.h:529
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::max_valence_
Valence max_valence_
Definition: FPTBondOrderStrategy.h:548
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::solution_number_
Size solution_number_
Definition: FPTBondOrderStrategy.h:1328
BALL::Options
Definition: options.h:46
BALL::FPTBondOrderStrategy::DPBackTracking_::TreeDecompositionBag
TreeWidth< MolecularGraph >::TreeDecompositionBag TreeDecompositionBag
Definition: FPTBondOrderStrategy.h:983
BALL::GRAPH::PostOrderFolding
Definition: graphAlgorithms.h:325
hashMap.h
BALL::FPTBondOrderStrategy::DPBackTracking_::upper_bound_
Penalty upper_bound_
Definition: FPTBondOrderStrategy.h:1123
bondOrderAssignment.h
BALL::bonds
BALL_EXPORT BondList bonds(const AtomContainer &fragment, bool selected_only=false)
BALL::FPTBondOrderStrategy::DPConfig_::consumed_valences
std::vector< Valence > consumed_valences
Definition: FPTBondOrderStrategy.h:305
BALL::FPTBondOrderStrategy::DPTable_::iterator
DPMap_::iterator iterator
Definition: FPTBondOrderStrategy.h:373
bond.h
BALL::FPTBondOrderStrategy::Assignment_::penalty
Penalty penalty
Definition: FPTBondOrderStrategy.h:802
BALL::operator<
BALL_EXPORT bool operator<(const String &s1, const String &s2)
BALL::FPTBondOrderStrategy::BackTrackingState_::index
Size index
Definition: FPTBondOrderStrategy.h:933
BALL::FPTBondOrderStrategy::DPBackTracking_::TreeDecomposition
TreeWidth< MolecularGraph >::TreeDecomposition TreeDecomposition
Definition: FPTBondOrderStrategy.h:982
BALL::FPTBondOrderStrategy::DPPairIt_
std::pair< DPTable_::const_iterator, DPTable_::const_iterator > DPPairIt_
Definition: FPTBondOrderStrategy.h:942
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::assignment_
Assignment_ assignment_
Definition: FPTBondOrderStrategy.h:1323
BALL::FPTBondOrderStrategy::DPTable_::const_iterator
DPMap_::const_iterator const_iterator
Definition: FPTBondOrderStrategy.h:378
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::upper_bound_
Penalty upper_bound_
Definition: FPTBondOrderStrategy.h:1338
BALL::FPTBondOrderStrategy::VertexType
GRAPH::GraphTraits< MolecularGraph >::VertexType VertexType
Definition: FPTBondOrderStrategy.h:126
BALL::FPTBondOrderStrategy::DPBackTracking_::num_computed_solutions_
Size num_computed_solutions_
Definition: FPTBondOrderStrategy.h:1118
BALL::FPTBondOrderStrategy::Option
Option names.
Definition: FPTBondOrderStrategy.h:157
BALL::String
Definition: string.h:56
BALL::AssignBondOrderProcessor
Assignment of bond orders from topology information.
Definition: assignBondOrderProcessor.h:88
BALL::operator>
BALL_EXPORT bool operator>(const String &s1, const String &s2)
BALL::FPTBondOrderStrategy::infinite_penalty
static const Penalty infinite_penalty
Definition: FPTBondOrderStrategy.h:152
bondOrderAssignmentStrategy.h
graphAlgorithms.h
BALL::FPTBondOrderStrategy::Penalty
float Penalty
Definition: FPTBondOrderStrategy.h:136
BALL::operator>=
BALL_EXPORT bool operator>=(const String &s1, const String &s2)
BALL::FPTBondOrderStrategy::BackTrackingState_::config
DPConfig_ config
Definition: FPTBondOrderStrategy.h:920
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::parent_
FPTBondOrderStrategy * parent_
Definition: FPTBondOrderStrategy.h:513
BALL
Definition: constants.h:12
BALL::FPTBondOrderStrategy::EdgeComparator_::EdgeComparator_
EdgeComparator_(MolecularGraph *graph)
Definition: FPTBondOrderStrategy.h:840
BALL::FPTBondOrderStrategy::DPBackTracking_::TreeDecompositionContent
TreeWidth< MolecularGraph >::TreeDecompositionContent TreeDecompositionContent
Definition: FPTBondOrderStrategy.h:984
BALL::FPTBondOrderStrategy::AdditionalBagProperties_::bonds
std::vector< MolecularGraphTraits::EdgeType > bonds
Definition: FPTBondOrderStrategy.h:460
BALL::FPTBondOrderStrategy::DPBackTracking_
Definition: FPTBondOrderStrategy.h:979
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::max_bond_order_
BondOrder max_bond_order_
Definition: FPTBondOrderStrategy.h:543
BALL::BondOrderAssignmentStrategy
Base class for bond order assignment algorithms.
Definition: bondOrderAssignmentStrategy.h:26
BALL::FPTBondOrderStrategy::block_to_start_idx_
const std::vector< Position > * block_to_start_idx_
Definition: FPTBondOrderStrategy.h:1386
BALL::FPTBondOrderStrategy::DPRow_
std::pair< boost::reference_wrapper< DPConfig_ >, Penalty > DPRow_
Definition: FPTBondOrderStrategy.h:322
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::upper_bound_
Penalty upper_bound_
Definition: FPTBondOrderStrategy.h:538
BALL::FPTBondOrderStrategy::max_valence
static const Valence max_valence
Definition: FPTBondOrderStrategy.h:153
BALL::FPTBondOrderStrategy::EdgeComparator_
Definition: FPTBondOrderStrategy.h:835
BALL::FPTBondOrderStrategy::computing_data_
boost::shared_ptr< ComputingData_ > computing_data_
Definition: FPTBondOrderStrategy.h:1407
BALL::FPTBondOrderStrategy::DPBackTracking_::current_state_
BackTrackingState_ * current_state_
Definition: FPTBondOrderStrategy.h:1085
BALL::FPTBondOrderStrategy::block_to_length_
const std::vector< Size > * block_to_length_
Definition: FPTBondOrderStrategy.h:1391
BALL::FPTBondOrderStrategy::ComputingData_
Definition: FPTBondOrderStrategy.h:650
BALL::FPTBondOrderStrategy::BondOrder
int BondOrder
Definition: FPTBondOrderStrategy.h:148
BALL::GRAPH::GraphTraits::EdgeType
boost::graph_traits< Graph >::edge_descriptor EdgeType
Definition: graphAlgorithms.h:80
BALL::FPTBondOrderStrategy::Edge
GRAPH::GraphTraits< MolecularGraph >::EdgeType Edge
Definition: FPTBondOrderStrategy.h:125
BALL::MolecularGraph
Definition: molecularGraph.h:46
BALL::TreeWidth::TreeDecompositionContent
std::set< OriginalVertexType > TreeDecompositionContent
Definition: treeWidth.h:99
BALL_SIZE_TYPE
BALL::GRAPH::GraphTraits::VertexType
boost::graph_traits< Graph >::vertex_descriptor VertexType
Definition: graphAlgorithms.h:77
BALL::FPTBondOrderStrategy::ComputingData_::tw
boost::shared_ptr< TreeWidth< MolecularGraph > > tw
Definition: FPTBondOrderStrategy.h:676
BALL::FPTBondOrderStrategy::DPBackTracking_::bonds_
std::vector< MolecularGraphTraits::EdgeType > const * bonds_
Definition: FPTBondOrderStrategy.h:1102
BALL::FPTBondOrderStrategy::AdditionalBagProperties_::table
DPTable_ * table
Definition: FPTBondOrderStrategy.h:465
BALL::FPTBondOrderStrategy::block_to_start_valence_
const std::vector< int > * block_to_start_valence_
Definition: FPTBondOrderStrategy.h:1396
BALL::FPTBondOrderStrategy::AdditionalBagProperties_
Definition: FPTBondOrderStrategy.h:434
BALL::FPTBondOrderStrategy::DPTable_::table
DPMap_ table
Definition: FPTBondOrderStrategy.h:357
BALL::FPTBondOrderStrategy::DPBackTracking_::bond_assignment_
FPTBondOrderAssignment_ * bond_assignment_
Definition: FPTBondOrderStrategy.h:1080
BALL::FPTBondOrderStrategy::Default
Default option values.
Definition: FPTBondOrderStrategy.h:167
BALL::FPTBondOrderStrategy::DPBackTracking_::preorder
void preorder(TreeDecompositionBag node, TreeDecomposition &)
Definition: FPTBondOrderStrategy.h:1049
BALL::FPTBondOrderStrategy::DPMap_
std::map< DPConfig_, Penalty > DPMap_
Definition: FPTBondOrderStrategy.h:341
global.h
common.h
BALL::FPTBondOrderStrategy::Valence
int Valence
Definition: FPTBondOrderStrategy.h:142
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::ntd_
boost::shared_ptr< TreeDecomposition > ntd_
Definition: FPTBondOrderStrategy.h:523
BALL::FPTBondOrderStrategy::ComputingData_::bond_assignments
vector< FPTBondOrderAssignment_ * > bond_assignments
Definition: FPTBondOrderStrategy.h:666
BALL::FPTBondOrderStrategy::Default::UPPER_PENALTY_BOUND
static Penalty UPPER_PENALTY_BOUND
Definition: FPTBondOrderStrategy.h:173
BALL::Maths::compare
Index compare(const T1 &a, const T2 &b)
Definition: MATHS/common.h:307
BALL::FPTBondOrderStrategy::DPConfig_::DPConfig_
DPConfig_(ValenceIterator vit, ValenceIterator vend, BondIterator boit, BondIterator boend)
Definition: FPTBondOrderStrategy.h:248
molecularGraph.h
BALL::TreeWidth::TreeDecompositionBag
boost::graph_traits< TreeDecompositionGraph >::vertex_descriptor TreeDecompositionBag
Definition: treeWidth.h:107
BALL::FPTBondOrderStrategy::combiner_
boost::shared_ptr< DPBackTrackingCombiner_ > combiner_
Definition: FPTBondOrderStrategy.h:1412
BALL::FPTBondOrderStrategy::atom_to_block_
std::vector< std::vector< int > > const * atom_to_block_
Definition: FPTBondOrderStrategy.h:1401
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_
Definition: FPTBondOrderStrategy.h:1240
BALL::FPTBondOrderStrategy::DPJoinMap_
std::multimap< DPConfig_ const *, Penalty, DPJoinMapComparator_ > DPJoinMap_
Definition: FPTBondOrderStrategy.h:958
BALL::operator==
BALL_EXPORT bool operator==(const String &s1, const String &s2)
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_::molecule_
MolecularGraph * molecule_
Definition: FPTBondOrderStrategy.h:518
BALL::FPTBondOrderStrategy::TreeDecomposition
TreeWidth< MolecularGraph >::TreeDecomposition TreeDecomposition
Definition: FPTBondOrderStrategy.h:128
BALL::FPTBondOrderStrategy::DPPointerRow_
std::pair< DPConfig_ *, Penalty > DPPointerRow_
Definition: FPTBondOrderStrategy.h:335
BALL::FPTBondOrderStrategy::ComputingData_::bonds
vector< Bond const * > bonds
Definition: FPTBondOrderStrategy.h:682
BALL::FPTBondOrderStrategy::DPJoinMapComparator_
Definition: FPTBondOrderStrategy.h:817
BALL::FPTBondOrderStrategy::penalties_
std::vector< int > const * penalties_
Definition: FPTBondOrderStrategy.h:1381
BALL::FPTBondOrderStrategy::DPBackTracking_::queue_
std::multiset< BackTrackingState_ *, StateComparator_ > queue_
Definition: FPTBondOrderStrategy.h:1091
atomContainer.h
BALL::FPTBondOrderStrategy::DPBackTracking_::StateComparator_
Definition: FPTBondOrderStrategy.h:1067
BALL::FPTBondOrderStrategy::DPBackTracking_::bags_
boost::shared_ptr< std::vector< TreeDecompositionBag > > bags_
Definition: FPTBondOrderStrategy.h:1107
BALL::FPTBondOrderStrategy::DPBackTracking_::inorder
void inorder(TreeDecompositionBag, TreeDecomposition &)
Definition: FPTBondOrderStrategy.h:1054
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::optimum_
Penalty optimum_
Definition: FPTBondOrderStrategy.h:1333
BALL::FPTBondOrderStrategy::EdgeComparator_::Edge
GRAPH::GraphTraits< MolecularGraph >::EdgeType Edge
Definition: FPTBondOrderStrategy.h:838
treeWidth.h
BALL::FPTBondOrderStrategy::DPTable_
Definition: FPTBondOrderStrategy.h:350
BALL::operator<=
BALL_EXPORT bool operator<=(const String &s1, const String &s2)
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::sorted_edges
std::vector< MolecularGraphTraits::EdgeType > sorted_edges
Definition: FPTBondOrderStrategy.h:1299
BALL::FPTBondOrderStrategy::BackTrackingState_
Definition: FPTBondOrderStrategy.h:856
BALL_EXPORT
#define BALL_EXPORT
Definition: COMMON/global.h:50
BALL::FPTBondOrderStrategy
Definition: FPTBondOrderStrategy.h:121
BALL::FPTBondOrderStrategy::DPBackTrackingCombiner_::priority_queue_
std::priority_queue< Assignment_, std::vector< Assignment_ >, std::greater< Assignment_ > > priority_queue_
Definition: FPTBondOrderStrategy.h:1312
BALL::FPTBondOrderStrategy::Assignment_
Definition: FPTBondOrderStrategy.h:698
BALL::FPTBondOrderStrategy::ComputingData_::molecule_graph
MolecularGraph * molecule_graph
Definition: FPTBondOrderStrategy.h:671
BALL::TreeWidth::TreeDecomposition
boost::graph_as_tree< TreeDecompositionGraph, TreeDecompositionParentMap > TreeDecomposition
Definition: treeWidth.h:112
BALL::FPTBondOrderStrategy::BackTrackingState_::assignment
Assignment_ assignment
Definition: FPTBondOrderStrategy.h:914
BALL::FPTBondOrderStrategy::DPBackTracking_::postorder
void postorder(TreeDecompositionBag, TreeDecomposition &)
Definition: FPTBondOrderStrategy.h:1058
BALL::FPTBondOrderStrategy::BackTrackingState_::join_branches
std::stack< std::pair< DPConfig_, Size > > join_branches
Definition: FPTBondOrderStrategy.h:927
float
BALL::FPTBondOrderStrategy::FPTBondOrderAssignment_
Definition: FPTBondOrderStrategy.h:478