Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

FullComponentGeneratorCaller.h
Go to the documentation of this file.
1 
32 #pragma once
33 
36 
37 namespace ogdf {
38 namespace steiner_tree {
39 
40 template<typename T>
42 public:
44  static void computeDistanceMatrix(NodeArray<NodeArray<T>>& distance,
45  NodeArray<NodeArray<edge>>& pred, const EdgeWeightedGraph<T>& graph,
46  const List<node>& terminals, const NodeArray<bool>& isTerminal, int restricted);
47 };
48 
49 template<typename T>
51  NodeArray<NodeArray<edge>>& pred, const EdgeWeightedGraph<T>& graph,
52  const List<node>& terminals, const NodeArray<bool>& isTerminal, int restricted) {
54  graph.numberOfEdges(), terminals.size())) {
55  if (restricted <= 3) {
56  // for 2- and 3-restricted computations, it is ok to use SSSP from all terminals
57  MinSteinerTreeModule<T>::allTerminalShortestPaths(graph, terminals, isTerminal,
58  distance, pred);
59  } else {
60  MinSteinerTreeModule<T>::allNodeShortestPaths(graph, terminals, isTerminal, distance,
61  pred);
62  }
63  } else {
64  MinSteinerTreeModule<T>::allPairShortestPaths(graph, isTerminal, distance, pred);
65  }
66 }
67 
68 }
69 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::MinSteinerTreeModule::allTerminalShortestPaths
static void allTerminalShortestPaths(const EdgeWeightedGraph< T > &G, const List< node > &terminals, const NodeArray< bool > &isTerminal, NodeArray< NodeArray< T >> &distance, NodeArray< NodeArray< edge >> &pred, std::function< void(const EdgeWeightedGraph< T > &, node, const NodeArray< bool > &, NodeArray< T > &, NodeArray< edge > &)> ssspFunc=singleSourceShortestPaths)
Runs a given (or the default) single-source-shortest-paths function from all terminals.
Definition: MinSteinerTreeModule.h:175
ogdf::MinSteinerTreeModule::allNodeShortestPaths
static void allNodeShortestPaths(const EdgeWeightedGraph< T > &G, const List< node > &terminals, const NodeArray< bool > &isTerminal, NodeArray< NodeArray< T >> &distance, NodeArray< NodeArray< edge >> &pred, std::function< void(const EdgeWeightedGraph< T > &, node, const NodeArray< bool > &, NodeArray< T > &, NodeArray< edge > &)> ssspFunc=singleSourceShortestPaths)
Runs a given (or the default) single-source-shortest-paths function from all nodes.
Definition: MinSteinerTreeModule.h:201
FullComponentDecisions.h
Definition of the FullComponentDecisions class.
MinSteinerTreeModule.h
Declaration of ogdf::MinSteinerTreeModule.
ogdf::Graph::numberOfEdges
int numberOfEdges() const
Returns the number of edges in the graph.
Definition: Graph_d.h:977
ogdf::Graph::numberOfNodes
int numberOfNodes() const
Returns the number of nodes in the graph.
Definition: Graph_d.h:974
ogdf::EdgeWeightedGraph
Definition: EdgeWeightedGraph.h:39
ogdf::steiner_tree::FullComponentGeneratorCaller::computeDistanceMatrix
static void computeDistanceMatrix(NodeArray< NodeArray< T >> &distance, NodeArray< NodeArray< edge >> &pred, const EdgeWeightedGraph< T > &graph, const List< node > &terminals, const NodeArray< bool > &isTerminal, int restricted)
Computes distance and predecessor matrix.
Definition: FullComponentGeneratorCaller.h:50
ogdf::steiner_tree::FullComponentDecisions::shouldUseDijkstra
static bool shouldUseDijkstra(int k, int n, int m, int t)
Returns true iff the rule of thumb predicts to use multiple Dijkstra calls instead of the algorithm b...
Definition: FullComponentDecisions.h:94
ogdf::List
Doubly linked lists (maintaining the length of the list).
Definition: List.h:42
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::MinSteinerTreeModule::allPairShortestPaths
static void allPairShortestPaths(const EdgeWeightedGraph< T > &G, const NodeArray< bool > &isTerminal, NodeArray< NodeArray< T >> &distance, NodeArray< NodeArray< edge >> &pred)
The default all-pair-shortest-paths algorithm.
Definition: MinSteinerTreeModule.h:229
ogdf::steiner_tree::FullComponentGeneratorCaller
Definition: FullComponentGeneratorCaller.h:41
ogdf::List::size
int size() const
Returns the number of elements in the list.
Definition: List.h:1478