#include <ckpttn/FMConstrMgr.hpp>
template<typename Gnl>
FMConstrMgr class
Fiduccia-Mattheyses Partition Constraint Manager.
Template parameters | |
---|---|
Gnl |
Derived classes
-
template<typename Gnl>class FMBiConstrMgr
- Constraint Manager.
-
template<typename Gnl>class FMKWayConstrMgr
- Fiduccia-Mattheyses num_parts-Way Partition Constraint Manager.
Constructors, destructors, conversion operators
- FMConstrMgr(const Gnl& hyprgraph, double bal_tol) protected
- Constructs a new FMConstrMgr object with the given hypergraph and balance tolerance, using a default of 2 partitions.
- FMConstrMgr(const Gnl& hyprgraph, double bal_tol, std::uint8_t num_parts) protected
- Constructs a new FMConstrMgr object with the given hypergraph, balance tolerance, and number of partitions.
Public functions
- auto init(std::span<const std::uint8_t> part) -> void -> auto
- Initializes the FMConstrMgr with the given partition information.
-
auto check_legal(const MoveInfoV<node_
t>& move_info_v) -> LegalCheck -> auto - Check if the proposed move of the given nodes can be legally performed, and if so, whether it would improve the current partitioning.
-
auto check_constraints(const MoveInfoV<node_
t>& move_info_v) -> bool -> auto - Check if the proposed moves in the given vector of move information can be legally performed while satisfying the constraints.
-
auto update_move(const MoveInfoV<node_
t>& move_info_v) -> void -> auto - Update the partitioning based on the proposed node moves.
Protected types
- using node_t = typename Gnl::node_t
Protected variables
- std::vector<unsigned int> diff
- unsigned int lowerbound
- std::uint8_t num_parts
Function documentation
template<typename Gnl>
FMConstrMgr<Gnl>:: FMConstrMgr(const Gnl& hyprgraph,
double bal_tol) protected
Constructs a new FMConstrMgr object with the given hypergraph and balance tolerance, using a default of 2 partitions.
Parameters | |
---|---|
hyprgraph in | The hypergraph to use for the FMConstrMgr. |
bal_tol in | The balance tolerance to use for the FMConstrMgr. |
template<typename Gnl>
FMConstrMgr<Gnl>:: FMConstrMgr(const Gnl& hyprgraph,
double bal_tol,
std::uint8_t num_parts) protected
Constructs a new FMConstrMgr object with the given hypergraph, balance tolerance, and number of partitions.
Parameters | |
---|---|
hyprgraph in | The hypergraph to use for the FMConstrMgr. |
bal_tol in | The balance tolerance to use for the FMConstrMgr. |
num_parts in | The number of partitions to use for the FMConstrMgr. |
template<typename Gnl>
auto FMConstrMgr<Gnl>:: init(std::span<const std::uint8_t> part) -> void
Initializes the FMConstrMgr with the given partition information.
Parameters | |
---|---|
part in | The partition information to initialize the FMConstrMgr with. |
template<typename Gnl>
auto FMConstrMgr<Gnl>:: check_legal(const MoveInfoV<node_ t>& move_info_v) -> LegalCheck
Check if the proposed move of the given nodes can be legally performed, and if so, whether it would improve the current partitioning.
Parameters | |
---|---|
move_info_v in | A vector of information about the proposed node moves. |
Returns | LegalCheck Indicates whether the move is not satisfied, would get better, or is fully satisfied. |
template<typename Gnl>
auto FMConstrMgr<Gnl>:: check_constraints(const MoveInfoV<node_ t>& move_info_v) -> bool
Check if the proposed moves in the given vector of move information can be legally performed while satisfying the constraints.
Parameters | |
---|---|
move_info_v in | A vector of information about the proposed node moves. |
Returns | true If the proposed moves can be legally performed while satisfying the constraints. |
template<typename Gnl>
auto FMConstrMgr<Gnl>:: update_move(const MoveInfoV<node_ t>& move_info_v) -> void
Update the partitioning based on the proposed node moves.
Parameters | |
---|---|
move_info_v in | A vector of information about the proposed node moves. |