I'm trying to use max_cost_assignment.
1) Does this function take in a square matrix or any matrix?
2) What is the run time of this function?
When I run in debug mode, I get this error
DLIB_ASSERT(cost.nr() == cost.nc(),
"\t std::vector<long> max_cost_assignment(cost)"
<< "\n\t cost.nr(): " << cost.nr()
<< "\n\t cost.nc(): " << cost.nc()
When run in release mode, I don't get this error.
Is square matrix required as the input, if so, why doesn't it break in release?
thank you for your help!
It takes a square matrix and runs in O(N^3) time.
The assert statements are only enabled in debug mode because they slow down the code. They aren't so significant in this particular case but there are a lot of asserts in dlib and leaving them all on adds up to a big slowdown in many cases (e.g. some machine learning or image processing applications take a big hit).
Also, if you look at the documentation for this routine (reachable by clicking the "detailed documentation" link here http://dlib.net/optimization.html#max_cost_assignment) you can find the preconditions for this function which tell you what is required to call it. In this case, it's just that you have to give a square matrix full of integers.
P.S. Sorry for the very late reply. For some reason, I never received any notification email that you posted to the forums. I think this was when sourceforge was redoing their forum system. Who knows.
Log in to post a comment.