void HungarianAlgorithm::solve(Mat CostMatrix_In,Mat& Assignment_Out){ this->CostMatrix = CostMatrix_In.clone() ; // The algorithm consists of 8 steps bool done = false ; int step = 0; while(!done){ switch(step){ case 0: step_zero(&step); break ; case 1: step_one(&step); break ; case 2: step_two(&step); break; case 3: step_three(&step); break ; case 4: step_four(&step); break; case 5: step_five(&step); Assignment_Out = this->AssignmentMatrix ; done = true ; break; } } }
void resume() { // Before we resume, we need to update our states! this_core::updateRoundingMode(); std::feclearexcept(FE_ALL_EXCEPT); auto core = cpu::this_core::state(); while (core->nia != cpu::CALLBACK_ADDR) { this_core::checkInterrupts(); core = step_one(this_core::state()); } }