Embedding that minimizes block-nesting depth and maximizes the external face. More...
#include <ogdf/planarity/EmbedderMinDepthMaxFace.h>
Public Member Functions | |
virtual void | doCall (Graph &G, adjEntry &adjExternal) override |
Call embedder algorithm. More... | |
Public Member Functions inherited from ogdf::EmbedderMaxFace | |
EmbedderMaxFace ()=default | |
EmbedderMaxFace (const EmbedderMaxFace ©)=delete | |
EmbedderMaxFace & | operator= (const EmbedderMaxFace ©)=delete |
Public Member Functions inherited from ogdf::EmbedderModule | |
EmbedderModule () | |
Initializes an embedder module. More... | |
virtual | ~EmbedderModule () |
void | call (Graph &G, adjEntry &adjExternal) |
Calls the embedder algorithm for graph G . More... | |
void | operator() (Graph &G, adjEntry &adjExternal) |
Calls the embedder algorithm for graph G . More... | |
Public Member Functions inherited from ogdf::Module | |
Module () | |
Initializes a module. More... | |
virtual | ~Module () |
Public Member Functions inherited from ogdf::Timeouter | |
Timeouter () | |
timeout is turned of by default More... | |
Timeouter (bool t) | |
timeout is turned off (false) or on (true) (with 0 second) More... | |
Timeouter (const Timeouter &t) | |
Timeouter (double t) | |
timeout is set to the given value (seconds) More... | |
~Timeouter () | |
bool | isTimeLimit () const |
returns whether any time limit is set or not More... | |
Timeouter & | operator= (const Timeouter &t) |
double | timeLimit () const |
returns the current time limit for the call More... | |
void | timeLimit (bool t) |
shorthand to turn timelimit off or on (with 0 seconds) More... | |
void | timeLimit (double t) |
sets the time limit for the call (in seconds); <0 means no limit. More... | |
Protected Types | |
using | MDMFLengthAttribute = embedder::MDMFLengthAttribute |
Protected Member Functions | |
int | bottomUpTraversal (const node &bT, const node &cH) |
Bottom-up-traversal of bcTree computing the values m_{cT, bT} for all edges (cT, bT) in the BC-tree. More... | |
int | constraintMaxFace (const node &bT, const node &cH) override |
Bottom up traversal of BC-tree. More... | |
void | embedBlock (const node &bT) |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT. More... | |
virtual void | embedBlock (const node &bT, const node &cT, ListIterator< adjEntry > &after) |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT. More... | |
virtual void | embedBlock (const node &bT, const node &cT, ListIterator< adjEntry > &after) override |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT. More... | |
void | maximumFaceRec (const node &bT, node &bT_opt, int &ell_opt) override |
Top down traversal of BC-tree. More... | |
void | topDownTraversal (const node &bT) |
Top-down-traversal of BC-tree. More... | |
Protected Member Functions inherited from ogdf::EmbedderMaxFace | |
void | computeBlockGraphs (const node &bT, const node &cH) |
Computes recursively the block graph for every block. More... | |
void | computeNodeLength (node bT, std::function< int &(node)> setter) |
void | embedBlock (const node &bT) |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT. More... | |
void | forEachIngoingNeighbor (node v, std::function< void(node)> fun) |
Calls fun for every ingoing edge (w,v ). More... | |
template<typename T > | |
void | internalEmbedBlock (const node bT, const node cT, ListIterator< adjEntry > &after, Graph &blockGraph, NodeArray< T > ¶mNodeLength, EdgeArray< T > ¶mEdgeLength, NodeArray< node > &mapNodeToH, EdgeArray< edge > &mapEdgeToH, const node nodeInBlock) |
void | internalMaximumFaceRec (const node &bT, node &bT_opt, int &ell_opt, Graph &blockGraph, NodeArray< int > ¶mNodeLength, StaticSPQRTree *spqrTree, std::function< node &(node)> getBENode, std::function< int &(node, node)> getCstrLength, std::function< int &(node, node)> getNodeLength, int *const maxFaceSizeToUpdate=nullptr) |
Protected Member Functions inherited from ogdf::embedder::EmbedderBCTreeBase< false > | |
node | initBCTree (Graph &G) |
Initializes pBCTree and returns the root node of this tree or nullptr if G is biconnected. More... | |
virtual adjEntry | trivialInit (Graph &G) |
Initialization code for biconnected input. Returns an adjacency entry that lies on the external face. More... | |
Protected Attributes | |
EdgeArray< int > | cB |
an array saving the length for each edge in the BC-tree More... | |
EdgeArray< MDMFLengthAttribute > | edgeLength |
is saving for each edge of the block graph its length More... | |
NodeArray< List< node > > | M2 |
M2 is empty, if |M_B| != 1, otherwise M_B = {cH} M2 = {cH' in V_B \ {v} | m_B(cH') = m2} with m2 = max{m_B(vH) : vH in V_B, vH != cH}. More... | |
NodeArray< int > | maxFaceSize |
an array containing the maximum face size of each block More... | |
NodeArray< List< node > > | md_M_B |
M_B = {cH in B | m_B(cH) = m_B} with m_B = max{m_B(c) : c in B} and m_B(c) = max( {0} cup {m_{c, B'} | c in B', B' != B} ). More... | |
NodeArray< int > | md_nodeLength |
saving for each node in the block graph its length More... | |
NodeArray< MDMFLengthAttribute > | mdmf_nodeLength |
is saving for each node of the block graph its length More... | |
NodeArray< int > | mf_cstrLength |
is saving for each node of the block graph its cstrLength More... | |
NodeArray< int > | mf_nodeLength |
is saving for each node of the block graph its length More... | |
NodeArray< int > | minDepth |
an array containing the minimum depth of each block More... | |
Protected Attributes inherited from ogdf::EmbedderMaxFace | |
NodeArrayP< Graph > | blockG |
all blocks More... | |
NodeArray< NodeArray< int > > | cstrLength |
is saving for each node in the block graphs its cstrLength More... | |
NodeArray< EdgeArray< edge > > | eBlockEmbedding_to_eH |
a mapping of edges in blockG to the auxiliaryGraph of the BC-tree More... | |
NodeArray< EdgeArray< edge > > | eH_to_eBlockEmbedding |
a mapping of edges in the auxiliaryGraph of the BC-tree to blockG More... | |
NodeArray< NodeArray< node > > | nBlockEmbedding_to_nH |
a mapping of nodes in blockG to the auxiliaryGraph of the BC-tree More... | |
NodeArray< List< adjEntry > > | newOrder |
saves for every node of PG the new adjacency list More... | |
NodeArray< NodeArray< node > > | nH_to_nBlockEmbedding |
a mapping of nodes in the auxiliaryGraph of the BC-tree to blockG More... | |
NodeArray< NodeArray< int > > | nodeLength |
saving for each node in the block graphs its length More... | |
NodeArray< StaticSPQRTree * > | spqrTrees |
The SPQR-trees of the blocks. More... | |
NodeArray< bool > | treeNodeTreated |
treeNodeTreated saves for all block nodes in the BC-tree if it has already been treated or not. More... | |
Protected Attributes inherited from ogdf::embedder::EmbedderBCTreeBase< false > | |
adjEntry * | pAdjExternal |
an adjacency entry on the external face More... | |
BCTree * | pBCTree |
BC-tree of the original graph. More... | |
Protected Attributes inherited from ogdf::Timeouter | |
double | m_timeLimit |
Time limit for module calls (< 0 means no limit). More... | |
Additional Inherited Members | |
Public Types inherited from ogdf::Module | |
enum | ReturnType { ReturnType::Feasible, ReturnType::Optimal, ReturnType::NoFeasibleSolution, ReturnType::TimeoutFeasible, ReturnType::TimeoutInfeasible, ReturnType::Error } |
The return type of a module. More... | |
Static Public Member Functions inherited from ogdf::Module | |
static bool | isSolution (ReturnType ret) |
Returns true iff ret indicates that the module returned a feasible solution. More... | |
Embedding that minimizes block-nesting depth and maximizes the external face.
See the paper "Graph Embedding with Minimum Depth and Maximum External Face" by C. Gutwenger and P. Mutzel (2004) for details.
Definition at line 49 of file EmbedderMinDepthMaxFace.h.
Definition at line 59 of file EmbedderMinDepthMaxFace.h.
Bottom-up-traversal of bcTree computing the values m_{cT, bT} for all edges (cT, bT) in the BC-tree.
The length of each vertex v != c in bT
is set to 1 if v in M_{bT} and to 0 otherwise.
bT | is a block vertex in the BC-tree. |
cH | is a vertex in the original graph G. |
bT
with cH
on the external face.
|
overrideprotectedvirtual |
Bottom up traversal of BC-tree.
bT | is the BC-tree node treated in this function call. |
cH | is the block node which is related to the cut vertex which is parent of bT in BC-tree. |
Reimplemented from ogdf::EmbedderMaxFace.
|
overridevirtual |
Call embedder algorithm.
G | is the original graph. Its adjacency list has to be changed by the embedder. |
adjExternal | is an adjacency entry on the external face and has to be set by the embedder. |
Reimplemented from ogdf::EmbedderMaxFace.
|
protected |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT.
bT | is the tree node treated in this function call. |
|
protected |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT.
bT | is the tree node treated in this function call. |
cT | is the parent cut vertex node of bT in the BC-tree. cT is 0 if bT is the root block. |
after | is the adjacency entry of the cut vertex, after which bT has to be inserted. |
|
overrideprotectedvirtual |
Computes the adjacency list for all nodes in a block and calls recursively the function for all blocks incident to nodes in bT.
bT | is the tree node treated in this function call. |
cT | is the parent cut vertex node of bT in the BC-tree. cT is 0 if bT is the root block. |
after | is the adjacency entry of the cut vertex, after which bT has to be inserted. |
Reimplemented from ogdf::EmbedderMaxFace.
Reimplemented in ogdf::EmbedderMinDepthMaxFaceLayers.
|
overrideprotectedvirtual |
Top down traversal of BC-tree.
bT | is the tree node treated in this function call. |
bT_opt | is assigned a block node in BC-tree which contains a face which cann be expanded to a maximum face. |
ell_opt | is the size of a maximum face. |
Reimplemented from ogdf::EmbedderMaxFace.
|
protected |
Top-down-traversal of BC-tree.
The minimum depth of the BC-tree-node bT is calculated and before calling the function recursively for all children of bT in the BC-tree, the nodeLength of the cut-vertex which bT and the child have in common is computed. The length of each node is set to 1 if it is in M_B and 0 otherwise, except for |M_B| = 1, than it is set to 1 if it is in M2 with m2 = max{m_B(v) : v in V_B, v != c} and M2 = {c in V_B \ {v} | m_B(c) = m2}.
bT | is a block vertex in the BC-tree. |
|
protected |
an array saving the length for each edge in the BC-tree
Definition at line 101 of file EmbedderMinDepthMaxFace.h.
|
protected |
is saving for each edge of the block graph its length
Definition at line 125 of file EmbedderMinDepthMaxFace.h.
M2 is empty, if |M_B| != 1, otherwise M_B = {cH} M2 = {cH' in V_B \ {v} | m_B(cH') = m2} with m2 = max{m_B(vH) : vH in V_B, vH != cH}.
Definition at line 110 of file EmbedderMinDepthMaxFace.h.
|
protected |
an array containing the maximum face size of each block
Definition at line 119 of file EmbedderMinDepthMaxFace.h.
M_B = {cH in B | m_B(cH) = m_B} with m_B = max{m_B(c) : c in B} and m_B(c) = max( {0} cup {m_{c, B'} | c in B', B' != B} ).
Definition at line 105 of file EmbedderMinDepthMaxFace.h.
|
protected |
saving for each node in the block graph its length
Definition at line 95 of file EmbedderMinDepthMaxFace.h.
|
protected |
is saving for each node of the block graph its length
Definition at line 122 of file EmbedderMinDepthMaxFace.h.
|
protected |
is saving for each node of the block graph its cstrLength
Definition at line 116 of file EmbedderMinDepthMaxFace.h.
|
protected |
is saving for each node of the block graph its length
Definition at line 113 of file EmbedderMinDepthMaxFace.h.
|
protected |
an array containing the minimum depth of each block
Definition at line 98 of file EmbedderMinDepthMaxFace.h.