public class GraphAlgorithms
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static boolean |
verbose |
Constructor and Description |
---|
GraphAlgorithms() |
Modifier and Type | Method and Description |
---|---|
static java.util.Vector<Graph> |
CombineIncludedGraphsApprox(java.util.Vector<Graph> graphs,
float thresh)
Clusters graphs with node overlap more than threshold
|
static java.util.Vector<Graph> |
ConnectedComponents(Graph graph) |
static java.util.Vector<Graph> |
CycleDecomposition(Graph graph,
int sizeThreshold) |
static java.util.Vector<Graph> |
Dijkstra(Graph graph,
Node source,
Node target,
boolean directedGraph,
boolean suboptimal,
double searchRadius) |
static java.util.Vector<Graph> |
DijkstraAlgorithm(Graph graph,
Node source,
Node target,
boolean directedGraph,
double searchRadius) |
static java.util.Vector<Graph> |
DijkstraAlgorithm(Graph graph,
Node source,
java.util.Vector<Node> targets,
boolean directedGraph,
double searchRadius) |
static java.util.Vector<java.util.Vector<java.util.Vector<java.lang.Integer>>> |
DijkstraAlgorithmReturnIndexReverseOrder(Graph graph,
Node source,
java.util.Vector<Node> targets,
boolean directedGraph,
double searchRadius)
returns list of paths (as Vector
|
static void |
DijkstraProcedure(Graph graph,
int isource,
java.util.Vector<java.lang.Integer> iends,
double[] d,
java.util.Vector<java.util.Vector<java.lang.Integer>> previous,
boolean directedGraph,
double searchRadius)
Principal Dijkstra procedure
2 for each vertex v in V[G] // Initializations
3 d[v] := infinity // Unknown distance function from s to v
4 previous[v] := undefined
5 d[s] := 0 // Distance from s to s
6 S := empty set // Set of all visited vertices
7 Q := V[G] // Set of all unvisited vertices
8 while Q is not an empty set // The algorithm itself
9 u := Extract_Min(Q) // Remove best vertex from priority queue
10 S := S union {u} // Mark it 'visited'
11 for each edge (u,v) outgoing from u
12 if d[u] + w(u,v) < d[v] // Relax (u,v)
13 d[v] := d[u] + w(u,v)
14 previous[v] := u
|
static java.util.Set |
extractClosestNodes(java.util.Set Q,
double[] d,
java.util.HashSet<java.lang.Integer> non_empties,
java.util.Vector temp,
double searchRadius)
Sub-routine for Dijkstra algorithm
search for an items with minimum d[item] and removes from Q
|
static java.util.Vector<Graph> |
FindAllPaths(Graph graph,
Node source,
java.util.Set<Node> targets,
boolean directedGraph,
double searchRadius)
Note: searchRadius here is the number of edges from source (edge weights are not considered)
|
static java.util.Vector<Graph> |
FindAllPaths(Graph graph,
Node source,
java.util.Set<Node> targets,
boolean directedGraph,
double searchRadius,
boolean finalizePathIfJoinsExisting) |
static Graph |
GetBiggestGraph(java.util.Vector v) |
static Graph |
GetConnectedComponent(Graph graph,
Node n) |
static java.util.HashSet<Node> |
HittingSetHighestDegreeFirst(Graph gr,
java.util.ArrayList<Node> sourceNodes,
java.util.ArrayList<Node> targetNodes)
Find miminum hitting set for a graph with heuristic algorithm.
|
static java.util.Vector<java.util.Vector<Edge>> |
neighboursOfNodeHash(Graph graph,
boolean directedGraph)
Sub-routine for Dijkstra's algorithm
Returns vector (of length number of nodes) of vectors of outgoing edges numbers
|
static Graph |
PruneEdges(Graph graph,
java.util.Vector<java.lang.Float> edgeRedundancies,
float thresh) |
static java.util.Vector<Graph> |
PruneGraph(Graph graph,
boolean includeInterface)
Graph pruning (eliminataing IN and OUT layers)
|
static java.util.Vector<java.lang.Float> |
SimpleEdgePruning(Graph graph,
java.util.Vector<java.lang.Float> pplus,
java.util.Vector<java.lang.Float> pminus,
int depth,
java.util.Vector<Graph> explanations) |
static java.util.Vector<java.lang.Float> |
SimpleEdgePruningLOOCrossValidation(Graph graph,
java.util.Vector<java.lang.Float> pplus,
java.util.Vector<java.lang.Float> pminus,
int depth,
java.util.Vector<Graph> explanations) |
static java.util.Vector<Graph> |
StronglyConnectedComponentsTarjan(Graph graph,
int minimumComponentSize) |
static Graph |
TreschAlgorithm(Graph graph,
java.util.Vector<java.lang.Float> pplus,
java.util.Vector<java.lang.Float> pminus,
java.util.Vector<Graph> explanations,
float delta)
Tresch's algorithm for transitive graph reduction
From Tresch et al., JCompBiol V14, N9 (2007)
Takes as arguments a graph to be pruned, 'probabilities' of positive and negative regulations
(as Vectors of Float in the order, corresponding to the graph Edges), depth is the depth of the
directed path search (for example, if equals number of Edges then this is complete pruning, if equals
2 then it searches for edge 'explanations' with only one intermediate node)
The algorithm returns a pruned Graph, and also fills the Vector of 'explanations' (paths as graphs) in the order of the
initial graph edges
|
public static java.util.Vector<Graph> StronglyConnectedComponentsTarjan(Graph graph, int minimumComponentSize)
graph
- minimumComponentSize
- public static java.util.Vector<Graph> PruneGraph(Graph graph, boolean includeInterface)
graph
- is modified after the procedure and contains the cyclic part of the graphpublic static java.util.Vector<Graph> CycleDecomposition(Graph graph, int sizeThreshold)
graph
- sizeThreshold
- public static java.util.Vector<Graph> Dijkstra(Graph graph, Node source, Node target, boolean directedGraph, boolean suboptimal, double searchRadius)
graph
- source
- target
- directedGraph
- suboptimal
- public static java.util.Vector<Graph> FindAllPaths(Graph graph, Node source, java.util.Set<Node> targets, boolean directedGraph, double searchRadius)
graph
- source
- target
- directedGraph
- public static java.util.Vector<Graph> FindAllPaths(Graph graph, Node source, java.util.Set<Node> targets, boolean directedGraph, double searchRadius, boolean finalizePathIfJoinsExisting)
public static java.util.Vector<Graph> DijkstraAlgorithm(Graph graph, Node source, Node target, boolean directedGraph, double searchRadius)
public static java.util.Vector<java.util.Vector<java.util.Vector<java.lang.Integer>>> DijkstraAlgorithmReturnIndexReverseOrder(Graph graph, Node source, java.util.Vector<Node> targets, boolean directedGraph, double searchRadius)
graph
- source
- targets
- directedGraph
- searchRadius
- public static java.util.Vector<Graph> DijkstraAlgorithm(Graph graph, Node source, java.util.Vector<Node> targets, boolean directedGraph, double searchRadius)
public static void DijkstraProcedure(Graph graph, int isource, java.util.Vector<java.lang.Integer> iends, double[] d, java.util.Vector<java.util.Vector<java.lang.Integer>> previous, boolean directedGraph, double searchRadius)
public static java.util.Vector<java.util.Vector<Edge>> neighboursOfNodeHash(Graph graph, boolean directedGraph)
public static java.util.Set extractClosestNodes(java.util.Set Q, double[] d, java.util.HashSet<java.lang.Integer> non_empties, java.util.Vector temp, double searchRadius)
public static Graph GetConnectedComponent(Graph graph, Node n)
graph
- n
- public static java.util.Vector<Graph> CombineIncludedGraphsApprox(java.util.Vector<Graph> graphs, float thresh)
graphs
- thresh
- public static Graph GetBiggestGraph(java.util.Vector v)
v
- public static Graph TreschAlgorithm(Graph graph, java.util.Vector<java.lang.Float> pplus, java.util.Vector<java.lang.Float> pminus, java.util.Vector<Graph> explanations, float delta)
public static java.util.Vector<java.lang.Float> SimpleEdgePruning(Graph graph, java.util.Vector<java.lang.Float> pplus, java.util.Vector<java.lang.Float> pminus, int depth, java.util.Vector<Graph> explanations)
public static Graph PruneEdges(Graph graph, java.util.Vector<java.lang.Float> edgeRedundancies, float thresh)
public static java.util.Vector<java.lang.Float> SimpleEdgePruningLOOCrossValidation(Graph graph, java.util.Vector<java.lang.Float> pplus, java.util.Vector<java.lang.Float> pminus, int depth, java.util.Vector<Graph> explanations)
public static java.util.HashSet<Node> HittingSetHighestDegreeFirst(Graph gr, java.util.ArrayList<Node> sourceNodes, java.util.ArrayList<Node> targetNodes)
gr
- graph (bipartite)sourceNodes
- list of source nodestargetNodes
- list of target nodes