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 "boost_matrix.h"
00020 #include "munkres.h"
00021
00022 template <typename T>
00023 Matrix <T> convert_boost_matrix_to_munkres_matrix (const boost::numeric::ublas::matrix <T> & boost_matrix)
00024 {
00025 const int dimention = std::min (boost_matrix.size1 (), boost_matrix.size2 () );
00026 Matrix <T> matrix (dimention, dimention);
00027 for (int i = 0; i < dimention; ++i) {
00028 for (int j = 0; j < dimention; ++j) {
00029 matrix (i, j) = boost_matrix (i, j);
00030 }
00031 }
00032
00033 return matrix;
00034 };
00035
00036 template <typename T>
00037 void fill_boost_matrix_from_munkres_matrix (boost::numeric::ublas::matrix <T> & boost_matrix, const Matrix <T> & matrix)
00038 {
00039 const int dimention = std::min (boost_matrix.size1 (), boost_matrix.size2 () );
00040 for (int i = 0; i < dimention; ++i) {
00041 for (int j = 0; j < dimention; ++j) {
00042 boost_matrix (i, j) = matrix (i, j);
00043 }
00044 }
00045 };
00046
00047 void solve(boost::numeric::ublas::matrix <double> & boost_matrix)
00048 {
00049 Matrix <double> matrix = convert_boost_matrix_to_munkres_matrix<double>(boost_matrix);
00050 Munkres munkres;
00051 munkres.solve (matrix);
00052 fill_boost_matrix_from_munkres_matrix<double>(boost_matrix, matrix);
00053 };