V - the graph vertex typeW - the value typeVG - type of the underlying Guava's value graphpublic abstract class BaseValueGraphAdapter<V,W,VG extends com.google.common.graph.ValueGraph<V,W>> extends AbstractGraph<V,com.google.common.graph.EndpointPair<V>> implements Graph<V,com.google.common.graph.EndpointPair<V>>, Cloneable, Serializable
ValueGraph. This
is a helper class in order to support both mutable and immutable value graphs.| Modifier and Type | Field and Description |
|---|---|
protected Supplier<com.google.common.graph.EndpointPair<V>> |
edgeSupplier |
protected static String |
LOOPS_NOT_ALLOWED |
protected Set<com.google.common.graph.EndpointPair<V>> |
unmodifiableEdgeSet |
protected Set<V> |
unmodifiableVertexSet |
protected ToDoubleFunction<W> |
valueConverter |
protected VG |
valueGraph |
protected Supplier<V> |
vertexSupplier |
DEFAULT_EDGE_WEIGHT| Constructor and Description |
|---|
BaseValueGraphAdapter(VG valueGraph,
ToDoubleFunction<W> valueConverter)
Create a new adapter.
|
BaseValueGraphAdapter(VG valueGraph,
ToDoubleFunction<W> valueConverter,
Supplier<V> vertexSupplier,
Supplier<com.google.common.graph.EndpointPair<V>> edgeSupplier)
Create a new adapter.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
containsEdge(com.google.common.graph.EndpointPair<V> e)
Returns true if this graph contains the specified edge.
|
boolean |
containsVertex(V v)
Returns true if this graph contains the specified vertex.
|
int |
degreeOf(V vertex)
Returns the degree of the specified vertex.
|
Set<com.google.common.graph.EndpointPair<V>> |
edgeSet()
Returns a set of the edges contained in this graph.
|
Set<com.google.common.graph.EndpointPair<V>> |
edgesOf(V vertex)
Returns a set of all edges touching the specified vertex.
|
Set<com.google.common.graph.EndpointPair<V>> |
getAllEdges(V sourceVertex,
V targetVertex)
Returns a set of all edges connecting source vertex to target vertex if such vertices exist
in this graph.
|
com.google.common.graph.EndpointPair<V> |
getEdge(V sourceVertex,
V targetVertex)
Returns an edge connecting source vertex to target vertex if such vertices and such edge
exist in this graph.
|
V |
getEdgeSource(com.google.common.graph.EndpointPair<V> e)
Returns the source vertex of an edge.
|
Supplier<com.google.common.graph.EndpointPair<V>> |
getEdgeSupplier()
Return the edge supplier that the graph uses whenever it needs to create new edges.
|
V |
getEdgeTarget(com.google.common.graph.EndpointPair<V> e)
Returns the target vertex of an edge.
|
double |
getEdgeWeight(com.google.common.graph.EndpointPair<V> e)
Returns the weight assigned to a given edge.
|
GraphType |
getType()
Get the graph type.
|
Supplier<V> |
getVertexSupplier()
Return the vertex supplier that the graph uses whenever it needs to create new vertices.
|
Set<com.google.common.graph.EndpointPair<V>> |
incomingEdgesOf(V vertex)
Returns a set of all edges incoming into the specified vertex.
|
int |
inDegreeOf(V vertex)
Returns the "in degree" of the specified vertex.
|
int |
outDegreeOf(V vertex)
Returns the "out degree" of the specified vertex.
|
Set<com.google.common.graph.EndpointPair<V>> |
outgoingEdgesOf(V vertex)
Returns a set of all edges outgoing from the specified vertex.
|
void |
setEdgeSupplier(Supplier<com.google.common.graph.EndpointPair<V>> edgeSupplier)
Set the edge supplier that the graph uses whenever it needs to create new edges.
|
void |
setVertexSupplier(Supplier<V> vertexSupplier)
Set the vertex supplier that the graph uses whenever it needs to create new vertices.
|
Set<V> |
vertexSet()
Returns a set of the vertices contained in this graph.
|
assertVertexExist, containsEdge, equals, hashCode, removeAllEdges, removeAllEdges, removeAllEdges, removeAllVertices, toString, toStringFromSetsclone, finalize, getClass, notify, notifyAll, wait, wait, waitaddEdge, addEdge, addVertex, addVertex, containsEdge, removeAllEdges, removeAllEdges, removeAllVertices, removeEdge, removeEdge, removeVertex, setEdgeWeight, setEdgeWeightprotected static final String LOOPS_NOT_ALLOWED
protected transient Set<com.google.common.graph.EndpointPair<V>> unmodifiableEdgeSet
protected ToDoubleFunction<W> valueConverter
public BaseValueGraphAdapter(VG valueGraph, ToDoubleFunction<W> valueConverter)
valueGraph - the mutable value graphvalueConverter - a function that converts a value to a doublepublic BaseValueGraphAdapter(VG valueGraph, ToDoubleFunction<W> valueConverter, Supplier<V> vertexSupplier, Supplier<com.google.common.graph.EndpointPair<V>> edgeSupplier)
valueGraph - the mutable value graphvalueConverter - a function that converts a value to a doublevertexSupplier - the vertex supplieredgeSupplier - the edge supplierpublic Supplier<V> getVertexSupplier()
Graph
A graph uses the vertex supplier to create new vertex objects whenever a user calls method
Graph.addVertex(). Users can also create the vertex in user code and then use method
Graph.addVertex(Object) to add the vertex.
In contrast with the Supplier interface, the vertex supplier has the additional
requirement that a new and distinct result is returned every time it is invoked. More
specifically for a new vertex to be added in a graph v must not be equal
to any other vertex in the graph. More formally, the graph must not contain any vertex
v2 such that v2.equals(v).
Care must also be taken when interchanging calls to methods Graph.addVertex(Object)
and Graph.addVertex(). In such a case the user must make sure never to add vertices
in the graph using method Graph.addVertex(Object), which are going to be returned in
the future by the supplied vertex supplier. Such a sequence will result into an
IllegalArgumentException when calling method Graph.addVertex().
getVertexSupplier in interface Graph<V,com.google.common.graph.EndpointPair<V>>null if the graph has no such supplierpublic void setVertexSupplier(Supplier<V> vertexSupplier)
A graph uses the vertex supplier to create new vertex objects whenever a user calls method
Graph.addVertex(). Users can also create the vertex in user code and then use method
Graph.addVertex(Object) to add the vertex.
In contrast with the Supplier interface, the vertex supplier has the additional
requirement that a new and distinct result is returned every time it is invoked. More
specifically for a new vertex to be added in a graph v must not be equal
to any other vertex in the graph. More formally, the graph must not contain any vertex
v2 such that v2.equals(v).
vertexSupplier - the vertex supplierpublic Supplier<com.google.common.graph.EndpointPair<V>> getEdgeSupplier()
Graph
A graph uses the edge supplier to create new edge objects whenever a user calls method
Graph.addEdge(Object, Object). Users can also create the edge in user code and then
use method Graph.addEdge(Object, Object, Object) to add the edge.
In contrast with the Supplier interface, the edge supplier has the additional
requirement that a new and distinct result is returned every time it is invoked. More
specifically for a new edge to be added in a graph e must not be equal to
any other edge in the graph (even if the graph allows edge-multiplicity). More formally, the
graph must not contain any edge e2 such that e2.equals(e).
getEdgeSupplier in interface Graph<V,com.google.common.graph.EndpointPair<V>>null if the graph has no such supplierpublic void setEdgeSupplier(Supplier<com.google.common.graph.EndpointPair<V>> edgeSupplier)
A graph uses the edge supplier to create new edge objects whenever a user calls method
Graph.addEdge(Object, Object). Users can also create the edge in user code and then
use method Graph.addEdge(Object, Object, Object) to add the edge.
In contrast with the Supplier interface, the edge supplier has the additional
requirement that a new and distinct result is returned every time it is invoked. More
specifically for a new edge to be added in a graph e must not be equal to
any other edge in the graph (even if the graph allows edge-multiplicity). More formally, the
graph must not contain any edge e2 such that e2.equals(e).
edgeSupplier - the edge supplierpublic com.google.common.graph.EndpointPair<V> getEdge(V sourceVertex, V targetVertex)
Graph
null. If any of the specified vertices is null returns null
In undirected graphs, the returned edge may have its source and target vertices in the opposite order.
public Set<V> vertexSet()
Graph
The graph implementation may maintain a particular set ordering (e.g. via
LinkedHashSet) for deterministic iteration, but this is not required. It is
the responsibility of callers who rely on this behavior to only use graph implementations
which support it.
public V getEdgeSource(com.google.common.graph.EndpointPair<V> e)
GraphgetEdgeSource in interface Graph<V,com.google.common.graph.EndpointPair<V>>e - edge of interestpublic V getEdgeTarget(com.google.common.graph.EndpointPair<V> e)
GraphgetEdgeTarget in interface Graph<V,com.google.common.graph.EndpointPair<V>>e - edge of interestpublic GraphType getType()
Graphpublic boolean containsEdge(com.google.common.graph.EndpointPair<V> e)
Graphe2 such that
e.equals(e2). If the specified edge is null returns
false.containsEdge in interface Graph<V,com.google.common.graph.EndpointPair<V>>e - edge whose presence in this graph is to be tested.public boolean containsVertex(V v)
Graphu such that
u.equals(v). If the specified vertex is null returns
false.containsVertex in interface Graph<V,com.google.common.graph.EndpointPair<V>>v - vertex whose presence in this graph is to be tested.public Set<com.google.common.graph.EndpointPair<V>> edgeSet()
Graph
The graph implementation may maintain a particular set ordering (e.g. via
LinkedHashSet) for deterministic iteration, but this is not required. It is
the responsibility of callers who rely on this behavior to only use graph implementations
which support it.
public int degreeOf(V vertex)
GraphA degree of a vertex in an undirected graph is the number of edges touching that vertex. Edges with same source and target vertices (self-loops) are counted twice.
In directed graphs this method returns the sum of the "in degree" and the "out degree".
public Set<com.google.common.graph.EndpointPair<V>> edgesOf(V vertex)
Graphpublic int inDegreeOf(V vertex)
GraphThe "in degree" of a vertex in a directed graph is the number of inward directed edges from that vertex. See http://mathworld.wolfram.com/Indegree.html.
In the case of undirected graphs this method returns the number of edges touching the vertex. Edges with same source and target vertices (self-loops) are counted twice.
inDegreeOf in interface Graph<V,com.google.common.graph.EndpointPair<V>>vertex - vertex whose degree is to be calculated.public Set<com.google.common.graph.EndpointPair<V>> incomingEdgesOf(V vertex)
GraphIn the case of undirected graphs this method returns all edges touching the vertex, thus, some of the returned edges may have their source and target vertices in the opposite order.
incomingEdgesOf in interface Graph<V,com.google.common.graph.EndpointPair<V>>vertex - the vertex for which the list of incoming edges to be returned.public int outDegreeOf(V vertex)
GraphThe "out degree" of a vertex in a directed graph is the number of outward directed edges from that vertex. See http://mathworld.wolfram.com/Outdegree.html.
In the case of undirected graphs this method returns the number of edges touching the vertex. Edges with same source and target vertices (self-loops) are counted twice.
outDegreeOf in interface Graph<V,com.google.common.graph.EndpointPair<V>>vertex - vertex whose degree is to be calculated.public Set<com.google.common.graph.EndpointPair<V>> outgoingEdgesOf(V vertex)
GraphIn the case of undirected graphs this method returns all edges touching the vertex, thus, some of the returned edges may have their source and target vertices in the opposite order.
outgoingEdgesOf in interface Graph<V,com.google.common.graph.EndpointPair<V>>vertex - the vertex for which the list of outgoing edges to be returned.public double getEdgeWeight(com.google.common.graph.EndpointPair<V> e)
GraphGraph.DEFAULT_EDGE_WEIGHT), allowing weighted-graph algorithms to apply to them when
meaningful.getEdgeWeight in interface Graph<V,com.google.common.graph.EndpointPair<V>>e - edge of interestpublic Set<com.google.common.graph.EndpointPair<V>> getAllEdges(V sourceVertex, V targetVertex)
Graphnull, returns
null. If both vertices exist but no edges found, returns an empty set.
In undirected graphs, some of the returned edges may have their source and target vertices in the opposite order. In simple graphs the returned set is either singleton set or empty set.
getAllEdges in interface Graph<V,com.google.common.graph.EndpointPair<V>>sourceVertex - source vertex of the edge.targetVertex - target vertex of the edge.Copyright © 2019. All rights reserved.