Class DefaultGraph<T extends Node>
java.lang.Object
org.tweetyproject.graphs.DefaultGraph<T>
- Type Parameters:
T- The type of the node.
- All Implemented Interfaces:
Iterable<T>,GeneralGraph<T>,Graph<T>
- Direct Known Subclasses:
ArgumentTree,Compilation,SimpleGraph
-
Field Summary
Fields inherited from interface org.tweetyproject.graphs.Graph
IGNORE_SELFLOOPS, INVERT_SELFLOOPS, REMOVE_SELFLOOPS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanReturn whether the operation was successfulbooleanadd(GeneralEdge<T> edge) Adds the given edge to this graph.booleanAdds the given node to this graph.booleanareAdjacent(T a, T b) Returns "true" iff the two nodes are connected by a directed edge from a to b or an undirected edge.booleanReturns "true" when this graph contains the given node or edge.static <S extends Node>
booleanHelper method for detecting cycles using depth-first search.static <S extends Node>
booleancontainsCycle(Graph<S> g) Checks whether there is at least one cycle in the given graph.static <S extends Node>
booleanexistsDirectedPath(Graph<S> g, S node1, S node2) Checks whether there is a (directed) path from node1 to node2 in the given graph.booleanexistsDirectedPath(T node1, T node2) Checks whether there is a (directed) path from node1 to node2.Returns the adjacency matrix of this graph (the order of the nodes is the same as returned by "iterator()").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.getComplementGraph(int selfloops) Returns the complement graph of this graph, i.e.static <S extends Node>
Collection<Graph<S>> getComponents(Graph<S> g) Finds all components of a graph.Returns the set of (simple) connected components of this graph.static <S extends Node>
Collection<Collection<S>> getConnectedComponents(Graph<S> g) Returns the set of (simple) connected components of this graph.Finds the cycles of an graph order-sensitively, excluding self-loops (cycles of length one).Finds the cycles of an graph order-sensitively, including self-loops (cycles of length one).Returns the corresponding edge (a,b) if a and b are adjacent.Collection<Edge<T>> getEdges()Returns the edges of this graph.static <S extends Node>
Collection<Graph<S>> getInducedSubgraphs(Graph<S> g) Finds all induced subgraphs.getNeighbors(T node) Returns the set of neighbors of the given node.getNodes()Returns the nodes of this graph.intReturns the number of edges in this graph.intReturns the number of nodes in this graph.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.getRestriction(Collection<T> nodes) Returns a copy of this graph that contains only the specified nodes and all corresponding edges between them.Returns the strongly connected components of this graph.static <S extends Node>
Collection<Collection<S>> * Returns the strongly connected components of the given graph.Collection<Graph<T>> Returns the set of sub graphs of this graph.static <S extends Node>
Collection<Graph<S>> getSubgraphs(GeneralGraph<S> g) Returns the set of sub graphs of the given graph.booleanReturns "true" iff the graph has a self loop (an edge from a node to itself).static <S extends Node>
booleanisBipartite(Graph<S> g) checks whether the given graph is bipartite or not the algorithm starts at a random node and colors adjacent nodes in alternating colors if two adjacent nodes have the same color, the graph is no bipartite NOTE: This method only works if the given graph is connectedbooleanChecks whether this graph only contains weighted edges.iterator()toString()Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
DefaultGraph
public DefaultGraph()Creates an empty graph.
-
-
Method Details
-
add
-
add
-
getNodes
-
getNumberOfNodes
public int getNumberOfNodes()Description copied from interface:GraphReturns the number of nodes in this graph.- Specified by:
getNumberOfNodesin interfaceGraph<T extends Node>- Returns:
- the number of nodes in this graph.
-
getNumberOfEdges
public int getNumberOfEdges()Description copied from interface:GraphReturns the number of edges in this graph.- Specified by:
getNumberOfEdgesin interfaceGraph<T extends Node>- Returns:
- the number of edges in this graph.
-
getEdges
-
iterator
-
contains
-
getNeighbors
Description copied from interface:GraphReturns the set of neighbors of the given node.- Specified by:
getNeighborsin interfaceGraph<T extends Node>- Parameters:
node- some node (must be in the graph).- Returns:
- the set of neighbors of the given node.
-
getChildren
Description copied from interface:GraphReturns 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.- Specified by:
getChildrenin interfaceGraph<T extends Node>- Parameters:
node- some node (must be in the graph).- Returns:
- the set of children of the given node.
-
getParents
Description copied from interface:GraphReturns 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.- Specified by:
getParentsin interfaceGraph<T extends Node>- Parameters:
node- some node (must be in the graph).- Returns:
- the set of parents of the given node.
-
areAdjacent
Description copied from interface:GraphReturns "true" iff the two nodes are connected by a directed edge from a to b or an undirected edge.- Specified by:
areAdjacentin interfaceGraph<T extends Node>- 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
-
existsDirectedPath
Description copied from interface:GraphChecks whether there is a (directed) path from node1 to node2.- Specified by:
existsDirectedPathin interfaceGraph<T extends Node>- Parameters:
node1- some node.node2- some node.- Returns:
- "true" if there is a directed path from node1 to node2.
-
getAdjacencyMatrix
-
toString
-
getComplementGraph
Description copied from interface:GraphReturns 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.- Specified by:
getComplementGraphin interfaceGraph<T extends Node>- 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.
-
hasSelfLoops
public boolean hasSelfLoops()Description copied from interface:GraphReturns "true" iff the graph has a self loop (an edge from a node to itself).- Specified by:
hasSelfLoopsin interfaceGraph<T extends Node>- Returns:
- "true" iff the graph has a self loop (an edge from a node to itself).
-
isWeightedGraph
public boolean isWeightedGraph()Description copied from interface:GraphChecks whether this graph only contains weighted edges.- Specified by:
isWeightedGraphin interfaceGraph<T extends Node>- Returns:
- "true" if all edges are weighted in this graph.
-
getConnectedComponents
Description copied from interface:GraphReturns the set of (simple) connected components of this graph. A set of nodes is connected, if there is some path (ignoring edge directions) from each node to each other. It is a connected component if it is connected and maximal wrt. set inclusion.- Specified by:
getConnectedComponentsin interfaceGraph<T extends Node>- Returns:
- the connected components of this graph.
-
getStronglyConnectedComponents
Description copied from interface:GraphReturns 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.- Specified by:
getStronglyConnectedComponentsin interfaceGraph<T extends Node>- Returns:
- the strongly connected components of this graph.
-
getConnectedComponents
Returns the set of (simple) connected components of this graph. A set of nodes is connected, if there is some path (ignoring edge directions) from each node to each other. It is a connected component if it is connected and maximal wrt. set inclusion.- Type Parameters:
S- a node- Parameters:
g- some graph- Returns:
- the connected components of the graph
-
getStronglyConnectedComponents
* Returns the strongly connected components of the given 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. The strongly connected components are computed using Tarjan's algorithm- Type Parameters:
S- a Node- Parameters:
g- some graph- Returns:
- the strongly connected components of the graph.
-
getSubgraphs
Description copied from interface:GraphReturns the set of sub graphs of this graph.- Specified by:
getSubgraphsin interfaceGraph<T extends Node>- Returns:
- the set of sub graphs of this graph.
-
getSubgraphs
Returns the set of sub graphs of the given graph.- Type Parameters:
S- the type of nodes- Parameters:
g- a graph- Returns:
- the set of sub graphs of the given graph.
-
getRestriction
Description copied from interface:GeneralGraphReturns a copy of this graph that contains only the specified nodes and all corresponding edges between them.This method generates a subgraph (or restricted graph) from the current graph by including only the given nodes and the edges that connect them. The returned graph is a new instance and does not modify the original graph.
- Specified by:
getRestrictionin interfaceGeneralGraph<T extends Node>- Parameters:
nodes- a collection of nodes to be included in the restricted graph.- Returns:
- a `GeneralGraph` object representing the restricted graph.
-
existsDirectedPath
Checks whether there is a (directed) path from node1 to node2 in the given graph.- Type Parameters:
S- a Node- Parameters:
g- some graph.node1- some node.node2- some node.- Returns:
- "true" if there is a directed path from node1 to node2.
-
containsCycle
-
containsBackEdge
public static <S extends Node> boolean containsBackEdge(Node parent, Map<Node, Integer> states, Graph<S> g) Helper method for detecting cycles using depth-first search.- Type Parameters:
S- a Node- Parameters:
parent- current nodestates- map of states of nodesg- some graph- Returns:
- "true" if a back edge (cycle) was found in the DFS step, false otherwise
-
getCyclesExcludingSelfLoops
Finds the cycles of an graph order-sensitively, excluding self-loops (cycles of length one).- Type Parameters:
S- a Node- Parameters:
g- The graph to be searched.- Returns:
- An stack of nodes with the order indicating the direction of the cycle (assuming an directed graph).
-
getCyclesIncludingSelfLoops
Finds the cycles of an graph order-sensitively, including self-loops (cycles of length one).- Type Parameters:
S- a Node- Parameters:
g- The graph to be searched.- Returns:
- An stack of nodes with the order indicating the direction of the cycle (assuming an directed graph).
-
getComponents
Finds all components of a graph.- Type Parameters:
S- a Node- Parameters:
g- The graph which components should be found.- Returns:
- A collection of the components as separate graphs.
-
getInducedSubgraphs
Finds all induced subgraphs.- Type Parameters:
S- a Node- Parameters:
g- The graph which induced subgraphs should be found.- Returns:
- A collection of graphs representing the induced subgraphs.
-
isBipartite
checks whether the given graph is bipartite or not the algorithm starts at a random node and colors adjacent nodes in alternating colors if two adjacent nodes have the same color, the graph is no bipartite NOTE: This method only works if the given graph is connected- Type Parameters:
S- the type of nodes- Parameters:
g- a graph- Returns:
- "true" if g is bipartite
-
add
Description copied from interface:GraphAdds 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.
-