单纯形算法的复杂性


36

用于查找线性程序解的单纯形算法的上限是多少?

我将如何寻找这种情况的证据?似乎最坏的情况是是否必须访问每个顶点,所以它就是。但是实际上,对于更标准的问题,单纯形算法的运行速度明显快于此算法。O(2n)

如何使用这种方法解决问题的平均复杂度?

任何信息或参考,不胜感激!


5
请注意,正如mashca在回答中所说,我们实际上并没有“单纯形算法”。根据枢轴规则的选择,有很多不同的单纯形算法。
伊藤刚(Tsuyoshi Ito)2010年

2
维度为的多维数据集具有2 n个顶点,因此,如果(例如,Klee-Minty)多维数据集上的任何单纯形变体的上限为,则为2。但是,维n中存在具有2 n个小面的多面体,例如具有超过2 n个顶点的双环多面体,因此2 n并不是一般平方约束矩阵的单纯形法运行时间的直接上限。 。n2nn2n2n2n
Rahul Savani

Answers:


72

单纯形算法确实在最坏的情况下访问所有2n个顶点(Klee&Minty 1972),事实证明对于任何确定性枢轴规则都是如此。但是,在使用平滑分析的地标性论文中,Spielman和Teng(2001)证明,当对该算法的输入进行轻微随机扰动时,对于任何输入,单纯形算法的预期运行时间都是多项式-这基本上表示任何问题都有一个“附近”的问题,单纯形方法将有效解决这个问题,它几乎涵盖了您想解决的每个现实世界中的线性程序。之后,Kelner和Spielman(2006)介绍了 一种truley可以在任何输入上工作的多项式时间随机单纯形算法,甚至对于原始单纯形算法来说也很糟糕。




3

Papadimitriou&Steiglitz Combinatorial Optimization第8.6节很好地说明了为什么单纯形不是在多项式时间内运行,而不是为什么它是指数式,因此在8.6节中他们证明了单纯形不是多项式时间算法。


1

D=200

GLPK Simplex Optimizer, v4.65
200 rows, 200 columns, 20100 non-zeros
Preprocessing...
199 rows, 200 columns, 20099 non-zeros
Scaling...
 A: min|aij| =  1.000e+00  max|aij| =  1.607e+60  ratio =  1.607e+60
...
Constructing initial basis...
Size of triangular part is 199
*     0: obj =   0.000000000e+00 inf =   0.000e+00 (200)
*     1: obj = -6.223015278e+139 inf =   0.000e+00 (0)
OPTIMAL LP SOLUTION FOUND
Time used:   0.0 secs
Memory used: 3.4 Mb

任何人都可以建议其他方法来为单纯形方法构造困难的问题,缓慢但不受内存限制吗?

补充:拉丁方又名3D置换矩阵似乎有很多顶点-多少?
理论和实践在理论上比在实践上更接近。


-1

原始单纯形算法可以发散; 在某些情况下会循环。因此,没有一般的界限。其他答案为您提供了Simplex算法的各种修改的答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.