Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "std_2d_array.h"
00020 #include "munkres.h"
00021
00022 template <typename T, const unsigned int dimention>
00023 Matrix <T> convert_std_2d_array_to_munkres_matrix (const std::array <std::array <T, dimention>, dimention> & array)
00024 {
00025 Matrix <T> matrix (dimention, dimention);
00026 for (int i = 0; i < dimention; ++i) {
00027 for (int j = 0; j < dimention; ++j) {
00028 matrix (i, j) = array [i][j];
00029 }
00030 }
00031
00032 return matrix;
00033 };
00034
00035 template <typename T, const unsigned int dimention>
00036 void fill_std_2d_array_from_munkres_matrix (std::array <std::array <T, dimention>, dimention> & array, const Matrix <T> & matrix)
00037 {
00038 for (int i = 0; i < dimention; ++i) {
00039 for (int j = 0; j < dimention; ++j) {
00040 array [i][j] = matrix (i, j);
00041 }
00042 }
00043 };
00044
00045 template <const unsigned int dimension>
00046 void solve(std::array <std::array <double, dimension>, dimension> &m)
00047 {
00048 auto matrix = convert_std_2d_array_to_munkres_matrix<double, dimension>(m);
00049 Munkres munkres;
00050 munkres.solve (matrix);
00051 fill_std_2d_array_from_munkres_matrix<double, dimension>(m, matrix);
00052 };