15template <
typename Node>
struct MoveInfo;
36 unsigned int total_weight{0};
38 unsigned int weight{};
42 std::vector<unsigned int>
diff;
75 auto init(std::span<const std::uint8_t> part) -> void;
LegalCheck
Check if the move of v can satisfied, GetBetter, or NotSatisfied.
Definition FMConstrMgr.hpp:22
Fiduccia-Mattheyses Partition Constraint Manager.
Definition FMConstrMgr.hpp:29
auto final_check(std::span< const std::uint8_t > part) -> bool
Performs a final check on the partitioning based on the given partition information.
auto 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,...
auto update_move(const MoveInfoV< node_t > &move_info_v) -> void
Update the partitioning based on the proposed node moves.
std::vector< unsigned int > diff
Difference between current partition weight and target for each partition.
Definition FMConstrMgr.hpp:42
std::uint8_t num_parts
Number of partitions.
Definition FMConstrMgr.hpp:46
FMConstrMgr(const Gnl &hyprgraph, double bal_tol)
Constructs a new FMConstrMgr object with the given hypergraph and balance tolerance,...
Definition FMConstrMgr.hpp:57
FMConstrMgr(const Gnl &hyprgraph, double bal_tol, std::uint8_t num_parts)
Constructs a new FMConstrMgr object with the given hypergraph, balance tolerance, and number of parti...
typename Gnl::node_t node_t
Definition FMConstrMgr.hpp:48
auto 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 sa...
auto init(std::span< const std::uint8_t > part) -> void
Initializes the FMConstrMgr with the given partition information.
unsigned int lowerbound
Lower bound for partition weight (based on balance tolerance)
Definition FMConstrMgr.hpp:44
Move information for a single vertex (without net reference)
Definition moveinfo.hpp:37
Move information for a single vertex in a net.
Definition moveinfo.hpp:18