27 #ifndef GUM_UNDIGRAPH_H 28 #define GUM_UNDIGRAPH_H 33 #include <agrum/agrum.h> 35 #include <agrum/tools/graphs/parts/edgeGraphPart.h> 36 #include <agrum/tools/graphs/parts/nodeGraphPart.h> 108 class UndiGraph:
public virtual NodeGraphPart,
public EdgeGraphPart {
120 explicit UndiGraph(Size nodes_size = HashTableConst::default_size,
121 bool nodes_resize_policy =
true,
122 Size edges_size = HashTableConst::default_size,
123 bool edges_resize_policy =
true);
127 UndiGraph(
const UndiGraph& g);
130 virtual ~UndiGraph();
141 UndiGraph& operator=(
const UndiGraph& g);
146 bool operator==(
const UndiGraph& g)
const;
151 bool operator!=(
const UndiGraph& g)
const;
168 void addEdge(NodeId first, NodeId second) override;
174 void eraseNode(NodeId id) override;
177 void clear() override;
180 std::string toString()
const override;
183 virtual std::string toDot()
const;
186 bool hasUndirectedCycle()
const;
189 virtual UndiGraph partialUndiGraph(NodeSet nodes);
192 NodeProperty< NodeId > nodes2ConnectedComponent()
const;
198 std::ostream& operator<<(std::ostream&,
const UndiGraph&);
202 #ifndef GUM_NO_INLINE 203 # include <agrum/tools/graphs/undiGraph_inl.h>