graph.java
来自「JAVA图论的算法包。用过觉得还不错」· Java 代码 · 共 432 行 · 第 1/2 页
JAVA
432 行
* the specified vertices does not exist in the graph, or if is <code>
* null</code>, returns <code>false</code>.
*
* @param sourceVertex source vertex of the edge.
* @param targetVertex target vertex of the edge.
*
* @return <tt>true</tt> if this graph contains the specified edge.
*/
public boolean containsEdge(V sourceVertex, V targetVertex);
/**
* Returns <tt>true</tt> if this graph contains the specified edge. More
* formally, returns <tt>true</tt> if and only if this graph contains an
* edge <code>e2</code> such that <code>e.equals(e2)</code>. If the
* specified edge is <code>null</code> returns <code>false</code>.
*
* @param e edge whose presence in this graph is to be tested.
*
* @return <tt>true</tt> if this graph contains the specified edge.
*/
public boolean containsEdge(E e);
/**
* Returns <tt>true</tt> if this graph contains the specified vertex. More
* formally, returns <tt>true</tt> if and only if this graph contains a
* vertex <code>u</code> such that <code>u.equals(v)</code>. If the
* specified vertex is <code>null</code> returns <code>false</code>.
*
* @param v vertex whose presence in this graph is to be tested.
*
* @return <tt>true</tt> if this graph contains the specified vertex.
*/
public boolean containsVertex(V v);
/**
* Returns a set of the edges contained in this graph. The set is backed by
* the graph, so changes to the graph are reflected in the set. If the graph
* is modified while an iteration over the set is in progress, the results
* of the iteration are undefined.
*
* <p>The graph implementation may maintain a particular set ordering (e.g.
* via {@link java.util.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.</p>
*
* @return a set of the edges contained in this graph.
*/
public Set<E> edgeSet();
/**
* Returns a set of all edges touching the specified vertex. If no edges are
* touching the specified vertex returns an empty set.
*
* @param vertex the vertex for which a set of touching edges is to be
* returned.
*
* @return a set of all edges touching the specified vertex.
*
* @throws IllegalArgumentException if vertex is not found in the graph.
* @throws NullPointerException if vertex is <code>null</code>.
*/
public Set<E> edgesOf(V vertex);
/**
* Removes all the edges in this graph that are also contained in the
* specified edge collection. After this call returns, this graph will
* contain no edges in common with the specified edges. This method will
* invoke the {@link #removeEdge(Object)} method.
*
* @param edges edges to be removed from this graph.
*
* @return <tt>true</tt> if this graph changed as a result of the call
*
* @throws NullPointerException if the specified edge collection is <tt>
* null</tt>.
*
* @see #removeEdge(Object)
* @see #containsEdge(Object)
*/
public boolean removeAllEdges(Collection<? extends E> edges);
/**
* Removes all the edges going from the specified source vertex to the
* specified target vertex, and returns a set of all removed edges. Returns
* <code>null</code> if any of the specified vertices does not exist in the
* graph. If both vertices exist but no edge is found, returns an empty set.
* This method will either invoke the {@link #removeEdge(Object)} method, or
* the {@link #removeEdge(Object, Object)} method.
*
* @param sourceVertex source vertex of the edge.
* @param targetVertex target vertex of the edge.
*
* @return the removed edges, or <code>null</code> if no either vertex not
* part of graph
*/
public Set<E> removeAllEdges(V sourceVertex, V targetVertex);
/**
* Removes all the vertices in this graph that are also contained in the
* specified vertex collection. After this call returns, this graph will
* contain no vertices in common with the specified vertices. This method
* will invoke the {@link #removeVertex(Object)} method.
*
* @param vertices vertices to be removed from this graph.
*
* @return <tt>true</tt> if this graph changed as a result of the call
*
* @throws NullPointerException if the specified vertex collection is <tt>
* null</tt>.
*
* @see #removeVertex(Object)
* @see #containsVertex(Object)
*/
public boolean removeAllVertices(Collection<? extends V> vertices);
/**
* Removes an edge going from source vertex to target vertex, if such
* vertices and such edge exist in this graph. Returns the edge if removed
* or <code>null</code> otherwise.
*
* @param sourceVertex source vertex of the edge.
* @param targetVertex target vertex of the edge.
*
* @return The removed edge, or <code>null</code> if no edge removed.
*/
public E removeEdge(V sourceVertex, V targetVertex);
/**
* Removes the specified edge from the graph. Removes the specified edge
* from this graph if it is present. More formally, removes an edge <code>
* e2</code> such that <code>e2.equals(e)</code>, if the graph contains such
* edge. Returns <tt>true</tt> if the graph contained the specified edge.
* (The graph will not contain the specified edge once the call returns).
*
* <p>If the specified edge is <code>null</code> returns <code>
* false</code>.</p>
*
* @param e edge to be removed from this graph, if present.
*
* @return <code>true</code> if and only if the graph contained the
* specified edge.
*/
public boolean removeEdge(E e);
/**
* Removes the specified vertex from this graph including all its touching
* edges if present. More formally, if the graph contains a vertex <code>
* u</code> such that <code>u.equals(v)</code>, the call removes all edges
* that touch <code>u</code> and then removes <code>u</code> itself. If no
* such <code>u</code> is found, the call leaves the graph unchanged.
* Returns <tt>true</tt> if the graph contained the specified vertex. (The
* graph will not contain the specified vertex once the call returns).
*
* <p>If the specified vertex is <code>null</code> returns <code>
* false</code>.</p>
*
* @param v vertex to be removed from this graph, if present.
*
* @return <code>true</code> if the graph contained the specified vertex;
* <code>false</code> otherwise.
*/
public boolean removeVertex(V v);
/**
* Returns a set of the vertices contained in this graph. The set is backed
* by the graph, so changes to the graph are reflected in the set. If the
* graph is modified while an iteration over the set is in progress, the
* results of the iteration are undefined.
*
* <p>The graph implementation may maintain a particular set ordering (e.g.
* via {@link java.util.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.</p>
*
* @return a set view of the vertices contained in this graph.
*/
public Set<V> vertexSet();
/**
* Returns the source vertex of an edge. For an undirected graph, source and
* target are distinguishable designations (but without any mathematical
* meaning).
*
* @param e edge of interest
*
* @return source vertex
*/
public V getEdgeSource(E e);
/**
* Returns the target vertex of an edge. For an undirected graph, source and
* target are distinguishable designations (but without any mathematical
* meaning).
*
* @param e edge of interest
*
* @return target vertex
*/
public V getEdgeTarget(E e);
/**
* Returns the weight assigned to a given edge. Unweighted graphs return 1.0
* (as defined by {@link WeightedGraph#DEFAULT_EDGE_WEIGHT}), allowing
* weighted-graph algorithms to apply to them where meaningful.
*
* @param e edge of interest
*
* @return edge weight
*
* @see WeightedGraph
*/
public double getEdgeWeight(E e);
}
// End Graph.java
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?