Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to determine simplex time complexity (ie Max flow)

Simplex algorithm is said to have exponential worst case time complexity. Yet it is still often used in practice. How can you determine the average time complexity for a certain problem (being solved with simplex).

For example, what is the average time complexity of the maximum flow problem being solved with simplex algorithm. (Wiki has time complexity for all other algorithms)

Thank you for your time.

like image 966
Ben Avatar asked Dec 27 '11 23:12

Ben


2 Answers

If it is still interesting. Time complexity of simplex is O((n+m)*n).

n - number of variables.

m - inequality constraints.

Why? Because the number of iterations could be no more than n + m in case of n which is an upper bound on the numbers of vertices .

But this upper bound is exponential in n.

like image 109
Aivaras Gončarovas Avatar answered Oct 08 '22 09:10

Aivaras Gončarovas


The average case complexity is rather difficult to analyze and it depends on the distribution of your linear program. I believe that it was worked out to be polynomial time under some common distributions. I currently cannot find the paper though.

EDIT: Yes, here are the sources:

Nocedal, J. and Wright, S. J. Numerical Optimization. New York: Springer-Verlag, 1999.

Forsgren, A.; Gill, P. E.; and Wright, M. H. "Interior Methods for Nonlinear Optimization." SIAM Rev. 44, 525-597, 2002.

I read it in the first book and apparently it was proven in a separate paper (Forsgren). You could find either in a university library.

like image 45
tskuzzy Avatar answered Oct 08 '22 09:10

tskuzzy