All Packages Class Hierarchy This Package Previous Next Index
Class structure.GraphMatrix
java.lang.Object
|
+----structure.GraphMatrix
- public abstract class GraphMatrix
- extends Object
- implements Graph
Implementation of graph using adjacency matrices.
User must commit to maximum size of graph (in vertices); it may be smaller.
Edges are stored in matrix. Not suitable for large graphs.
Class is abstract: you must use GraphMatrixDirected or
GraphMatrixUndirected to construct particular instances of graphs.
Typical usage:
Graph g = new GraphMatrixUndirected();
g.add("harry");
g.add("sally");
g.addEdge("harry","sally","unfriendly");
...
- See Also:
- GraphMatrixDirected, GraphMatrixUndirected, GraphList
add(Object)
- Add a vertex to the graph.
addEdge(Object, Object, Object)
- Add an edge between two vertices within the graph.
clear()
- Remove all vertices (and thus, edges) of the graph.
contains(Object)
- Test for vertex membership.
containsEdge(Object, Object)
- Test for edge membership.
degree(Object)
- Determine out degree of vertex.
edgeCount()
- Determine the number of edges in graph.
edges()
- Construct an iterator over all edges.
elements()
- Construct vertex iterator.
get(Object)
- Get reference to actual label of vertex.
getEdge(Object, Object)
- Get reference to actual edge.
isDirected()
- Determine if graph is directed.
isEmpty()
- Determine if graph is empty.
isVisited(Object)
- Return visited flag of vertex.
isVisitedEdge(Edge)
- Return visited flag of edge.
neighbors(Object)
- Construct an adjacent vertex iterator.
remove(Object)
- Remove a vertex from the graph.
removeEdge(Object, Object)
- Remove possible edge between vertices labeled vLabel1 and vLabel2.
reset()
- Clear visited flags of edges and vertices.
size()
- Determine number of vertices within graph.
visit(Object)
- Test and set visited flag of vertex.
visitEdge(Edge)
- Test and set visited flag of edge.
add
public void add(Object label)
- Add a vertex to the graph.
- Precondition:
- label is a non-null label for vertex
- Postcondition:
- a vertex with label is added to graph.
if vertex with label is already in graph, no action.
- Parameters:
- label - Label of the vertex; should be non-null.
addEdge
public abstract void addEdge(Object v1,
Object v2,
Object label)
- Add an edge between two vertices within the graph. Edge is directed
iff graph is directed. Duplicate edges are silently replaced.
Labels on edges may be null.
- Precondition:
- vtx1 and vtx2 are labels of existing vertices
- Postcondition:
- an edge (possibly directed) is inserted between
vtx1 and vtx2.
- Parameters:
- vtx1 - First (or source, if directed) vertex.
- vtx2 - Second (or destination, if directed) vertex.
- label - Label associated with the edge.
remove
public Object remove(Object label)
- Remove a vertex from the graph. Associated edges are also
removed. Non-vertices are silently ignored.
- Precondition:
- label is non-null vertex label
- Postcondition:
- vertex with "equals" label is removed, if found
- Parameters:
- label - The label of the vertex within the graph.
- Returns:
- The label associated with the vertex.
removeEdge
public abstract Object removeEdge(Object vLabel1,
Object vLabel2)
- Remove possible edge between vertices labeled vLabel1 and vLabel2.
Directed edges consider vLabel1 to be the source.
- Precondition:
- vLabel1 and vLabel2 are labels of existing vertices
- Postcondition:
- edge is removed, its label is returned
- Parameters:
- vLabel1 - First (or source, if directed) vertex.
- vLabel2 - Second (or destination, if directed) vertex.
- Returns:
- The label associated with the edge removed.
get
public Object get(Object label)
- Get reference to actual label of vertex. Vertex labels are matched
using their equals method, which may or may not test for actual
equivalence. Result remains part of graph.
- Postcondition:
- returns actual label of indicated vertex
- Parameters:
- label - The label of the vertex sought.
- Returns:
- The actual label, or null if none is found.
getEdge
public Edge getEdge(Object label1,
Object label2)
- Get reference to actual edge. Edge is identified by
the labels on associated vertices. If edge is directed, the
label1 indicates source.
- Postcondition:
- returns actual edge between vertices.
- Parameters:
- label1 - The first (or source, if directed) vertex.
- label2 - The second (or destination, if directed) vertex.
- Returns:
- The edge, if found, or null.
contains
public boolean contains(Object label)
- Test for vertex membership.
- Postcondition:
- returns true iff vertex with "equals" label exists.
- Parameters:
- label - The label of the vertex sought.
- Returns:
- True iff vertex with matching label is found.
containsEdge
public boolean containsEdge(Object vLabel1,
Object vLabel2)
- Test for edge membership. If edges are directed, vLabel1
indicates source.
- Postcondition:
- returns true iff edge with "equals" label exists
- Parameters:
- vLabel1 - First (or source, if directed) vertex.
- vLabel2 - Second (or destination, if directed) vertex.
- Returns:
- True iff the edge exists within the graph.
visit
public boolean visit(Object label)
- Test and set visited flag of vertex.
- Postcondition:
- sets visited flag on vertex, returns previous value
- Parameters:
- label - Label of vertex to be visited.
- Returns:
- Previous value of visited flag on vertex.
visitEdge
public boolean visitEdge(Edge e)
- Test and set visited flag of edge.
- Precondition:
- sets visited flag on edge; returns previous value
- Parameters:
- e - Edge object that is part of graph.
- Returns:
- Previous value of the Edge's visited flag.
isVisited
public boolean isVisited(Object label)
- Return visited flag of vertex.
- Postcondition:
- returns visited flag on labeled vertex
- Parameters:
- label - Label of vertex.
- Returns:
- True if vertex has been visited.
isVisitedEdge
public boolean isVisitedEdge(Edge e)
- Return visited flag of edge.
- Postcondition:
- returns visited flag on edge between vertices
- Parameters:
- e - Edge of graph to be considered.
- Returns:
- True if the edge has been visited.
reset
public void reset()
- Clear visited flags of edges and vertices.
- Postcondition:
- resets visited flags to false
size
public int size()
- Determine number of vertices within graph.
- Postcondition:
- returns the number of vertices in graph
- Returns:
- The number of vertices within graph.
degree
public int degree(Object label)
- Determine out degree of vertex.
- Precondition:
- label labels an existing vertex
- Postcondition:
- returns the number of vertices adjacent to vertex
- Parameters:
- label - Label associated with vertex.
- Returns:
- The number of edges with this vertex as source.
edgeCount
public abstract int edgeCount()
- Determine the number of edges in graph.
- Postcondition:
- returns the number of edges in graph
- Returns:
- Number of edges in graph.
elements
public Iterator elements()
- Construct vertex iterator. Vertices are not visited in
any guaranteed order.
- Postcondition:
- returns iterator across all vertices of graph
- Returns:
- Iterator traversing vertices in graph.
neighbors
public Iterator neighbors(Object label)
- Construct an adjacent vertex iterator. Adjacent vertices
(those on destination of edge, if directed) are considered,
but not in any guaranteed order.
- Precondition:
- label is label of vertex in graph
- Postcondition:
- returns iterator over vertices adj. to vertex
each edge beginning at label visited exactly once
- Parameters:
- label - Label of the vertex.
- Returns:
- Iterator traversing the adjacent vertices of labeled vertex.
edges
public abstract Iterator edges()
- Construct an iterator over all edges. Every directed/undirected
edge is considered exactly once. Order is not guaranteed.
- Postcondition:
- returns iterator across edges of graph
iterator returns edges; each edge visited once
- Returns:
- Iterator over edges.
clear
public void clear()
- Remove all vertices (and thus, edges) of the graph.
- Postcondition:
- removes all vertices from graph
isEmpty
public boolean isEmpty()
- Determine if graph is empty.
- Postcondition:
- returns true if graph contains no vertices
- Returns:
- True iff there are no vertices in graph.
isDirected
public boolean isDirected()
- Determine if graph is directed.
- Postcondition:
- returns true if edges of graph are directed
- Returns:
- True iff the graph is directed.
All Packages Class Hierarchy This Package Previous Next Index