1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/* ========================================================================== */
/* === Include/Mongoose_EdgeCutOptions.hpp ================================== */
/* ========================================================================== */
/* -----------------------------------------------------------------------------
* Mongoose Graph Partitioning Library, Copyright (C) 2017-2023,
* Scott P. Kolodziej, Nuri S. Yeralan, Timothy A. Davis, William W. Hager
* Mongoose is licensed under Version 3 of the GNU General Public License.
* Mongoose is also available under other licenses; contact authors for details.
* SPDX-License-Identifier: GPL-3.0-only
* -------------------------------------------------------------------------- */
// #pragma once
#ifndef MONGOOSE_EDGECUTOPTIONS_HPP
#define MONGOOSE_EDGECUTOPTIONS_HPP
#include "Mongoose_Internal.hpp"
namespace Mongoose
{
struct EdgeCut_Options
{
Int random_seed;
/** Coarsening Options ***************************************************/
Int coarsen_limit;
MatchingStrategy matching_strategy;
bool do_community_matching;
double high_degree_threshold;
/** Guess Partitioning Options *******************************************/
InitialEdgeCutType initial_cut_type; /* The guess cut type to use */
/** Waterdance Options ***************************************************/
Int num_dances; /* The number of interplays between FM and QP
at any one coarsening level. */
/**** Fidducia-Mattheyes Options *****************************************/
bool use_FM; /* Flag governing the use of FM */
Int FM_search_depth; /* The # of non-positive gain move to make */
Int FM_consider_count; /* The # of heap entries to consider */
Int FM_max_num_refinements; /* Max # of times to run Fiduccia-Mattheyses */
/**** Quadratic Programming Options **************************************/
bool use_QP_gradproj; /* Flag governing the use of gradproj */
double gradproj_tolerance; /* Convergence tol for projected gradient */
Int gradproj_iteration_limit; /* Max # of iterations for gradproj */
/** Final Partition Target Metrics ***************************************/
double target_split; /* The desired split ratio (default 50/50) */
double soft_split_tolerance; /* The allowable soft split tolerance. */
/* Cuts within this tolerance are treated */
/* equally. */
/* Constructor & Destructor */
static EdgeCut_Options *create();
~EdgeCut_Options();
};
} // end namespace Mongoose
#endif
|