#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>::
            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>::
            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>::
            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 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 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 the partitioning based on the proposed node moves.
| Parameters | |
|---|---|
| move_info_v in | A vector of information about the proposed node moves. |