#include <FMMMLayout.h>

Public Types | |
| enum | PageFormatType { pfPortrait, pfLandscape, pfSquare } |
| Possible page formats. More... | |
| enum | QualityVsSpeed { qvsGorgeousAndEfficient, qvsBeautifulAndFast, qvsNiceAndIncredibleSpeed } |
| Trade-off between run-time and quality. More... | |
| enum | EdgeLengthMeasurement { elmMidpoint, elmBoundingCircle } |
| Specifies how the length of an edge is measured. More... | |
| enum | AllowedPositions { apAll, apInteger, apExponent } |
| Specifies which positions for a node are allowed. More... | |
| enum | TipOver { toNone, toNoGrowingRow, toAlways } |
| Specifies in which case it is allowed to tip over drawings of connected components. More... | |
| enum | PreSort { psNone, psDecreasingHeight, psDecreasingWidth } |
| Specifies how connected components are sorted before the packing algorithm is applied. More... | |
| enum | GalaxyChoice { gcUniformProb, gcNonUniformProbLowerMass, gcNonUniformProbHigherMass } |
| Specifies how sun nodes of galaxies are selected. More... | |
| enum | MaxIterChange { micConstant, micLinearlyDecreasing, micRapidlyDecreasing } |
| Specifies how MaxIterations is changed in subsequent multilevels. More... | |
| enum | InitialPlacementMult { ipmSimple, ipmAdvanced } |
| Specifies how the initial placement is generated. More... | |
| enum | ForceModel { fmFruchtermanReingold, fmEades, fmNew } |
| Specifies the force model. More... | |
| enum | RepulsiveForcesMethod { rfcExact, rfcGridApproximation, rfcNMM } |
| Specifies how to calculate repulsive forces. More... | |
| enum | StopCriterion { scFixedIterations, scThreshold, scFixedIterationsOrThreshold } |
| Specifies the stop criterion. More... | |
| enum | InitialPlacementForces { ipfUniformGrid, ipfRandomTime, ipfRandomRandIterNr } |
| Specifies how the initial placement is done. More... | |
| enum | ReducedTreeConstruction { rtcPathByPath, rtcSubtreeBySubtree } |
| Specifies how the reduced bucket quadtree is constructed. More... | |
| enum | SmallestCellFinding { scfIteratively, scfAluru } |
| Specifies how to calculate the smallest quadratic cell surrounding particles of a node in the reduced bucket quadtree. More... | |
Public Member Functions | |
| FMMMLayout () | |
| Creates an instance of the layout algorithm. | |
| ~FMMMLayout () | |
The algorithm call | |
| void | call (GraphAttributes &GA) |
| Calls the algorithm for graph GA and returns the layout information in AG. | |
| void | call (GraphAttributes &AG, const EdgeArray< double > &edgeLength) |
| Extended algorithm call: Allows to pass desired lengths of the edges. | |
| void | call (GraphAttributes &AG, char *ps_file) |
| Extended algorithm call: Calls the algorithm for graph AG. | |
| void | call (GraphAttributes &AG, const EdgeArray< double > &edgeLength, char *ps_file) |
| Extend algorithm call: Allows to pass desired lengths of the edges. | |
Further information. | |
| double | getCpuTime () |
| Returns the runtime (=CPU-time) of the layout algorithm in seconds. | |
High-level options | |
Allow to specify the most relevant parameters. | |
| bool | useHighLevelOptions () const |
| Returns the current setting of option useHighLevelOptions. | |
| void | useHighLevelOptions (bool uho) |
| Sets the option useHighLevelOptions to uho. | |
| PageFormatType | pageFormat () const |
| Returns the current setting of option pageFormat. | |
| void | pageFormat (PageFormatType t) |
| Sets the option pageRatio to t. | |
| double | unitEdgeLength () const |
| Returns the current setting of option unitEdgeLength. | |
| void | unitEdgeLength (double x) |
| Sets the option unitEdgeLength to x. | |
| bool | newInitialPlacement () const |
| Returns the current setting of option newInitialPlacement. | |
| void | newInitialPlacement (bool nip) |
| Sets the option newInitialPlacement to nip. | |
| QualityVsSpeed | qualityVersusSpeed () const |
| Returns the current setting of option qualityVersusSpeed. | |
| void | qualityVersusSpeed (QualityVsSpeed qvs) |
| Sets the option qualityVersusSpeed to qvs. | |
General low-level options | |
The low-level options in this and the following sections are meant for experts or interested people only. | |
| void | randSeed (int p) |
| Sets the seed of the random number generator. | |
| int | randSeed () const |
| Returns the seed of the random number generator. | |
| EdgeLengthMeasurement | edgeLengthMeasurement () const |
| Returns the current setting of option edgeLengthMeasurement. | |
| void | edgeLengthMeasurement (EdgeLengthMeasurement elm) |
| Sets the option edgeLengthMeasurement to elm. | |
| AllowedPositions | allowedPositions () const |
| Returns the current setting of option allowedPositions. | |
| void | allowedPositions (AllowedPositions ap) |
| Sets the option allowedPositions to ap. | |
| int | maxIntPosExponent () const |
| Returns the current setting of option maxIntPosExponent. | |
| void | maxIntPosExponent (int e) |
| Sets the option maxIntPosExponent to e. | |
Options for the divide et impera step | |
| double | pageRatio () const |
| Returns the current setting of option pageRatio. | |
| void | pageRatio (double r) |
| Sets the option pageRatio to r. | |
| int | stepsForRotatingComponents () const |
| Returns the current setting of option stepsForRotatingComponents. | |
| void | stepsForRotatingComponents (int n) |
| Sets the option stepsForRotatingComponents to n. | |
| TipOver | tipOverCCs () const |
| Returns the current setting of option tipOverCCs. | |
| void | tipOverCCs (TipOver to) |
| Sets the option tipOverCCs to to. | |
| double | minDistCC () const |
| Returns the minimal distance between connected components. | |
| void | minDistCC (double x) |
| Sets the minimal distance between connected components to x. | |
| PreSort | presortCCs () const |
| Returns the current setting of option presortCCs. | |
| void | presortCCs (PreSort ps) |
| Sets the option presortCCs to ps. | |
Options for the multilevel step | |
| int | minGraphSize () const |
| Returns the current setting of option minGraphSize. | |
| void | minGraphSize (int n) |
| Sets the option minGraphSize to n. | |
| GalaxyChoice | galaxyChoice () const |
| Returns the current setting of option galaxyChoice. | |
| void | galaxyChoice (GalaxyChoice gc) |
| Sets the option galaxyChoice to gc. | |
| int | randomTries () const |
| Returns the current setting of option randomTries. | |
| void | randomTries (int n) |
| Sets the option randomTries to n. | |
| MaxIterChange | maxIterChange () const |
| Returns the current setting of option maxIterChange. | |
| void | maxIterChange (MaxIterChange mic) |
| Sets the option maxIterChange to mic. | |
| int | maxIterFactor () const |
| Returns the current setting of option maxIterFactor. | |
| void | maxIterFactor (int f) |
| Sets the option maxIterFactor to f. | |
| InitialPlacementMult | initialPlacementMult () const |
| Returns the current setting of option initialPlacementMult. | |
| void | initialPlacementMult (InitialPlacementMult ipm) |
| Sets the option initialPlacementMult to ipm. | |
Options for the force calculation step | |
| ForceModel | forceModel () const |
| Returns the used force model. | |
| void | forceModel (ForceModel fm) |
| Sets the used force model to fm. | |
| double | springStrength () const |
| Returns the strength of the springs. | |
| void | springStrength (double x) |
| Sets the strength of the springs to x. | |
| double | repForcesStrength () const |
| Returns the strength of the repulsive forces. | |
| void | repForcesStrength (double x) |
| Sets the strength of the repulsive forces to x. | |
| RepulsiveForcesMethod | repulsiveForcesCalculation () const |
| Returns the current setting of option repulsiveForcesCalculation. | |
| void | repulsiveForcesCalculation (RepulsiveForcesMethod rfc) |
| Sets the option repulsiveForcesCalculation to rfc. | |
| StopCriterion | stopCriterion () const |
| Returns the stop criterion. | |
| void | stopCriterion (StopCriterion rsc) |
| Sets the stop criterion to rsc. | |
| double | threshold () const |
| Returns the threshold for the stop criterion. | |
| void | threshold (double x) |
| Sets the threshold for the stop criterion to x. | |
| int | fixedIterations () const |
| Returns the fixed number of iterations for the stop criterion. | |
| void | fixedIterations (int n) |
| Sets the fixed number of iterations for the stop criterion to n. | |
| double | forceScalingFactor () const |
| Returns the scaling factor for the forces. | |
| void | forceScalingFactor (double f) |
| Sets the scaling factor for the forces to \ f. | |
| bool | coolTemperature () const |
| Returns the current setting of option coolTemperature. | |
| void | coolTemperature (bool b) |
| Sets the option coolTemperature to b. | |
| double | coolValue () const |
| Returns the current setting of option coolValue. | |
| void | coolValue (double x) |
| Sets the option coolValue to x. | |
| InitialPlacementForces | initialPlacementForces () const |
| Returns the current setting of option initialPlacementForces. | |
| void | initialPlacementForces (InitialPlacementForces ipf) |
| Sets the option initialPlacementForces to ipf. | |
Options for the postprocessing step | |
| bool | resizeDrawing () const |
| Returns the current setting of option resizeDrawing. | |
| void | resizeDrawing (bool b) |
| Sets the option resizeDrawing to b. | |
| double | resizingScalar () const |
| Returns the current setting of option resizingScalar. | |
| void | resizingScalar (double s) |
| Sets the option resizingScalar to s. | |
| int | fineTuningIterations () const |
| Returns the number of iterations for fine tuning. | |
| void | fineTuningIterations (int n) |
| Sets the number of iterations for fine tuning to n. | |
| double | fineTuneScalar () const |
| Returns the curent setting of option fineTuneScalar. | |
| void | fineTuneScalar (double s) |
| Sets the option fineTuneScalar to s. | |
| bool | adjustPostRepStrengthDynamically () const |
| Returns the current setting of option adjustPostRepStrengthDynamically. | |
| void | adjustPostRepStrengthDynamically (bool b) |
| Sets the option adjustPostRepStrengthDynamically to b. | |
| double | postSpringStrength () const |
| Returns the strength of the springs in the postprocessing step. | |
| void | postSpringStrength (double x) |
| Sets the strength of the springs in the postprocessing step to x. | |
| double | postStrengthOfRepForces () const |
| Returns the strength of the repulsive forces in the postprocessing step. | |
| void | postStrengthOfRepForces (double x) |
| Sets the strength of the repulsive forces in the postprocessing step to x. | |
Options for repulsive force approximation methods | |
| int | frGridQuotient () const |
| Returns the current setting of option frGridQuotient. | |
| void | frGridQuotient (int p) |
| Sets the option frGridQuotient to p. | |
| ReducedTreeConstruction | nmTreeConstruction () const |
| Returns the current setting of option nmTreeConstruction. | |
| void | nmTreeConstruction (ReducedTreeConstruction rtc) |
| Sets the option nmTreeConstruction to rtc. | |
| SmallestCellFinding | nmSmallCell () const |
| Returns the current setting of option nmSmallCell. | |
| void | nmSmallCell (SmallestCellFinding scf) |
| Sets the option nmSmallCell to scf. | |
| int | nmParticlesInLeaves () const |
| Returns the current setting of option nmParticlesInLeaves. | |
| void | nmParticlesInLeaves (int n) |
| Sets the option nmParticlesInLeaves to n. | |
| int | nmPrecision () const |
| Returns the precision p for the p-term multipole expansions. | |
| void | nmPrecision (int p) |
| Sets the precision for the multipole expansions to \ p. | |
Private Member Functions | |
| void | call_DIVIDE_ET_IMPERA_step (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E) |
| Calls the divide (decomposition into connected components) and impera (drawing and packing of the componenets) step. | |
| void | call_MULTILEVEL_step_for_subGraph (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, int comp_index) |
| Calls the multilevel step for subGraph G. | |
| void | call_FORCE_CALCULATION_step (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, int act_level, int max_level) |
| Calls the force calculation step for G, A, E. | |
| void | call_POSTPROCESSING_step (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, NodeArray< DPoint > &F, NodeArray< DPoint > &F_attr, NodeArray< DPoint > &F_rep, NodeArray< DPoint > &last_node_movement) |
| Calls the postprocessing step. | |
| void | initialize_all_options () |
| All parameter options are set to the default values. | |
| void | update_low_level_options_due_to_high_level_options_settings () |
| Updates several low level parameter options due to the settings of the high level parameter options. | |
| void | import_NodeAttributes (const Graph &G, GraphAttributes &GA, NodeArray< NodeAttributes > &A) |
| Imports for each node v of G its width, height and position(given from GA) in A. | |
| void | import_EdgeAttributes (const Graph &G, const EdgeArray< double > &edgeLength, EdgeArray< EdgeAttributes > &E) |
| Imports for each edge e of G its desired length given via edgeLength. | |
| void | init_ind_ideal_edgelength (const Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E) |
| Sets the individual ideal edge length for each edge e. | |
| void | set_radii (const Graph &G, NodeArray< NodeAttributes > &A) |
| The radii of the surrounding circles of the bounding boxes are computed. | |
| void | export_NodeAttributes (Graph &G_reduced, NodeArray< NodeAttributes > &A_reduced, GraphAttributes &GA) |
| Exports for each node v in G_reduced the position of the original_node in G. | |
| void | make_simple_loopfree (const Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes >E, Graph &G_reduced, NodeArray< NodeAttributes > &A_reduced, EdgeArray< EdgeAttributes > &E_reduced) |
| Creates a simple and loopfree copy of G and stores the corresponding node / edge attributes. | |
| void | delete_parallel_edges (const Graph &G, EdgeArray< EdgeAttributes > &E, Graph &G_reduced, List< edge > &S, EdgeArray< double > &new_edgelength) |
| Deletes parallel edges of G_reduced. | |
| void | update_edgelength (List< edge > &S, EdgeArray< double > &new_edgelength, EdgeArray< EdgeAttributes > &E_reduced) |
| Sets for each edge e of G_reduced in S its edgelength to new_edgelength[e]. | |
| double | get_post_rep_force_strength (int n) |
| Returns the value for the strength of the repulsive forces. | |
| void | make_positions_integer (Graph &G, NodeArray< NodeAttributes > &A) |
| Makes the node positions integers. | |
| void | create_postscript_drawing (GraphAttributes &AG, char *ps_file) |
| Creates a simple drawing of AG in postscript format and saves it in file ps_file. | |
| void | create_maximum_connected_subGraphs (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, Graph G_sub[], NodeArray< NodeAttributes > A_sub[], EdgeArray< EdgeAttributes > E_sub[], NodeArray< int > &component) |
| Constructs the list of connected components of G. | |
| void | pack_subGraph_drawings (NodeArray< NodeAttributes > &A, Graph G_sub[], NodeArray< NodeAttributes > A_sub[]) |
| The drawings of the subgraphs are packed. | |
| void | calculate_bounding_rectangles_of_components (List< Rectangle > &R, Graph G_sub[], NodeArray< NodeAttributes > A_sub[]) |
| The bounding rectangles of all connected componenents of G are calculated and stored in R. | |
| Rectangle | calculate_bounding_rectangle (Graph &G, NodeArray< NodeAttributes > &A, int componenet_index) |
| The bounding rectangle of the componenet_index-th. component of G is returned. | |
| void | rotate_components_and_calculate_bounding_rectangles (List< Rectangle > &R, Graph G_sub[], NodeArray< NodeAttributes > A_sub[]) |
| double | calculate_area (double width, double height, int comp_nr) |
| void | export_node_positions (NodeArray< NodeAttributes > &A, List< Rectangle > &R, Graph G_sub[], NodeArray< NodeAttributes > A_sub[]) |
| void | delete_all_subGraphs (Graph G_sub[], NodeArray< NodeAttributes > A_sub[], EdgeArray< EdgeAttributes > E_sub[]) |
| Frees dynamically allocated memory for the connected component subgraphs. | |
| int | get_max_mult_iter (int act_level, int max_level, int node_nr) |
| void | calculate_forces (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, NodeArray< DPoint > &F, NodeArray< DPoint > &F_attr, NodeArray< DPoint > &F_rep, NodeArray< DPoint > &last_node_movement, int iter, int fine_tuning_step) |
| The forces are calculated here. | |
| void | init_boxlength_and_cornercoordinate (Graph &G, NodeArray< NodeAttributes > &A) |
| The length of the computational box in the first iteration is set (down left corner is at (0,0). | |
| void | create_initial_placement (Graph &G, NodeArray< NodeAttributes > &A) |
| The initial placements of the nodes are created by using initialPlacementForces(). | |
| void | init_F (Graph &G, NodeArray< DPoint > &F) |
| Sets all entries of F to (0,0). | |
| void | make_initialisations_for_rep_calc_classes (Graph &G, NodeArray< NodeAttributes > &A, NodeArray< DPoint > &F_rep) |
| Make initializations for the data structures that are used in the choosen class for rep. force calculation. | |
| void | calculate_repulsive_forces (Graph &G, NodeArray< NodeAttributes > &A, NodeArray< DPoint > &F_rep) |
| Calculates repulsive forces for each node. | |
| void | deallocate_memory_for_rep_calc_classes () |
| Deallocates dynamically allocated memory of the choosen rep. calculation class. | |
| void | calculate_attractive_forces (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E, NodeArray< DPoint > &F_attr) |
| Calculates attractive forces for each node. | |
| double | f_attr_scalar (double d, double ind_ideal_edge_length) |
| Returns the attractive force scalar. | |
| void | add_attr_rep_forces (Graph &G, NodeArray< DPoint > &F_attr, NodeArray< DPoint > &F_rep, NodeArray< DPoint > &F, int iter, int fine_tuning_step) |
| Add attractive and repulsive forces for each node. | |
| void | move_nodes (Graph &G, NodeArray< NodeAttributes > &A, NodeArray< DPoint > &F) |
| Move the nodes. | |
| void | update_boxlength_and_cornercoordinate (Graph &G, NodeArray< NodeAttributes > &A) |
| Computes a new tight computational square-box. | |
| double | max_radius (int iter) |
| Describes the max. radius of a move in one time step, depending on the number of iterations. | |
| void | set_average_ideal_edgelength (Graph &G, EdgeArray< EdgeAttributes > &E) |
| The average_ideal_edgelength for all edges is computed. | |
| double | get_average_forcevector_length (Graph &G, NodeArray< DPoint > &F) |
| void | prevent_oscilations (Graph &G, NodeArray< DPoint > &F, NodeArray< DPoint > &last_node_movement, int iter) |
| double | angle (DPoint &P, DPoint &Q, DPoint &R) |
| Calculates the angle between PQ and PS in [0,2pi). | |
| void | init_last_node_movement (Graph &G, NodeArray< DPoint > &F, NodeArray< DPoint > &last_node_movement) |
| last_node_movement is initialized to F (used after first iteration). | |
| void | adapt_drawing_to_ideal_average_edgelength (Graph &G, NodeArray< NodeAttributes > &A, EdgeArray< EdgeAttributes > &E) |
| void | restrict_force_to_comp_box (DPoint &force) |
| void | init_time () |
| Sets time_total to zero. | |
Private Attributes | |
| bool | m_useHighLevelOptions |
| The option for using high-level options. | |
| PageFormatType | m_pageFormat |
| The option for the page format. | |
| double | m_unitEdgeLength |
| The unit edge length. | |
| bool | m_newInitialPlacement |
| The option for new initial placement. | |
| QualityVsSpeed | m_qualityVersusSpeed |
| The option for quality-vs-speed trade-off. | |
| int | m_randSeed |
| The random seed. | |
| EdgeLengthMeasurement | m_edgeLengthMeasurement |
| The option for edge length measurement. | |
| AllowedPositions | m_allowedPositions |
| The option for allowed positions. | |
| int | m_maxIntPosExponent |
| The option for the used exponent. | |
| double | m_pageRatio |
| The desired page ratio. | |
| int | m_stepsForRotatingComponents |
| The number of rotations. | |
| TipOver | m_tipOverCCs |
| Option for tip-over of connected components. | |
| double | m_minDistCC |
| The separation between connected components. | |
| PreSort | m_presortCCs |
| The option for presorting connected components. | |
| int | m_minGraphSize |
| The option for minimal graph size. | |
| GalaxyChoice | m_galaxyChoice |
| The selection of galaxy nodes. | |
| int | m_randomTries |
| The number of random tries. | |
| MaxIterChange | m_maxIterChange |
| The option for how to change MaxIterations. | |
| int | m_maxIterFactor |
| The factor used for decreasing MaxIterations. | |
| InitialPlacementMult | m_initialPlacementMult |
| The option for creating initial placement. | |
| ForceModel | m_forceModel |
| The used force model. | |
| double | m_springStrength |
| The strengths of springs. | |
| double | m_repForcesStrength |
| The strength of repulsive forces. | |
| RepulsiveForcesMethod | m_repulsiveForcesCalculation |
| Option for how to calculate repulsive forces. | |
| StopCriterion | m_stopCriterion |
| The stop criterion. | |
| double | m_threshold |
| The threshold for the stop criterion. | |
| int | m_fixedIterations |
| The fixed number of iterations for the stop criterion. | |
| double | m_forceScalingFactor |
| The scaling factor for the forces. | |
| bool | m_coolTemperature |
| The option for how to scale forces. | |
| double | m_coolValue |
| The value by which forces are decreased. | |
| InitialPlacementForces | m_initialPlacementForces |
| The option for how the initial placement is done. | |
| bool | m_resizeDrawing |
| The option for resizing the drawing. | |
| double | m_resizingScalar |
| Parameter for resizing the drawing. | |
| int | m_fineTuningIterations |
| The number of iterations for fine tuning. | |
| double | m_fineTuneScalar |
| Parameter for scaling forces during fine tuning. | |
| bool | m_adjustPostRepStrengthDynamically |
| The option adjustPostRepStrengthDynamically. | |
| double | m_postSpringStrength |
| The strength of springs during postprocessing. | |
| double | m_postStrengthOfRepForces |
| The strength of repulsive forces during postprocessing. | |
| int | m_frGridQuotient |
| The grid quotient. | |
| ReducedTreeConstruction | m_NMTreeConstruction |
| The option for how to construct reduced bucket quadtree. | |
| SmallestCellFinding | m_NMSmallCell |
| The option for how to calculate smallest quadtratic cells. | |
| int | m_NMParticlesInLeaves |
| The maximal number of particles in a leaf. | |
| int | m_NMPrecision |
| The precision for multipole expansions. | |
| double | max_integer_position |
| The maximum value for an integer position. | |
| double | cool_factor |
| Needed for scaling the forces if coolTemperature is true. | |
| double | average_ideal_edgelength |
| Measured from center to center. | |
| double | boxlength |
| Holds the length of the quadratic comput. box. | |
| int | number_of_components |
| The number of components of the graph. | |
| DPoint | down_left_corner |
| Holds down left corner of the comput. box. | |
| NodeArray< double > | radius |
| Holds the radius of the surrounding circle for each node. | |
| double | time_total |
| The runtime (=CPU-time) of the algorithm in seconds. | |
| FruchtermanReingold | FR |
| Class for repulsive force calculation (Fruchterman, Reingold). | |
| NMM | NM |
| Class for repulsive force calculation. | |
The class FMMMLayout implements a force-directed graph drawing method suited also for very large graphs. It is based on a combination of an efficient multilevel scheme and a strategy for approximating the repusive forcesin the system by rapidly evaluating potential fields.
The implementation is based on the following publication:
Stefan Hachul, Michael Jünger: Drawing Large Graphs with a Potential-Field-Based Multilevel Algorithm. 12th International Symposium on Graph Drawing 1998, New York (GD '04), LNCS 3383, pp. 285-295, 2004.
The following options are the most important. You can set useHighLevelOptions to true and just need to asjust a few parameters. However, you can also adjust all parameters that the implementation uses (see below), but this requires good knowledge of the algorithm.
| Option | Type | Default | Description |
|---|---|---|---|
| useHighLevelOptions | bool | false | Wether high-level options are used or not. |
| pageFormat | PageFormatType | pfSquare | The desired apsect ratio of the layout. |
| unitEdgeLength | double | 100.0 | The unit edge length. |
| newInitialPlacement | bool | false | Specifies if initial placement of nodes is varied. |
| qualityVersusSpeed | QualityVsSpeed | qvsBeautifulAndFast | Indicates if the algorithm is tuned either for best quality or best speed. |
If you want to do more detailed fine-tuning, you can adjust all parameters used by the algorithm. Please refer to the paper cited above for better understanding of the algorithm.
| General | |||
|---|---|---|---|
| randSeed | int | 100 | The seed of the random number generator. |
| edgeLengthMeasurement | EdgeLengthMeasurement | elmBoundingCircle | Indicates how the length of an edge is measured. |
| allowedPositions | AllowedPositions | apInteger | Defines which positions for a node are allowed. |
| maxIntPosExponent | int | 40 | Defines the exponent used if allowedPositions == apExponent. |
| Divide et impera step | |||
| pageRatio | double | 1.0 | The desired page ratio. |
| stepsForRotatingComponents | int | 10 | The number of rotations per connected component. |
| tipOverCCs | TipOver | toNoGrowingRow | Specifies when it is allowed to tip over drawings. |
| minDistCC | double | 100 | The minimal distance between connected components. |
| presortCCs | PreSort | psDecreasingHeight | Defines if the connected components are sorted before the packing algorithm is applied. |
| Multilevel step | |||
| minGraphSize | int | 50 | Determines the number of nodes of a graph in the for which no more collapsing of galaxies is performed |
| galaxyChoice | GalaxyChoice | gcNonUniformProbLowerMass | Defines how sun nodes of galaxies are selected. |
| randomTries | int | 20 | Defines the number of tries to get a random node with minimal star mass. |
| maxIterChange | MaxIterChange | micLinearlyDecreasing | Defines how MaxIterations is changed in subsequent multilevels. |
| maxIterFactor | int | 10 | Defines the factor used for decrasing MaxIterations. |
| initialPlacementMult | InitialPlacementMult | ipmAdvanced | Defines how the initial placement is generated. |
| Force calculation step | |||
| forceModel | ForceModel | fmNew | The used force model. |
| springStrength | double | 1.0 | The strength of the springs. |
| repForcesStrength | double | 1.0 | The strength of the repulsive forces. |
| repulsiveForcesCalculation | RepulsiveForcesMethod | rfcNMM | Defines how to calculate repulsive forces. |
| stopCriterion | StopCriterion | scFixedIterationsOrThreshold | The stop criterion. |
| threshold | double | 0.01 | The threshold for the stop criterion. |
| fixedIterations | int | 30 | The fixed number of iterations for the stop criterion. |
| forceScalingFactor | double | 0.05 | The scaling factor for the forces. |
| coolTemperature | bool | false | Use coolValue for scaling forces. |
| coolValue | double | 0.99 | The value by which forces are decreased. |
| initialPlacementForces | InitialPlacementForces | ipfRandomRandIterNr | Defines how the initial placement is done. |
| Force calculation step | |||
| resizeDrawing | bool | true | Specifies if the resulting drawing is resized. |
| resizingScalar | double | 1 | Defines a parameter to scale the drawing if resizeDrawing is true. |
| fineTuningIterations | int | 20 | The number of iterations for fine tuning. |
| fineTuneScalar | double | 0.2 | Defines a parameter for scaling the forces in the fine-tuning iterations. |
| adjustPostRepStrengthDynamically | bool | true | If set to true, the strength of the repulsive force field is calculated. |
| postSpringStrength | double | 2.0 | The strength of the springs in the postprocessing step. |
| postStrengthOfRepForces | double | 0.01 | The strength of the repulsive forces in the postprocessing step. |
| Repulsive force approximation methods | |||
| frGridQuotient | int | 2 | The grid quotient. |
| nmTreeConstruction | ReducedTreeConstruction | rtcSubtreeBySubtree | Defines how the reduced bucket quadtree is constructed. |
| nmSmallCell | SmallestCellFinding | scfIteratively | Defines how the smallest quadratic cell that surrounds the particles of a node in the reduced bucket quadtree is calculated. |
| nmParticlesInLeaves | int | 25 | The maximal number of particles that are contained in a leaf of the reduced bucket quadtree. |
| nmPrecision | int | 4 | The precision p for the p-term multipole expansions. |
The running time of the algorithm is O(n log n + m) for graphs with n nodes and m edges. The required space is linear in the input size.
Definition at line 256 of file FMMMLayout.h.