I’ve stumbled on this algorithm recently and am having difficulty explaining it to myself. The algorithm solves the assignment problem in O(n4) (and apparently can be improved to O(n3)) but I can’t see why.
Intuitively I can see that the algorithm would tend to find good to optimal solutions but I can’t see a proof! All the proofs I have seen so far contain notation I am unfamiliar with. My question is: can anyone explain it rigorously but simply?
I understand already that the problem can be transferred to a matrix of values where exactly one value in each row and each column must be selected. The minimum value possible (from the selected elements) and the selection that produces that is what the algorithm computes. Obviously finding the selection also finds the minimum.
The part I’m struggling on, notation-wise, is here. The third paragraph down in the Settings section which begins ‘Let us call a function’…
The Wikipedia page you linked to has steps on how to do this algorithm by hand on a matrix. The python implementation also uses matrices. Sometimes the only way to understand an algorithm is to step through it by hand or in the interactive console.