On Fri, Jul 10, 2020 at 4:03 PM Ali Saad-Eldin <asaadel1@jhu.edu> wrote:
Hi all,
Hi all,

I would like to add an approximate Linear Assignment Problem (aLAP) solver to scipy.optimize. The specific approximation algorithm I propose adding can be found here. Scipy.optimize currently houses an exact solver for LAP in linear_sum_assignment(), and I was thinking this could be added either as a new method within linear_sum_assignment(), or as its own function. 

The approximation algorithm has time complexity O(n2log(n)), compared to the algorithm implemented in linear_sum_assignment() with complexity ~O(n2.3 ), while guaranteeing a score >= 1/2 optimum (though in practice the scores appear to be much closer to optimum).   I've attached two plots demonstrating runtime and accuracy, running linear_sum_assignment() and aLAP on simulated, dense nxn cost_matrices with entries randomly selected from a uniform(0,100) distribution, for n sampled from [0, 3000]. Note that linear_sum_assignment() is essentially C/C++, while the aLAP implementation is native Python, so a cython implementation could make aLAP even faster. Additionally, an advantage to this algorithm is that it is parallelizable, which could cause a further speed up. 

Current version of the implementation can be found here, and proof of effectiveness here.

Hi Ali, thanks for proposing this! Just so this email doesn't go completely unanswered: this seems interesting. As you noticed, we're (more than a little) short on reviewer power, so this may be hard to do in parallel with your Quadratic Assignment Solver in https://github.com/scipy/scip/pull/11862.

Cheers,
Ralf