Declaration of CombinatorialEmbedding and face.
Declaration and implementation of ogdf::FaceSet.
Includes declaration of graph class.
Declaration and implementation of ogdf::NodeSet.
Declaration of singly linked lists and iterators.
Class for adjacency list elements.
The parameterized class Array implements dynamic arrays of type E.
Combinatorial embeddings of planar graphs with modification functionality.
Dynamic arrays indexed with edges.
Class for the representation of edges.
Data type for general directed graphs (adjacency list representation).
Doubly linked lists (maintaining the length of the list).
Encapsulates a pointer to a list element.
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
Representation of a node split in a planarized expansion.
List< edge > m_path
The insertion path of the node split.
ListIterator< NodeSplit > m_nsIterator
This node split's iterator in the list of all node splits.
NodeSplit(ListIterator< NodeSplit > it)
Creates a node split and sets its iterator in the list of all node splits.
node target() const
Returns the last node on the node split's insertion path.
NodeSplit()
Creates an empty node split.
node source() const
Returns the first node on the node split's insertion path.
Planarized representations (of a connected component) of a graph.
edge unsplitExpandNode(node u, edge eContract, edge eExpand)
Unsplits a superfluous expansion node of degree 2.
bool embed()
Embeds the planarized expansion; returns true iff it is planar.
EdgeArray< ListIterator< edge > > m_eIterator
The position of copy edge in the list.
const List< node > & expansion(node vOrig) const
Returns the list of copy nodes of vOrig.
NodeArray< bool > m_splittable
edge separateDummy(adjEntry adj_1, adjEntry adj_2, node vStraight, bool isSrc)
EdgeArray< NodeSplit * > m_eNodeSplit
void contractSplit(nodeSplit ns)
Removes an (unneccessary) node split consisting of a single edge.
edge split(edge e) override
Splits edge e into two edges introducing a new node.
int m_currentCC
The index of the current component.
int m_numCC
The number of components in the original graph.
NodeSplit * nodeSplitOf(edge e) const
Returns the node split associated with e, or 0 if none (e.g., e belongs to an original edge).
Array< List< node > > m_nodesInCC
The list of original nodes in each component.
edge unsplitExpandNode(node u, edge eContract, edge eExpand, CombinatorialEmbedding &E)
Unsplits a superfluous expansion node of degree 2.
edge splitNodeSplit(edge e, CombinatorialEmbedding &E)
Introduces a new node split by splitting an exisiting node split.
NodeArray< List< node > > m_vCopy
The corresponding list of nodes in the graph copy.
NodeArray< ListIterator< node > > m_vIterator
The position of copy node in the list.
List< edge > & setOrigs(edge e, edge &eOrig, nodeSplit &ns)
Sets the original edge and corresponding node split of e and returns the corresponding insertion path...
bool isPseudoCrossing(node v) const
NodeArray< bool > m_splittableOrig
void doInit(const Graph &G, const List< node > &splittableNodes)
const List< node > & nodesInCC() const
Returns the list of (original) nodes in the current connected component.
const Graph * m_pGraph
The original graph.
void removeSelfLoop(edge e)
PlanRepExpansion(const Graph &G)
Creates a planarized expansion of graph G.
PlanRepExpansion::nodeSplit convertDummy(node u, node vOrig, PlanRepExpansion::nodeSplit ns)
Converts a dummy node u to a copy of an original node vOrig.
int numberOfCCs() const
Returns the number of connected components in the original graph.
void contractSplit(nodeSplit ns, CombinatorialEmbedding &E)
Removes an (unneccessary) node split consisting of a single edge.
void unsplit(edge eIn, edge eOut) override
Undoes a split operation.
PlanRepExpansion(const Graph &G, const List< node > &splittableNodes)
Creates a planarized expansion of graph G with given splittable nodes.
void insertEdgePath(edge eOrig, nodeSplit ns, node vStart, node vEnd, List< Crossing > &eip, edge eSrc, edge eTgt)
bool splittableOrig(node vOrig) const
Returns true iff vOrig is splittable.
void removeEdgePath(edge eOrig, nodeSplit ns, node &oldSrc, node &oldTgt)
Removes the insertion path of eOrig or ns.
node copy(node vOrig) const
Returns the first copy node of vOrig.
virtual void delEdge(edge e) override
Removes edge e from the planarized expansion.
edge splitNodeSplit(edge e)
Introduces a new node split by splitting an exisiting node split.
int numberOfNodeSplits() const
Returns the number of node splits.
int currentCC() const
Returns the index of the current connected component (-1 if not yet initialized).
int numberOfSplittedNodes() const
bool splittable(node v) const
Returns true iff v is splittable.
void removeEdgePathEmbedded(CombinatorialEmbedding &E, edge eOrig, nodeSplit ns, FaceSet< false > &newFaces, NodeSet< false > &mergedNodes, node &oldSrc, node &oldTgt)
Removes the insertion path of eOrig or ns.
void resolvePseudoCrossing(node v)
const Graph & original() const
Returns a reference to the original graph.
EdgeArray< edge > m_eAuxCopy
edge originalEdge(edge e) const
Returns the original edge of e, or 0 if e has none (e.g., e belongs to a node split).
int computeNumberOfCrossings() const
Computes the number of crossings.
void prepareNodeSplit(const SList< adjEntry > &partitionLeft, adjEntry &adjLeft, adjEntry &adjRight)
const List< edge > & chain(edge eOrig) const
Returns the insertion path of edge eOrig.
ListConstIterator< edge > position(edge e) const
NodeArray< node > m_vOrig
The corresponding node in the original graph.
node original(node v) const
Returns the original node of v, or 0 if v is a dummy.
const List< node > & nodesInCC(int i) const
Returns the list of (original) nodes in connected component i.
List< NodeSplit > m_nodeSplits
EdgeArray< edge > m_eOrig
The corresponding edge in the original graph.
edge copy(edge eOrig) const
Returns the first edge in eOrig's insertion path.
void initCC(int i)
Initializes the planarized representation for connected component i.
edge enlargeSplit(node v, edge e, CombinatorialEmbedding &E)
Splits edge e and introduces a new node split starting at v.
edge enlargeSplit(node v, edge e)
Splits edge e and introduces a new node split starting at v.
void insertEdgePathEmbedded(edge eOrig, nodeSplit ns, CombinatorialEmbedding &E, const List< Tuple2< adjEntry, adjEntry > > &crossedEdges)
Inserts an edge or a node split according to insertion path crossedEdges.
void removeSelfLoop(edge e, CombinatorialEmbedding &E)
Removes a self-loop e = (u,u).
EdgeArray< List< edge > > m_eCopy
The corresponding list of edges in the graph copy.
List< NodeSplit > & nodeSplits()
Returns the list of node splits.
Singly linked lists (maintaining the length of the list).
Tuples of two elements (2-tuples).
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.
friend std::ostream & operator<<(std::ostream &os, const Crossing &c)
SList< adjEntry > m_partitionLeft
SList< adjEntry > m_partitionRight
Declaration and implementation of class Tuple2, Tuple3 and Tuple4.