-
Notifications
You must be signed in to change notification settings - Fork 200
Representations
Andrey Vernigora edited this page Feb 4, 2019
·
4 revisions
QuickGraph 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