Direct Graphical Models  v.1.7.0
GraphDense.h
1 // Dense Graph class interface
2 // Written by Sergey G. Kosov in 2018 for Project X
3 #pragma once
4 
5 #include "Graph.h"
6 
7 namespace DirectGraphicalModels
8 {
9  // ================================ Graph Interface Class ================================
15  class CGraphDense : public CGraph
16  {
17  public:
22  DllExport CGraphDense(byte nStates) : CGraph(nStates), m_nodePotentials(EmptyMat) {}
23  DllExport virtual ~CGraphDense(void) = default;
24 
25  // CGraph
26  DllExport void reset(void) override { m_nodePotentials.release(); m_vpEdgeModels.clear(); }
27 
28  DllExport size_t addNode(const Mat &pot = EmptyMat) override;
29  DllExport void addNodes(const Mat &pots) override { m_nodePotentials.push_back(pots); }
30 
31  DllExport void setNode(size_t node, const Mat &pot) override;
32  DllExport void setNodes(size_t start_node, const Mat &pots) override;
33 
34  DllExport void getNode(size_t node, Mat &pot) const override;
35  DllExport void getNodes(size_t start_node, size_t num_nodes, Mat &pots) const override;
36 
37  DllExport void getChildNodes (size_t node, vec_size_t &vNodes) const override;
38  DllExport void getParentNodes(size_t node, vec_size_t &vNodes) const override { getChildNodes(node, vNodes); }
39 
40  DllExport size_t getNumNodes(void) const override { return static_cast<size_t>(m_nodePotentials.rows); }
41  DllExport size_t getNumEdges(void) const override { return getNumNodes() * (getNumNodes() - 1) / 2; }
42 
43  // Own
49  DllExport void addEdgeModel(const ptr_edgeModel_t& pEdgeModel) { m_vpEdgeModels.push_back(pEdgeModel); }
54  Mat getNodePotentials(void) const { return m_nodePotentials; }
60  std::vector<ptr_edgeModel_t>& getEdgeModels(void) const { return m_vpEdgeModels; }
61 
62 
63  private:
65  mutable std::vector<ptr_edgeModel_t> m_vpEdgeModels;
66  };
67 }
virtual ~CGraphDense(void)=default
std::vector< ptr_edgeModel_t > & getEdgeModels(void) const
Returns the contener with edge models.
Definition: GraphDense.h:60
std::shared_ptr< IEdgeModel > ptr_edgeModel_t
Definition: types.h:74
size_t getNumEdges(void) const override
Returns the number of edges in the graph.
Definition: GraphDense.h:41
void getParentNodes(size_t node, vec_size_t &vNodes) const override
Returns the set of IDs of the parent nodes of the argument node.
Definition: GraphDense.h:38
size_t getNumNodes(void) const override
Returns the number of nodes in the graph.
Definition: GraphDense.h:40
void addNodes(const Mat &pots) override
Adds the graph nodes with potentials.
Definition: GraphDense.h:29
size_t addNode(const Mat &pot=EmptyMat) override
Adds an additional node (with specified potentional)
Definition: GraphDense.cpp:7
void addEdgeModel(const ptr_edgeModel_t &pEdgeModel)
Adds an edge model.
Definition: GraphDense.h:49
Interface class for graphical models.
Definition: Graph.h:14
Mat m_nodePotentials
The container for the node potentials: Mat(nNodes, nStates, CV_32FC1), i.e. every row is a node poten...
Definition: GraphDense.h:64
void setNodes(size_t start_node, const Mat &pots) override
Fills the graph nodes with new potentials.
Definition: GraphDense.cpp:25
CGraphDense(byte nStates)
Constructor.
Definition: GraphDense.h:22
void reset(void) override
Resets the graph.
Definition: GraphDense.h:26
void getNode(size_t node, Mat &pot) const override
Returns the node potential.
Definition: GraphDense.cpp:36
Mat getNodePotentials(void) const
Returns the container with node potentials.
Definition: GraphDense.h:54
void setNode(size_t node, const Mat &pot) override
Sets or changes the potential of node.
Definition: GraphDense.cpp:15
std::vector< ptr_edgeModel_t > m_vpEdgeModels
The set of edge models.
Definition: GraphDense.h:65
void getChildNodes(size_t node, vec_size_t &vNodes) const override
Returns the set of IDs of the child nodes of the argument node.
Definition: GraphDense.cpp:56
void getNodes(size_t start_node, size_t num_nodes, Mat &pots) const override
Returns the node potentials.
Definition: GraphDense.cpp:47
Fully-connected (dense) graph class.
Definition: GraphDense.h:15