27 #ifndef GUM_MIXED_GRAPH_H 28 #define GUM_MIXED_GRAPH_H 33 #include <agrum/agrum.h> 35 #include <agrum/tools/graphs/diGraph.h> 36 #include <agrum/tools/graphs/undiGraph.h> 126 class MixedGraph:
public virtual UndiGraph,
public virtual DiGraph {
140 explicit MixedGraph(Size nodes_size = HashTableConst::default_size,
141 bool nodes_resize_policy =
true,
142 Size arcs_size = HashTableConst::default_size,
143 bool arcs_resize_policy =
true,
144 Size edges_size = HashTableConst::default_size,
145 bool edges_resize_policy =
true);
147 explicit MixedGraph(
const UndiGraph& g);
149 explicit MixedGraph(
const DiGraph& g);
153 MixedGraph(
const MixedGraph& g);
156 virtual ~MixedGraph();
167 MixedGraph& operator=(
const MixedGraph& g);
172 bool operator==(
const MixedGraph& g)
const;
177 bool operator!=(
const MixedGraph& g)
const;
190 virtual void eraseNode(
const NodeId id);
193 virtual void clear();
203 std::vector< NodeId > mixedOrientedPath(NodeId node1, NodeId node2)
const;
211 std::vector< NodeId > mixedUnorientedPath(NodeId node1, NodeId node2)
const;
214 virtual std::string toDot()
const;
217 virtual std::string toString()
const;
222 NodeSet adjacents(
const NodeId id)
const;
227 std::ostream& operator<<(std::ostream&,
const MixedGraph&);
231 #ifndef GUM_NO_INLINE 232 # include <agrum/tools/graphs/mixedGraph_inl.h>