## Class SparseIntUndirectedGraph

• java.lang.Object
• org.jgrapht.graph.AbstractGraph<java.lang.Integer,​java.lang.Integer>
• org.jgrapht.opt.graph.sparse.specifics.AbstractSparseSpecificsGraph<org.jgrapht.opt.graph.sparse.specifics.SparseGraphSpecifics>
• org.jgrapht.opt.graph.sparse.SparseIntUndirectedGraph
• All Implemented Interfaces:
Graph<java.lang.Integer,​java.lang.Integer>
Direct Known Subclasses:
SparseIntUndirectedWeightedGraph

public class SparseIntUndirectedGraph
extends org.jgrapht.opt.graph.sparse.specifics.AbstractSparseSpecificsGraph<org.jgrapht.opt.graph.sparse.specifics.SparseGraphSpecifics>
Sparse undirected graph.

Assuming the graph has $n$ vertices, the vertices are numbered from $0$ to $n-1$. Similarly, edges are numbered from $0$ to $m-1$ where $m$ is the total number of edges.

It stores the boolean incidence matrix of the graph (rows are vertices and columns are edges) as Compressed Sparse Rows (CSR). In order to also support constant time source and target lookups from an edge identifier we also store the transposed of the incidence matrix again in compressed sparse rows format. This is a classic format for write-once read-many use cases. Thus, the graph is unmodifiable.

The question of whether a sparse or dense representation is more appropriate is highly dependent on various factors such as the graph, the machine running the algorithm and the algorithm itself. Wilkinson defined a matrix as "sparse" if it has enough zeros that it pays to take advantage of them. For more details see

• Wilkinson, J. H. 1971. Linear algebra; part II: the algebraic eigenvalue problem. In Handbook for Automatic Computation, J. H. Wilkinson and C. Reinsch, Eds. Vol. 2. Springer-Verlag, Berlin, New York.
Author:
Dimitrios Michail

• ### Fields inherited from class org.jgrapht.opt.graph.sparse.specifics.AbstractSparseSpecificsGraph

specifics, UNMODIFIABLE
• ### Fields inherited from interface org.jgrapht.Graph

DEFAULT_EDGE_WEIGHT
• ### Constructor Summary

Constructors
Constructor Description
SparseIntUndirectedGraph​(int numVertices, int numEdges, java.util.function.Supplier<java.util.stream.Stream<Pair<java.lang.Integer,​java.lang.Integer>>> edges)
Create a new graph from an edge stream
SparseIntUndirectedGraph​(int numVertices, java.util.List<Pair<java.lang.Integer,​java.lang.Integer>> edges)
Create a new graph from an edge list

• ### Methods inherited from class org.jgrapht.opt.graph.sparse.specifics.AbstractSparseSpecificsGraph

addEdge, addEdge, addVertex, addVertex, containsEdge, containsVertex, degreeOf, edgeSet, edgesOf, getAllEdges, getEdge, getEdgeSource, getEdgeSupplier, getEdgeTarget, getEdgeWeight, getType, getVertexSupplier, incomingEdgesOf, inDegreeOf, outDegreeOf, outgoingEdgesOf, removeEdge, removeEdge, removeVertex, setEdgeWeight, vertexSet
• ### Methods inherited from class org.jgrapht.graph.AbstractGraph

assertVertexExist, containsEdge, equals, hashCode, removeAllEdges, removeAllEdges, removeAllEdges, removeAllVertices, toString, toStringFromSets
• ### Methods inherited from class java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
• ### Methods inherited from interface org.jgrapht.Graph

iterables, setEdgeWeight
• ### Constructor Detail

• #### SparseIntUndirectedGraph

public SparseIntUndirectedGraph​(int numVertices,
java.util.List<Pair<java.lang.Integer,​java.lang.Integer>> edges)
Create a new graph from an edge list
Parameters:
numVertices - number of vertices
edges - edge list
• #### SparseIntUndirectedGraph

public SparseIntUndirectedGraph​(int numVertices,
int numEdges,
java.util.function.Supplier<java.util.stream.Stream<Pair<java.lang.Integer,​java.lang.Integer>>> edges)
Create a new graph from an edge stream
Parameters:
numVertices - number of vertices
numEdges - number of edges
edges - supplier of an edge stream