51class SyncPlanComponents;
83 std::ostream&
print(std::ostream& os)
const override;
Includes declaration of graph class.
Declaration of doubly linked lists and iterators.
Declaration of singly linked lists and iterators.
The main code for modelling and solving Synchronized Planarity instances.
Class for adjacency list elements.
Data type for general directed graphs (adjacency list representation).
Doubly linked lists (maintaining the length of the list).
Class for the representation of nodes.
Singly linked lists (maintaining the length of the list).
This class represents the embedding tree of a single node in a biconnected component.
The information needed for undoing the changes a specific operation made to the graph while maintaini...
(Bi)Connected components information maintained during the SyncPlan algorithm.
A class for modelling and solving Synchronized Planarity instances.
void undo(SyncPlan &pq) override
UndoSimplify(const List< SimplifyMapping > &in_bij, node u2, node u, node v, node v2=nullptr)
SList< FrozenSimplifyMapping > bij
std::ostream & print(std::ostream &os) const override
AdjElement * adjEntry
The type of adjacency entries.
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.
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.
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 th...
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 adjEn...
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.
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.
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 ...
The namespace for all OGDF objects.
friend std::ostream & operator<<(std::ostream &os, const FrozenSimplifyMapping &mapping)
FrozenSimplifyMapping(int u2Adj=-1, int uAdj=-1, int vAdj=-1, int v2Adj=-1)
SimplifyMapping(adjEntry u2Adj=nullptr, adjEntry uAdj=nullptr, adjEntry vAdj=nullptr, adjEntry v2Adj=nullptr)
friend std::ostream & operator<<(std::ostream &os, const SimplifyMapping &mapping)