VHISTlib
1.84.0.3018
|
00001 /* $HEADERS 00002 $Id: pathexpander.h 2179 2011-06-24 09:03:24Z ahuesgen $ 00003 */ 00004 00005 #ifndef PATHEXPANDER_H 00006 #define PATHEXPANDER_H 00007 00008 #include <QLinkedList> 00009 00010 #include "workflowtree.h" 00011 #include "path.h" 00012 #include <QHash> 00013 00014 namespace vhist 00015 { 00016 00017 class CostMatrix; 00018 00019 class VHIST_EXTERN PathExpander 00020 { 00021 private: 00022 const WorkflowTree* m_tree1; 00023 const WorkflowTree* m_tree2; 00024 const CostMatrix* m_costs; 00025 00026 public: // construction & destruction 00027 PathExpander(const WorkflowTree* tree1, const WorkflowTree* tree2, 00028 const CostMatrix* costs); 00029 ~PathExpander(); 00030 00031 public: 00032 QLinkedList<NodeId> nodeIds(TreeId treeNo) const; 00033 00034 public: // getter 00035 bool parentChanged(NodeId node1, const Associations& associations, 00036 const Associations& revAssociations) const; 00037 float costForAssociation(NodeId node1, NodeId node2, 00038 const Associations& associations, 00039 const Associations& revAssociations) const; 00040 float costForUnmatchedNodes(int numOfUnmatchedNodes) const; 00041 float heuristicCosts(const QLinkedList<NodeId>& nodes1, 00042 const QLinkedList<NodeId>& nodes2) const; 00043 bool calcParentCostsLater(NodeId node1, NodeId node2, 00044 const Associations& associations, 00045 const Associations& revAssociations) const; 00046 float calcMissingParentCosts(const Associations& associations, 00047 const Associations& revAssociations, 00048 const QHash<NodeId, bool>& parentCostsMissing) const; 00049 }; 00050 00051 } // namespace vhist 00052 00053 #endif // PATHEXPANDER_H