aGrUM  0.16.0
partialOrderedTriangulation.cpp
Go to the documentation of this file.
1 
30 #include <agrum/agrum.h>
31 
33 
34 namespace gum {
35 
36  // default constructor
39  const JunctionTreeStrategy& JTStrategy,
40  bool minimality) :
41  StaticTriangulation(elimSeq, JTStrategy, minimality) {
42  // for debugging purposes
43  GUM_CONSTRUCTOR(PartialOrderedTriangulation);
44  }
45 
46  // constructor with a given graph
48  const UndiGraph* theGraph,
49  const NodeProperty< Size >* dom,
50  const List< NodeSet >* partial_order,
52  const JunctionTreeStrategy& JTStrategy,
53  bool minimality) :
54  StaticTriangulation(theGraph, dom, elimSeq, JTStrategy, minimality),
55  __partial_order(partial_order) {
59 
60  // for debugging purposes
61  GUM_CONSTRUCTOR(PartialOrderedTriangulation);
62  }
63 
64  // copy constructor
66  const PartialOrderedTriangulation& from) :
67  StaticTriangulation(from),
69  // for debugging purposes
70  GUM_CONS_CPY(PartialOrderedTriangulation);
71  }
72 
73  // move constructor
76  StaticTriangulation(std::move(from)),
78  // for debugging purposes
79  GUM_CONS_MOV(PartialOrderedTriangulation);
80  }
81 
84  return new PartialOrderedTriangulation(
85  static_cast< const PartialOrderedEliminationSequenceStrategy& >(
88  }
89 
92  return new PartialOrderedTriangulation(*this);
93  }
94 
97  // for debugging purposes
98  GUM_DESTRUCTOR(PartialOrderedTriangulation);
99  }
100 
102  void
104  const NodeProperty< Size >* domsizes) {
105  StaticTriangulation::setGraph(graph, domsizes);
109  }
110 
113  const List< NodeSet >* partial_order) {
114  __partial_order = partial_order;
118  }
119 
125  elim->setGraph(&graph, _domain_sizes);
127  }
128 
129 } /* namespace gum */
EliminationSequenceStrategy * _elimination_sequence_strategy
the elimination sequence strategy used by the triangulation
const List< NodeSet > * __partial_order
the partial ordering to apply to eliminate nodes
virtual bool setPartialOrder(const List< NodeSet > *subsets)
sets a new partial ordering constraint on the elimination sequence
STL namespace.
JunctionTreeStrategy * _junction_tree_strategy
the junction tree strategy used by the triangulation
virtual void _initTriangulation(UndiGraph &graph) final
the function called to initialize the triangulation process
Generic doubly linked lists.
Definition: list.h:372
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
virtual PartialOrderedTriangulation * newFactory() const
returns a fresh triangulation (over an empty graph) of the same type as the current object ...
The class for generic Hash Tables.
Definition: hashTable.h:679
PartialOrderedTriangulation(const PartialOrderedEliminationSequenceStrategy &elimSeq=DefaultPartialOrderedEliminationSequenceStrategy(), const JunctionTreeStrategy &JTStrategy=DefaultJunctionTreeStrategy(), bool minimality=false)
default constructor
const NodeProperty< Size > * _domain_sizes
the domain sizes of the variables/nodes of the graph
Base class for all elimination sequence algorithm that impose a given partial ordering on the nodes e...
virtual bool setGraph(UndiGraph *graph, const NodeProperty< Size > *dom_sizes)
sets a new graph to be triangulated
class for graph triangulations for which we enforce a given partial ordering on the nodes elimination...
Base Class for all the algorithms producing a junction given a set of cliques/subcliques resulting fr...
virtual void setPartialOrder(const List< NodeSet > *partial_order) final
sets the elimination sequence&#39;s partial order (only a reference is stored)
virtual PartialOrderedTriangulation * copyFactory() const final
virtual copy constructor
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
base class for all non-incremental triangulation methods
Base class for undirected graphs.
Definition: undiGraph.h:109
virtual void setGraph(const UndiGraph *graph, const NodeProperty< Size > *domsizes)
initialize the triangulation data structures for a new graph
virtual void setGraph(const UndiGraph *graph, const NodeProperty< Size > *domsizes) final
initialize the triangulation data structures for a new graph