Skip to content

Commit

Permalink
cli for wff parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
Dominik Rosch committed Dec 11, 2024
1 parent 2c00153 commit f14cd6a
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 11 deletions.
7 changes: 7 additions & 0 deletions kaminpar-cli/kaminpar_arguments.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,13 @@ CLI::Option_group *create_coarsening_options(CLI::App *app, Context &ctx) {
->description("Disables some approximations of sparsification algorithms.")
->default_val(false);

coarsening->add_option("--s-wff-tbr", ctx.sparsification.wff_target_burnt_ratio)
->description("Target burn ratio of the Weighted Forest Fire (WFF) score")
->default_val(5);
coarsening->add_option("--s-wff-pf", ctx.sparsification.wff_pf)
->description("The probability which parameterizes the geometrically distributed number of "
"neighbors to burn")
->default_val(.95);
coarsening
->add_option(
"--c-contraction-limit",
Expand Down
38 changes: 27 additions & 11 deletions kaminpar-shm/factories.cc
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,17 @@ std::unique_ptr<sparsification::Sampler> create_sampler(const Context &ctx) {
return std::make_unique<sparsification::RandomWithReplacementSampler<double>>(
std::make_unique<sparsification::NetworKitScoreAdapter<
sparsification::NetworKitWeightedForestFireScore,
double>>([](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(g, 0.95, 5);
double>>([&](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(
g, ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
);
})
);
case ScoreFunctionSection::WEIGHTED_FOREST_FIRE:
return std::make_unique<sparsification::RandomWithReplacementSampler<EdgeID>>(
std::make_unique<sparsification::WeightedForestFireScore>(0.95, 5)
std::make_unique<sparsification::WeightedForestFireScore>(
ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
)
);
case ScoreFunctionSection::EFFECTIVE_RESISTANCE:
return std::make_unique<sparsification::RandomWithReplacementSampler<double>>(
Expand All @@ -179,13 +183,17 @@ std::unique_ptr<sparsification::Sampler> create_sampler(const Context &ctx) {
return std::make_unique<sparsification::RandomWithoutReplacementSampler<double>>(
std::make_unique<sparsification::NetworKitScoreAdapter<
sparsification::NetworKitWeightedForestFireScore,
double>>([](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(g, 0.95, 5);
double>>([&](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(
g, ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
);
})
);
case ScoreFunctionSection::WEIGHTED_FOREST_FIRE:
return std::make_unique<sparsification::RandomWithoutReplacementSampler<EdgeID>>(
std::make_unique<sparsification::WeightedForestFireScore>(0.95, 5)
std::make_unique<sparsification::WeightedForestFireScore>(
ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
)
);
case ScoreFunctionSection::EFFECTIVE_RESISTANCE:
return std::make_unique<sparsification::RandomWithoutReplacementSampler<double>>(
Expand All @@ -211,14 +219,18 @@ std::unique_ptr<sparsification::Sampler> create_sampler(const Context &ctx) {
return std::make_unique<sparsification::IndependentRandomSampler<double>>(
std::make_unique<sparsification::NetworKitScoreAdapter<
sparsification::NetworKitWeightedForestFireScore,
double>>([](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(g, 0.95, 5);
double>>([&](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(
g, ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
);
}),
ctx.sparsification.no_approx
);
case ScoreFunctionSection::WEIGHTED_FOREST_FIRE:
return std::make_unique<sparsification::IndependentRandomSampler<EdgeID>>(
std::make_unique<sparsification::WeightedForestFireScore>(0.95, 5),
std::make_unique<sparsification::WeightedForestFireScore>(
ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
),
ctx.sparsification.no_approx
);
case ScoreFunctionSection::EFFECTIVE_RESISTANCE:
Expand Down Expand Up @@ -246,12 +258,16 @@ std::unique_ptr<sparsification::Sampler> create_sampler(const Context &ctx) {
std::make_unique<sparsification::NetworKitScoreAdapter<
sparsification::NetworKitWeightedForestFireScore,
double>>([](const NetworKit::Graph &g) {
return sparsification::NetworKitWeightedForestFireScore(g, 0.95, 5);
return sparsification::NetworKitWeightedForestFireScore(
g, ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
);
})
);
case ScoreFunctionSection::WEIGHTED_FOREST_FIRE:
return std::make_unique<sparsification::ThresholdSampler<EdgeID>>(
std::make_unique<sparsification::WeightedForestFireScore>(0.95, 5)
std::make_unique<sparsification::WeightedForestFireScore>(
ctx.sparsification.wff_pf, ctx.sparsification.wff_target_burnt_ratio
)
);
case ScoreFunctionSection::EFFECTIVE_RESISTANCE:
return std::make_unique<sparsification::ThresholdSampler<double>>(
Expand Down
3 changes: 3 additions & 0 deletions kaminpar-shm/kaminpar.h
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,9 @@ struct SparsificationContext {
float target_factor;

bool no_approx;

float wff_target_burnt_ratio;
float wff_pf;
};

//
Expand Down

0 comments on commit f14cd6a

Please sign in to comment.