all operators will only be found when using sync_plan::internal, so no namespace pollution
More...
Classes | |
| struct | BlockEmbedding |
| Internal class used to embed a biconnected component with Q-vertices. More... | |
| struct | EncapsulatedBlock |
| Information on a single block adjacent to a cut-vertex that is about to be encapsulated. More... | |
| struct | FrozenSimplifyMapping |
| struct | SimplifyMapping |
| class | UndoSimplify |
Typedefs | |
| using | GnMultiArray = RegisteredMultiArray< node, BlockEmbedding *, node, NA > |
| template<typename V > | |
| using | NA = NodeArray< V > |
| using | tp = const std::chrono::time_point< std::chrono::high_resolution_clock > |
| using | tpc = std::chrono::high_resolution_clock |
Functions | |
| bool | compareWithExhaustiveNodeDFS (Graph &G, adjEntry u_adj, node v, const EdgeSet &visited, const List< adjEntry > &found) |
Check that the method exhaustiveNodeDFS would return the same adjEntries as contained in found. | |
| adjEntry | continueNodeDFS (Graph &G, adjEntry u_adj, node v, EdgeSet &visited, List< adjEntry > &dfs_stack) |
Continue a DFS from the last node of dfs_stack until an unvisited edge incident to v is found. | |
| int64_t | dur_ms (const tp::duration &d) |
| int64_t | dur_ns (const tp::duration &d) |
| int | exhaustiveNodeDFS (Graph &G, adjEntry u_adj, node v, EdgeSet &visited, List< adjEntry > &out) |
Use a DFS to find all edges incident to v reachable from u_adj without crossing the node u and add them to out. | |
| int | findCycles (Graph &G, node u, const std::function< adjEntry(adjEntry)> &mapping, List< List< adjEntry > > &cycles, std::ostream &log) |
Find all cycles the permutation mapping defines on the order of the adjEntries of u and put all adjEntries of each cycle into their own list in cycles. | |
| OGDF_CONTAINER_PRINTER (printBijection) | |
| OGDF_CONTAINER_PRINTER (printContainer) | |
| OGDF_CONTAINER_PRINTER (printEdges) | |
| OGDF_CONTAINER_PRINTER (printFrozenBijection) | |
| OGDF_CONTAINER_PRINTER (printIncidentEdges) | |
| std::ostream & | operator<< (std::ostream &os, const ogdf::ClusterGraph &CG) |
| std::ostream & | operator<< (std::ostream &os, const ogdf::Graph &G) |
| template<typename Container > | |
| std::ostream & | operator<< (std::ostream &os, const printBijection< Container > &inst) |
| template<typename Container > | |
| std::ostream & | operator<< (std::ostream &os, const printContainer< Container > &inst) |
| template<typename Container > | |
| std::ostream & | operator<< (std::ostream &os, const printEdges< Container > &inst) |
| template<> | |
| std::ostream & | operator<< (std::ostream &os, const printEdges< PipeBij > &inst) |
| template<typename Container > | |
| std::ostream & | operator<< (std::ostream &os, const printFrozenBijection< Container > &inst) |
| template<typename Container > | |
| std::ostream & | operator<< (std::ostream &os, const printIncidentEdges< Container > &inst) |
| template<> | |
| std::ostream & | operator<< (std::ostream &os, const printIncidentEdges< PipeBij > &inst) |
| std::ostream & | operator<< (std::ostream &os, const std::function< std::ostream &(std::ostream &)> &func) |
| template<typename T1 , typename T2 > | |
| std::ostream & | operator<< (std::ostream &os, const std::pair< T1, T2 > &pair) |
| adjEntry | startNodeDFS (Graph &G, adjEntry u_adj, node v, EdgeSet &visited, List< adjEntry > &dfs_stack) |
Use a DFS to find an edge incident to v reachable from u_adj without crossing the node u. | |
| int | sumPNodeDegrees (const ogdf::pc_tree::PCTree &pct) |
| std::string | to_string (const std::function< std::ostream &(std::ostream &)> &func) |
| bool | validateCollectedAdjs (node v, node u, List< SimplifyMapping > &bij_list, EdgeSet &visited, SyncPlanComponents &components) |
Check that /p bij_list contains all adjEntries of v which belong to a parallel bundle leading to u. | |
| void | validatePartnerPCTree (const NodePCRotation *u_pc, const NodePCRotation *v_pc) |
| For two poles u,v of an (SPQR-Tree) parallel, check that their embedding PCTrees correctly represent all parallel bundles between u and v. | |
all operators will only be found when using sync_plan::internal, so no namespace pollution
| using ogdf::sync_plan::internal::GnMultiArray = typedef RegisteredMultiArray<node, BlockEmbedding*, node, NA> |
Definition at line 49 of file BlockEmbedding.h.
| using ogdf::sync_plan::internal::NA = typedef NodeArray<V> |
Definition at line 47 of file BlockEmbedding.h.
| using ogdf::sync_plan::internal::tp = typedef const std::chrono::time_point<std::chrono::high_resolution_clock> |
Definition at line 84 of file SyncPlan.h.
| using ogdf::sync_plan::internal::tpc = typedef std::chrono::high_resolution_clock |
Definition at line 83 of file SyncPlan.h.
| bool ogdf::sync_plan::internal::compareWithExhaustiveNodeDFS | ( | Graph & | G, |
| adjEntry | u_adj, | ||
| node | v, | ||
| const EdgeSet & | visited, | ||
| const List< adjEntry > & | found | ||
| ) |
Check that the method exhaustiveNodeDFS would return the same adjEntries as contained in found.
| adjEntry ogdf::sync_plan::internal::continueNodeDFS | ( | Graph & | G, |
| adjEntry | u_adj, | ||
| node | v, | ||
| EdgeSet & | visited, | ||
| List< adjEntry > & | dfs_stack | ||
| ) |
Continue a DFS from the last node of dfs_stack until an unvisited edge incident to v is found.
All edges visited on the way (also those that didn't lead to an edge incident to v and the edge incident to v found in the end) are added to the set visited.
| G | the graph |
| u_adj | (for debugging purposes) an adjEntry at the bottom of the stack, whose node we should never visit |
| v | the node to find (an adjacent edge to) |
| visited | set of already used edges |
| dfs_stack | continuation points for the dfs |
v reachable from dfs_stack.back() via previously unvisited edges
|
inline |
Definition at line 86 of file SyncPlan.h.
|
inline |
Definition at line 90 of file SyncPlan.h.
| int ogdf::sync_plan::internal::exhaustiveNodeDFS | ( | Graph & | G, |
| adjEntry | u_adj, | ||
| node | v, | ||
| EdgeSet & | visited, | ||
| List< adjEntry > & | out | ||
| ) |
Use a DFS to find all edges incident to v reachable from u_adj without crossing the node u and add them to out.
All edges visited on the way (also those that didn't lead to an edge incident to v and the edge incident to v found in the end) are added to the set visited. Calls startNodeDFS once and then repeatedly calls continueNodeDFS until no new adjEntry is found.
| int ogdf::sync_plan::internal::findCycles | ( | Graph & | G, |
| node | u, | ||
| const std::function< adjEntry(adjEntry)> & | mapping, | ||
| List< List< adjEntry > > & | cycles, | ||
| std::ostream & | log | ||
| ) |
Find all cycles the permutation mapping defines on the order of the adjEntries of u and put all adjEntries of each cycle into their own list in cycles.
| ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER | ( | printBijection | ) |
| ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER | ( | printContainer | ) |
| ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER | ( | printEdges | ) |
| ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER | ( | printFrozenBijection | ) |
| ogdf::sync_plan::internal::OGDF_CONTAINER_PRINTER | ( | printIncidentEdges | ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const ogdf::ClusterGraph & | CG | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const ogdf::Graph & | G | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printBijection< Container > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printContainer< Container > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printEdges< Container > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printEdges< PipeBij > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printFrozenBijection< Container > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printIncidentEdges< Container > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const printIncidentEdges< PipeBij > & | inst | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const std::function< std::ostream &(std::ostream &)> & | func | ||
| ) |
| std::ostream & ogdf::sync_plan::internal::operator<< | ( | std::ostream & | os, |
| const std::pair< T1, T2 > & | pair | ||
| ) |
| adjEntry ogdf::sync_plan::internal::startNodeDFS | ( | Graph & | G, |
| adjEntry | u_adj, | ||
| node | v, | ||
| EdgeSet & | visited, | ||
| List< adjEntry > & | dfs_stack | ||
| ) |
Use a DFS to find an edge incident to v reachable from u_adj without crossing the node u.
All edges visited on the way (also those that didn't lead to an edge incident to v and the edge incident to v found in the end) are added to the set visited. The path taken is recorded in dfs_stack, where dfs_stack.front() == u_adj and dfs_stack.back() is the adjEntry of v which is also returned. If you want to find a further alternative adjEntries that match this criterion, pop the last entry off the stack and call continueNodeDFS (see also exhaustiveNodeDFS).
| int ogdf::sync_plan::internal::sumPNodeDegrees | ( | const ogdf::pc_tree::PCTree & | pct | ) |
| std::string ogdf::sync_plan::internal::to_string | ( | const std::function< std::ostream &(std::ostream &)> & | func | ) |
| bool ogdf::sync_plan::internal::validateCollectedAdjs | ( | node | v, |
| node | u, | ||
| List< SimplifyMapping > & | bij_list, | ||
| EdgeSet & | visited, | ||
| SyncPlanComponents & | components | ||
| ) |
Check that /p bij_list contains all adjEntries of v which belong to a parallel bundle leading to u.
| void ogdf::sync_plan::internal::validatePartnerPCTree | ( | const NodePCRotation * | u_pc, |
| const NodePCRotation * | v_pc | ||
| ) |
For two poles u,v of an (SPQR-Tree) parallel, check that their embedding PCTrees correctly represent all parallel bundles between u and v.
Note: u_pc must be trivial, while v_pc may be non-trivial.