V
- the vertex typeE
- the edge typepublic interface Graph<V,E> extends Hypergraph<V,E>
V
set and a set of edges of type E
. Edges of this
graph type have exactly two endpoints; whether these endpoints
must be distinct depends on the implementation.
This interface permits, but does not enforce, any of the following common variations of graphs:
Definitions (with respect to a given vertex v
):
v
: an edge that can be traversed from a neighbor of v
to reach v
v
: an edge that can be traversed from v
to reach some neighbor of v
v
: a vertex at the other end of an incoming edge of v
v
: a vertex at the other end of an outgoing edge of v
Modifier and Type | Method and Description |
---|---|
boolean |
addEdge(E e,
V v1,
V v2)
Adds edge
e to this graph such that it connects
vertex v1 to v2 . |
boolean |
addEdge(E e,
V v1,
V v2,
EdgeType edgeType)
Adds edge
e to this graph such that it connects
vertex v1 to v2 . |
V |
getDest(E directedEdge)
If
directed_edge is a directed edge in this graph, returns the destination;
otherwise returns null . |
Pair<V> |
getEndpoints(E edge)
Returns the endpoints of
edge as a Pair . |
java.util.Collection<E> |
getInEdges(V vertex)
Returns a
Collection view of the incoming edges incident to vertex in this graph. |
V |
getOpposite(V vertex,
E edge)
Returns the vertex at the other end of
edge from vertex . |
java.util.Collection<E> |
getOutEdges(V vertex)
Returns a
Collection view of the outgoing edges incident to vertex
in this graph. |
int |
getPredecessorCount(V vertex)
Returns the number of predecessors that
vertex has in this graph. |
java.util.Collection<V> |
getPredecessors(V vertex)
Returns a
Collection view of the predecessors of vertex
in this graph. |
V |
getSource(E directedEdge)
If
directed_edge is a directed edge in this graph, returns the source;
otherwise returns null . |
int |
getSuccessorCount(V vertex)
Returns the number of successors that
vertex has in this graph. |
java.util.Collection<V> |
getSuccessors(V vertex)
Returns a
Collection view of the successors of vertex
in this graph. |
int |
inDegree(V vertex)
Returns the number of incoming edges incident to
vertex . |
boolean |
isDest(V vertex,
E edge)
Returns
true if vertex is the destination of edge . |
boolean |
isPredecessor(V v1,
V v2)
Returns
true if v1 is a predecessor of v2 in this graph. |
boolean |
isSource(V vertex,
E edge)
Returns
true if vertex is the source of edge . |
boolean |
isSuccessor(V v1,
V v2)
Returns
true if v1 is a successor of v2 in this graph. |
int |
outDegree(V vertex)
Returns the number of outgoing edges incident to
vertex . |
addEdgeWithVertices, addEdgeWithVertices, addVertex, containsEdge, containsVertex, degree, findEdge, findEdgeSet, getDefaultEdgeType, getEdgeCount, getEdgeCount, getEdges, getEdgesView, getEdgeType, getIncidentCount, getIncidentEdges, getIncidentVertices, getNeighborCount, getNeighbors, getVertexCount, getVerticesView, isIncident, isNeighbor, removeEdge, removeVertex
java.util.Collection<E> getInEdges(V vertex)
Collection
view of the incoming edges incident to vertex
in this graph.getInEdges
in interface Hypergraph<V,E>
vertex
- the vertex whose incoming edges are to be returnedCollection
view of the incoming edges incident
to vertex
in this graphjava.util.Collection<E> getOutEdges(V vertex)
Collection
view of the outgoing edges incident to vertex
in this graph.getOutEdges
in interface Hypergraph<V,E>
vertex
- the vertex whose outgoing edges are to be returnedCollection
view of the outgoing edges incident
to vertex
in this graphjava.util.Collection<V> getPredecessors(V vertex)
Collection
view of the predecessors of vertex
in this graph. A predecessor of vertex
is defined as a vertex v
which is connected to
vertex
by an edge e
, where e
is an outgoing edge of
v
and an incoming edge of vertex
.getPredecessors
in interface Hypergraph<V,E>
vertex
- the vertex whose predecessors are to be returnedCollection
view of the predecessors of
vertex
in this graphjava.util.Collection<V> getSuccessors(V vertex)
Collection
view of the successors of vertex
in this graph. A successor of vertex
is defined as a vertex v
which is connected to
vertex
by an edge e
, where e
is an incoming edge of
v
and an outgoing edge of vertex
.getSuccessors
in interface Hypergraph<V,E>
vertex
- the vertex whose predecessors are to be returnedCollection
view of the successors of
vertex
in this graphint inDegree(V vertex)
vertex
.
Equivalent to getInEdges(vertex).size()
.inDegree
in interface Hypergraph<V,E>
vertex
- the vertex whose indegree is to be calculatedvertex
int outDegree(V vertex)
vertex
.
Equivalent to getOutEdges(vertex).size()
.outDegree
in interface Hypergraph<V,E>
vertex
- the vertex whose outdegree is to be calculatedvertex
boolean isPredecessor(V v1, V v2)
true
if v1
is a predecessor of v2
in this graph.
Equivalent to v1.getPredecessors().contains(v2)
.v1
- the first vertex to be queriedv2
- the second vertex to be queriedtrue
if v1
is a predecessor of v2
, and false otherwise.boolean isSuccessor(V v1, V v2)
true
if v1
is a successor of v2
in this graph.
Equivalent to v1.getSuccessors().contains(v2)
.v1
- the first vertex to be queriedv2
- the second vertex to be queriedtrue
if v1
is a successor of v2
, and false otherwise.int getPredecessorCount(V vertex)
vertex
has in this graph.
Equivalent to vertex.getPredecessors().size()
.vertex
- the vertex whose predecessor count is to be returnedvertex
has in this graphint getSuccessorCount(V vertex)
vertex
has in this graph.
Equivalent to vertex.getSuccessors().size()
.vertex
- the vertex whose successor count is to be returnedvertex
has in this graphV getSource(E directedEdge)
directed_edge
is a directed edge in this graph, returns the source;
otherwise returns null
.
The source of a directed edge d
is defined to be the vertex for which
d
is an outgoing edge.
directed_edge
is guaranteed to be a directed edge if
its EdgeType
is DIRECTED
.getSource
in interface Hypergraph<V,E>
directedEdge
- directed_edge
if it is a directed edge in this graph, or null
otherwiseV getDest(E directedEdge)
directed_edge
is a directed edge in this graph, returns the destination;
otherwise returns null
.
The destination of a directed edge d
is defined to be the vertex
incident to d
for which
d
is an incoming edge.
directed_edge
is guaranteed to be a directed edge if
its EdgeType
is DIRECTED
.getDest
in interface Hypergraph<V,E>
directedEdge
- directed_edge
if it is a directed edge in this graph, or null
otherwiseboolean isSource(V vertex, E edge)
true
if vertex
is the source of edge
.
Equivalent to getSource(edge).equals(vertex)
.vertex
- the vertex to be queriededge
- the edge to be queriedtrue
iff vertex
is the source of edge
boolean isDest(V vertex, E edge)
true
if vertex
is the destination of edge
.
Equivalent to getDest(edge).equals(vertex)
.vertex
- the vertex to be queriededge
- the edge to be queriedtrue
iff vertex
is the destination of edge
boolean addEdge(E e, V v1, V v2)
e
to this graph such that it connects
vertex v1
to v2
.
Equivalent to addEdge(e, new Pair(v1, v2))
.
If this graph does not contain v1
, v2
,
or both, implementations may choose to either silently add
the vertices to the graph or throw an IllegalArgumentException
.
If this graph assigns edge types to its edges, the edge type of
e
will be the default for this graph.
See Hypergraph.addEdge()
for a listing of possible reasons
for failure.e
- the edge to be addedv1
- the first vertex to be connectedv2
- the second vertex to be connectedtrue
if the add is successful, false
otherwiseaddEdge(Object, Object, Object, EdgeType)
boolean addEdge(E e, V v1, V v2, EdgeType edgeType)
e
to this graph such that it connects
vertex v1
to v2
.
Equivalent to addEdge(e, new Pair(v1, v2))
.
If this graph does not contain v1
, v2
,
or both, implementations may choose to either silently add
the vertices to the graph or throw an IllegalArgumentException
.
If edgeType
is not legal for this graph, this method will
throw IllegalArgumentException
.
See Hypergraph.addEdge()
for a listing of possible reasons
for failure.e
- the edge to be addedv1
- the first vertex to be connectedv2
- the second vertex to be connectededgeType
- the type to be assigned to the edgetrue
if the add is successful, false
otherwisePair<V> getEndpoints(E edge)
edge
as a Pair
.edge
- the edge whose endpoints are to be returnededge
V getOpposite(V vertex, E edge)
edge
from vertex
.
(That is, returns the vertex incident to edge
which is not vertex
.)vertex
- the vertex to be queriededge
- the edge to be queriededge
from vertex
Copyright © 2021, 2022 Herve Girod. All Rights Reserved. Documentation and source under the BSD 3-Clause licence