RideDistributor  0.0.1
 All Classes Namespaces Files Functions Variables Typedefs Macros Pages
RLAPSolverHungarian.hpp
Go to the documentation of this file.
1 #ifndef RLAP_SOLVER_HUNGARIAN_H
2 #define RLAP_SOLVER_HUNGARIAN_H
3 
4 #include <vector>
5 #include "Tensor.hpp"
6 #include "RLAPSolver.hpp"
7 
14 public:
15  RLAPSolverHungarian(const Tensor<int>& mat, const int maxCost);
16  void solve(Tensor<unsigned>& assignments) override;
17 private:
18  struct Zero {
19  unsigned row;
20  unsigned col;
21  bool deleted;
22  };
23 
24  const unsigned rows, cols, size;
25  Tensor<int> costMat, rowMin, colMin;
26  std::vector<Zero> zeros;
27  bool solved;
28 
29  void reduceRowsAndCols(Tensor<unsigned>& zeroCountRows, Tensor<unsigned>& zeroCountCols);
30  unsigned coverZeros(Tensor<unsigned>& zeroCountRows, Tensor<unsigned>& zeroCountCols,
31  Tensor<bool>& rowLines, Tensor<bool>& colLines);
32  int recalculateCosts(const int minVal, Tensor<unsigned>& zeroCountRows,
33  Tensor<unsigned>& zeroCountCols, Tensor<bool>& rowLines, Tensor<bool>& colLines);
34  void assignMatching(Tensor<unsigned>& assignments, Tensor<unsigned>& zeroCountRows,
35  Tensor<unsigned>& zeroCountCols);
36 };
37 
38 #endif // RLAP_SOLVER_HUNGARIAN_H
Definition: RLAPSolver.hpp:11
void solve(Tensor< unsigned > &assignments) override
Definition: RLAPSolverHungarian.cpp:329
RLAPSolverHungarian(const Tensor< int > &mat, const int maxCost)
Definition: RLAPSolverHungarian.cpp:22
Definition: RLAPSolverHungarian.hpp:13