Package net.sf.tweety.graphs
Interface Graph<T extends Node>
-
- Type Parameters:
T
- The type of the node.
- All Superinterfaces:
java.lang.Iterable<T>
- All Known Implementing Classes:
AbstractBipolarFramework
,ArgumentTree
,BpmnModel
,Compilation
,DeductiveArgumentationFramework
,DefaultGraph
,DungTheory
,EvidentialArgumentationFramework
,ExecutableDungTheory
,NecessityArgumentationFramework
,PerceivableStructuredArgumentationFramework
,ProbabilisticArgumentationFramework
,SocialAbstractArgumentationFramework
,StructuredArgumentationFramework
,WeightedDungTheory
public interface Graph<T extends Node> extends java.lang.Iterable<T>
Common interface for graphs with nodes of type T- Author:
- Matthias Thimm
-
-
Field Summary
Fields Modifier and Type Field Description static int
IGNORE_SELFLOOPS
When inverting a graph, ignore self loops (don't add and don't remove)static int
INVERT_SELFLOOPS
When inverting a graph, deal with self loops like ordinary edges (add if not present and remove if present)static int
REMOVE_SELFLOOPS
When inverting a graph, simple remove self loops, but don't add new ones.
-
Method Summary
Modifier and Type Method Description boolean
add(Edge<T> edge)
Adds the given edge to this graph.boolean
add(T node)
Adds the given node to this graph.boolean
areAdjacent(T a, T b)
Returns "true" iff the two nodes are connected by a directed edge from a to b or an undirected edge.boolean
contains(java.lang.Object obj)
Returns "true" when this graph contains the given node or edge.boolean
existsDirectedPath(T node1, T node2)
Checks whether there is a (directed) path from node1 to node2.Matrix
getAdjacencyMatrix()
Returns the adjacency matrix of this graph (the order of the nodes is the same as returned by "iterator()").java.util.Collection<T>
getChildren(Node node)
Returns the set of children (node connected via an undirected edge or a directed edge where the given node is the parent) of the given node.Graph<T>
getComplementGraph(int selfloops)
Returns the complement graph of this graph, i.e.Edge<T>
getEdge(T a, T b)
Returns the corresponding edge (a,b) if a and b are adjacent.java.util.Collection<? extends Edge<? extends T>>
getEdges()
Returns the edges of this graph.java.util.Collection<T>
getNeighbors(T node)
Returns the set of neighbors of the given node.java.util.Collection<T>
getNodes()
Returns the nodes of this graph.int
getNumberOfNodes()
Returns the number of nodes in this graph.java.util.Collection<T>
getParents(Node node)
Returns the set of parents (node connected via an undirected edge or a directed edge where the given node is the child) of the given node.Graph<T>
getRestriction(java.util.Collection<T> nodes)
Returns copy of this graph consisting only of the given nodes and all corresponding edges.java.util.Collection<java.util.Collection<T>>
getStronglyConnectedComponents()
Returns the strongly connected components of this graph.java.util.Collection<Graph<T>>
getSubgraphs()
Returns the set of sub graphs of this graph.boolean
hasSelfLoops()
Returns "true" iff the graph has a self loop (an edge from a node to itself).boolean
isWeightedGraph()
Checks whether this graph only contains weighted edges.java.util.Iterator<T>
iterator()
java.lang.String
toString()
-
-
-
Field Detail
-
IGNORE_SELFLOOPS
static final int IGNORE_SELFLOOPS
When inverting a graph, ignore self loops (don't add and don't remove)- See Also:
- Constant Field Values
-
INVERT_SELFLOOPS
static final int INVERT_SELFLOOPS
When inverting a graph, deal with self loops like ordinary edges (add if not present and remove if present)- See Also:
- Constant Field Values
-
REMOVE_SELFLOOPS
static final int REMOVE_SELFLOOPS
When inverting a graph, simple remove self loops, but don't add new ones.- See Also:
- Constant Field Values
-
-
Method Detail
-
add
boolean add(T node)
Adds the given node to this graph.- Parameters:
node
- some node.- Returns:
- "true" iff the edge has been added successfully.
-
add
boolean add(Edge<T> edge)
Adds the given edge to this graph. If at least one of the nodes the given edge connects is not in the graph, an illegal argument exception is thrown.- Parameters:
edge
- some edge.- Returns:
- "true" iff the edge has been added successfully.
-
getNodes
java.util.Collection<T> getNodes()
Returns the nodes of this graph.- Returns:
- the nodes of this graph.
-
getNumberOfNodes
int getNumberOfNodes()
Returns the number of nodes in this graph.- Returns:
- the number of nodes in this graph.
-
areAdjacent
boolean areAdjacent(T a, T b)
Returns "true" iff the two nodes are connected by a directed edge from a to b or an undirected edge.- Parameters:
a
- some nodeb
- some node- Returns:
- "true" iff the two nodes are connected by a directed edge from a to b or an undirected edge.
-
getEdge
Edge<T> getEdge(T a, T b)
Returns the corresponding edge (a,b) if a and b are adjacent. Otherwise it returns null.- Parameters:
a
- some nodeb
- some node- Returns:
- the edge (a,b) or null.
-
getEdges
java.util.Collection<? extends Edge<? extends T>> getEdges()
Returns the edges of this graph.- Returns:
- the edges of this graph.
-
iterator
java.util.Iterator<T> iterator()
-
contains
boolean contains(java.lang.Object obj)
Returns "true" when this graph contains the given node or edge.- Parameters:
obj
- an object- Returns:
- "true" if this graph contains the given node or edge.
-
getChildren
java.util.Collection<T> getChildren(Node node)
Returns the set of children (node connected via an undirected edge or a directed edge where the given node is the parent) of the given node.- Parameters:
node
- some node (must be in the graph).- Returns:
- the set of children of the given node.
-
getParents
java.util.Collection<T> getParents(Node node)
Returns the set of parents (node connected via an undirected edge or a directed edge where the given node is the child) of the given node.- Parameters:
node
- some node (must be in the graph).- Returns:
- the set of parents of the given node.
-
existsDirectedPath
boolean existsDirectedPath(T node1, T node2)
Checks whether there is a (directed) path from node1 to node2.- Parameters:
node1
- some node.node2
- some node.- Returns:
- "true" if there is a directed path from node1 to node2.
-
getNeighbors
java.util.Collection<T> getNeighbors(T node)
Returns the set of neighbors of the given node.- Parameters:
node
- some node (must be in the graph).- Returns:
- the set of neighbors of the given node.
-
getAdjacencyMatrix
Matrix getAdjacencyMatrix()
Returns the adjacency matrix of this graph (the order of the nodes is the same as returned by "iterator()").- Returns:
- the adjacency matrix of this graph
-
getComplementGraph
Graph<T> getComplementGraph(int selfloops)
Returns the complement graph of this graph, i.e. the graph on the same set of vertices as this graph that connects two vertices v and w with an edge if and only if v and w are not connected in this graph.- Parameters:
selfloops
- Indicates how to deal with selfloops:
IGNORE_SELFLOOPS - ignore self loops (don't add and don't remove)
INVERT_SELFLOOPS - deal with self loops like ordinary edges (add if not present and remove if present)
REMOVE_SELFLOOPS - simple remove self loops, but don't add new ones.- Returns:
- the complement graph of this graph.
-
getStronglyConnectedComponents
java.util.Collection<java.util.Collection<T>> getStronglyConnectedComponents()
Returns the strongly connected components of this graph. A set of nodes is strongly connected, if there is a path from each node to each other. A set of nodes is called strongly connected component if it is strongly connected and maximal with respect to set inclusion.- Returns:
- the strongly connected components of this graph.
-
getSubgraphs
java.util.Collection<Graph<T>> getSubgraphs()
Returns the set of sub graphs of this graph.- Returns:
- the set of sub graphs of this graph.
-
getRestriction
Graph<T> getRestriction(java.util.Collection<T> nodes)
Returns copy of this graph consisting only of the given nodes and all corresponding edges.- Parameters:
nodes
- a set of nodes- Returns:
- a graph.
-
hasSelfLoops
boolean hasSelfLoops()
Returns "true" iff the graph has a self loop (an edge from a node to itself).- Returns:
- "true" iff the graph has a self loop (an edge from a node to itself).
-
isWeightedGraph
boolean isWeightedGraph()
Checks whether this graph only contains weighted edges.- Returns:
- "true" if all edges are weighted in this graph.
-
toString
java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-