}
return 4;
}
-
-/*
-int main()
-{
- Matrix3i C;
-// MatrixXi C2(4, 3);
-//
- C << 1, 2, 3,
- 2, 4, 2,
- 3, 6, 9;
-
- Matrix3i M;
- M << 0, 1, 2,
- 0, 0, 0,
- 1, 0, 0;
-
-// C2 << 4, 1, 3,
-// 2, 4, 2,
-// 3, 6, 9,
-// 2, 6, 3;
-
- Vector3i vv;
- //Matrix3i m1 = (M.array() == 1).select(0, MatrixXi::Ones(M.cols(), M.rows()));
- //cout << m1.colwise().sum().transpose() << endl;
- //vv = vv.rowwise()
-
- VectorXi row_ind, col_ind;
-
- //MatrixXi RR = MatrixXi::Random(10, 10);
- linear_sum_assignment(C, row_ind, col_ind);
- cout << "row: [" << row_ind.transpose() << "], col: [" << col_ind.transpose() << "]" << endl;
-}
-*/
using namespace std;
using namespace Eigen;
-TEST(Hungarian, Verify)
+TEST(Hungarian, 3x3)
{
Matrix3i C;
C << 1, 2, 3,
- 2, 4, 2,
+ 2, 4, 6,
3, 6, 9;
VectorXi row_ind, col_ind;
int ret = linear_sum_assignment(C, row_ind, col_ind);
+ cout << "row: [" << row_ind.transpose() << "], col: [" << col_ind.transpose() << "]" << endl;
Vector3i expect_row_ind, expect_col_ind;
expect_row_ind << 0, 1, 2;
+ expect_col_ind << 2, 1, 0;
+
+ EXPECT_EQ(ret, 10);
+ EXPECT_TRUE(expect_row_ind == row_ind);
+ EXPECT_TRUE(expect_col_ind == col_ind);
+}
+
+TEST(Hungarian, 4x3)
+{
+ MatrixXi C(4, 3);
+
+ C << 4, 1, 3,
+ 2, 4, 2,
+ 3, 6, 9,
+ 2, 6, 3;
+
+ VectorXi row_ind, col_ind;
+ int ret = linear_sum_assignment(C, row_ind, col_ind);
+ Vector3i expect_row_ind, expect_col_ind;
+
+ expect_row_ind << 0, 1, 3;
expect_col_ind << 1, 2, 0;
- EXPECT_EQ(ret, 7);
+ EXPECT_EQ(ret, 5);
EXPECT_TRUE(expect_row_ind == row_ind);
EXPECT_TRUE(expect_col_ind == col_ind);
}