The longest-path ranking algorithm. More...
#include <ogdf/layered/LongestPathRanking.h>
Public Member Functions | |
LongestPathRanking () | |
Creates an instance of longest-path ranking. | |
Algorithm call | |
virtual void | call (const Graph &G, NodeArray< int > &rank) override |
Computes a node ranking of G in rank . | |
void | call (const Graph &G, const EdgeArray< int > &length, NodeArray< int > &rank) |
Computes a node ranking of G with given minimal edge length in rank . | |
virtual void | call (const Graph &G, const EdgeArray< int > &length, const EdgeArray< int > &cost, NodeArray< int > &rank) override |
Computes a node ranking of G with given minimal edge length in rank . | |
void | callUML (const GraphAttributes &AG, NodeArray< int > &rank) |
Call for UML graphs with special treatement of inheritance hierarchies. | |
Optional parameters | |
bool | separateDeg0Layer () const |
Returns the current setting of option separateDeg0Layer. | |
void | separateDeg0Layer (bool sdl) |
Sets the option separateDeg0Layer to sdl . | |
bool | separateMultiEdges () const |
Returns the current setting of option separateMultiEdges. | |
void | separateMultiEdges (bool b) |
Sets the option separateMultiEdges to b . | |
bool | optimizeEdgeLength () const |
Returns the current setting of option optimizeEdgeLength. | |
void | optimizeEdgeLength (bool b) |
Sets the option optimizeEdgeLength to b . | |
bool | alignBaseClasses () const |
Returns the current setting of alignment of base classes (callUML only). | |
void | alignBaseClasses (bool b) |
Sets the option for alignment of base classes to b . | |
bool | alignSiblings () const |
Returns the current setting of option for alignment of siblings. | |
void | alignSiblings (bool b) |
Sets the option for alignment of siblings to b . | |
Module options | |
void | setSubgraph (AcyclicSubgraphModule *pSubgraph) |
Sets the module for the computation of the acyclic subgraph. | |
Public Member Functions inherited from ogdf::RankingModule | |
RankingModule () | |
Initializes a ranking module. | |
virtual | ~RankingModule () |
void | operator() (const Graph &G, NodeArray< int > &rank) |
Computes a node ranking of the digraph G in rank . | |
Private Member Functions | |
void | dfs (node v) |
void | dfsAdd (node v, NodeArray< int > &rank) |
void | doCall (const Graph &G, NodeArray< int > &rank, EdgeArray< bool > &reversed, const EdgeArray< int > &length) |
Implements the algorithm call. | |
void | getTmpRank (node v, NodeArray< int > &rank) |
void | join (GraphCopySimple &GC, NodeArray< node > &superNode, NodeArray< SListPure< node > > &joinedNodes, node v, node w) |
Private Attributes | |
NodeArray< SListPure< Tuple2< node, int > > > | m_adjacent |
bool | m_alignBaseClasses |
Align base classes (callUML only). | |
bool | m_alignSiblings |
Align siblings (callUML only). | |
NodeArray< bool > | m_finished |
NodeArray< int > | m_ingoing |
NodeArray< bool > | m_isSource |
int | m_maxN |
int | m_offset |
bool | m_optimizeEdgeLength |
Optimize for short edges. | |
bool | m_separateMultiEdges |
Separate multi-edges? | |
bool | m_sepDeg0 |
Put isolated nodes on a separate layer? | |
std::unique_ptr< AcyclicSubgraphModule > | m_subgraph |
The acyclic sugraph module. | |
The longest-path ranking algorithm.
The class LongestPathRanking implements the well-known longest-path ranking algorithm, which can be used as first phase in SugiyamaLayout. The implementation contains a special optimization for reducing edge lengths, as well as special treatment of mixed-upward graphs (e.g., UML class diagrams).
The following options affect the crossing minimization step of the algorithm:
Option | Type | Default | Description |
---|---|---|---|
separateDeg0Layer | bool | true | If set to true, isolated nodes are placed on a separate layer. |
separateMultiEdges | bool | true | If set to true, multi-edges will span at least two layers. |
optimizeEdgeLength | bool | true | If set to true the ranking algorithm tries to reduce edge length even if this might increase the height of the layout. Choose false if the longest-path ranking known from the literature shall be used. |
alignBaseClasses | bool | false | If set to true, base classes (in UML class diagrams) are aligned on the same layer (callUML only). |
alignSiblings | bool | false | If set to true, siblings in inheritance trees are aligned on the same layer (callUML only). |
Option | Type | Default | Description |
---|---|---|---|
subgraph | AcyclicSubgraphModule | DfsAcyclicSubgraph | The module for the computation of the acyclic subgraph. |
Definition at line 97 of file LongestPathRanking.h.
ogdf::LongestPathRanking::LongestPathRanking | ( | ) |
Creates an instance of longest-path ranking.
|
inline |
Returns the current setting of alignment of base classes (callUML only).
Definition at line 187 of file LongestPathRanking.h.
Sets the option for alignment of base classes to b
.
Definition at line 190 of file LongestPathRanking.h.
|
inline |
Returns the current setting of option for alignment of siblings.
Definition at line 193 of file LongestPathRanking.h.
Sets the option for alignment of siblings to b
.
Definition at line 196 of file LongestPathRanking.h.
|
inlineoverridevirtual |
Computes a node ranking of G
with given minimal edge length in rank
.
Parameter cost
is just ignored by the implementation.
G | is the input graph. |
length | specifies the minimal length of each edge. |
cost | specifies the edge costs (ignored) |
rank | is assigned the rank (layer) of each node. |
Reimplemented from ogdf::RankingModule.
Definition at line 141 of file LongestPathRanking.h.
void ogdf::LongestPathRanking::call | ( | const Graph & | G, |
const EdgeArray< int > & | length, | ||
NodeArray< int > & | rank | ||
) |
Computes a node ranking of G
with given minimal edge length in rank
.
G | is the input graph. |
length | specifies the minimal length of each edge. |
rank | is assigned the rank (layer) of each node. |
|
overridevirtual |
Computes a node ranking of G
in rank
.
Implements ogdf::RankingModule.
void ogdf::LongestPathRanking::callUML | ( | const GraphAttributes & | AG, |
NodeArray< int > & | rank | ||
) |
Call for UML graphs with special treatement of inheritance hierarchies.
|
private |
Implements the algorithm call.
|
private |
|
inline |
Returns the current setting of option optimizeEdgeLength.
If set to true the ranking algorithm tries to reduce edge length even if this might increase the height of the layout. Choose false if the longest-path ranking known from the literature shall be used.
Definition at line 181 of file LongestPathRanking.h.
Sets the option optimizeEdgeLength to b
.
Definition at line 184 of file LongestPathRanking.h.
|
inline |
Returns the current setting of option separateDeg0Layer.
If set to true, isolated nodes are placed on a separate layer.
Definition at line 158 of file LongestPathRanking.h.
Sets the option separateDeg0Layer to sdl
.
Definition at line 161 of file LongestPathRanking.h.
|
inline |
Returns the current setting of option separateMultiEdges.
If set to true, multi-edges will span at least two layers. Since each such edge will have at least one dummy node, the edges will automaticall be separated in a Sugiyama drawing.
Definition at line 169 of file LongestPathRanking.h.
Sets the option separateMultiEdges to b
.
Definition at line 172 of file LongestPathRanking.h.
|
inline |
Sets the module for the computation of the acyclic subgraph.
Definition at line 204 of file LongestPathRanking.h.
Definition at line 108 of file LongestPathRanking.h.
|
private |
Align base classes (callUML only).
Definition at line 102 of file LongestPathRanking.h.
|
private |
Align siblings (callUML only).
Definition at line 103 of file LongestPathRanking.h.
Definition at line 107 of file LongestPathRanking.h.
Definition at line 109 of file LongestPathRanking.h.
Definition at line 107 of file LongestPathRanking.h.
|
private |
Definition at line 105 of file LongestPathRanking.h.
|
private |
Definition at line 105 of file LongestPathRanking.h.
|
private |
Optimize for short edges.
Definition at line 101 of file LongestPathRanking.h.
|
private |
Separate multi-edges?
Definition at line 100 of file LongestPathRanking.h.
|
private |
Put isolated nodes on a separate layer?
Definition at line 99 of file LongestPathRanking.h.
|
private |
The acyclic sugraph module.
Definition at line 98 of file LongestPathRanking.h.