forked from YaccConstructor/QuickGraph
-
-
Notifications
You must be signed in to change notification settings - Fork 71
Representations
Alexandre Rabérin edited this page May 11, 2020
·
1 revision
QuikGraph provides various data structures that can represent directed/undirected dense/sparse graphs. All data structures are serializable,
cloneable and not thread safe.
Graphs are mutable or immutable (immutable graphs usually have a more compact representation). The delegate based graphs can be used to keep the memory consumption low.
- Directed graphs
- AdjacencyGraph provides access to vertices, edges and out-edges of sparse directed graphs.
- BidirectionalGraph extends AdjacencyGraph by providing access to in-edges but it requires the double of memory space.
- BidirectionalMatrixGraph represented by an array. Efficient for dense directed graphs with known number of vertices.
- ArrayAdjacencyGraph and ArrayBidirectionalGraph are read only equivalent of AdjacencyGraph and BidirectionalGraph. They also use slightly less memory.
- CompressedSparseRowGraph is an adjacency graph using a compact representation called compressed sparse row. Only the vertex can be of custom type.
-
DelegateImplicitGraph wraps the
IImplicitGraph
interface on top of a delegate that a vertex to a set of out vertices. This representation is efficient for large graph that cannot be stored in memory at once. -
DelegateIncidenceGraph wraps the
IIncidenceGraph
interface, and extends DelegateImplicitGraph. -
DelegateVertexAndEdgeListGraph wraps the
IVertexAndEdgeListGraph
, extends the DelegateIncidenceGraph, and also uses an enumeration for the vertices.
- Undirected graphs
- UndirectedGraph provides a representation for sparse undirected graphs.
- Adapters
- BidirectionalAdapterGraph wraps an adjacency graph into a bidirectional graph (access to in-edges).
- UndirectedBidirectionalGraph wraps a bidirectional graph into a undirected graph