34 #include <agrum/agrum.h> 35 #include <agrum/tools/core/sequence.h> 37 #include <agrum/tools/graphs/parts/arcGraphPart.h> 38 #include <agrum/tools/graphs/parts/nodeGraphPart.h> 110 class DiGraph:
public virtual NodeGraphPart,
public ArcGraphPart {
122 explicit DiGraph(Size nodes_size = HashTableConst::default_size,
123 bool nodes_resize_policy =
true,
124 Size arcs_size = HashTableConst::default_size,
125 bool arcs_resize_policy =
true);
129 DiGraph(
const DiGraph& g);
143 DiGraph& operator=(
const DiGraph& g);
148 bool operator==(
const DiGraph& g)
const;
153 bool operator!=(
const DiGraph& g)
const;
168 virtual void addArc(
const NodeId tail,
const NodeId head);
174 virtual void eraseNode(
const NodeId id);
177 virtual void clear();
180 virtual std::string toString()
const;
185 virtual std::string toDot()
const;
193 const Sequence< NodeId >& topologicalOrder(
bool clear =
true)
const;
205 bool hasDirectedPath(
const NodeId from,
const NodeId to);
209 mutable Sequence< NodeId >* _mutableTopologicalOrder_;
213 void _topologicalOrder_()
const;
217 std::ostream& operator<<(std::ostream&,
const DiGraph&);
221 #ifndef GUM_NO_INLINE 222 # include <agrum/tools/graphs/diGraph_inl.h>