2

What is complexity of simplex algorithm for binary integer programming problem? For worst case or average case?

I'm solving assignment problem.

References:

https://en.wikipedia.org/wiki/Integer_programming

https://en.wikipedia.org/wiki/Simplex_algorithm

mmswe
  • 707
  • 2
  • 8
  • 20
  • It's not directly applicable, unless you assume that all the necessary constraints are present. – harold Dec 05 '15 at 23:08

2 Answers2

4

Since it's for the assignment problem, that changes matters. In that case, as the wiki page notes, the constraint matrix is totally unimodular, which is exactly what you need to make your problem an instance of normal linear programming as well (that is, you can drop the integrality constraint, and the result will still be integral).

So, it can be solved in polynomial time. The Simplex algorithm doesn't guarantee that however.

Of course there are also other polynomial time algorithms to solve the assignment problem.

harold
  • 61,398
  • 6
  • 86
  • 164
2

In a general sense, binary integer programming is one of Karp's 21 NP-complete problems, so assuming P!=NP it's safe to say that Simplex's worst-case running time is lower-bounded by Ω(poly(n)). Again, in general, similar to SAT solvers, the "average" case is going to be heavily dependent upon what you're taking the average across. Until you've got more specific information about the class of problems you're trying to solve with simplex, I don't think there is a good answer.

I'll do some more thinking and update when I have more information.

kestrel
  • 1,314
  • 10
  • 31
  • Just before you posted this, I've added the problem I'm solving. So constraints, value ranges(just 0, 1) are clear. – mmswe Dec 05 '15 at 23:11
  • @mmswe Take a look at the Hungarian algorithm, which I believe is optimal for the assignment problem. That will give you a better lower bound on the upper bound. I'll update the answer more generally though. – kestrel Dec 05 '15 at 23:13
  • How much better? Currently it takes 10 hours to solve a problem with matrix size 1000x1000. – mmswe Dec 05 '15 at 23:14
  • 10 hours?!? Yikes. Hungarian is O(N^3), shouldn't take more than a couple of minutes on the outside for a 1000-node bipartite graph. – kestrel Dec 05 '15 at 23:16
  • If you want to use the Hungarian algorithm, the [wikipedia page](https://en.wikipedia.org/wiki/Hungarian_algorithm) probably isn't a great place to start. If you're willing to use some C++ code, then take a look at [this c++ implementation](https://code.google.com/p/hungarian-cpp/) for a place to start. – kestrel Dec 05 '15 at 23:18
  • @mmswe maybe try Gurobi or CPLEX if you want to keep using linear programming – harold Dec 05 '15 at 23:20
  • @harold Are you familiar with OpenSolver? Why would it take so much time? Any ideas for optimization? – mmswe Dec 05 '15 at 23:33
  • @mmswe the various LP solvers have huge differences in performance, I'm not really sure where OpenSolver ranks but Gurobi beats just about anything else and in general the commercial solvers beat the open source solvers almost always. – harold Dec 05 '15 at 23:38