谁知道MATLAB中函数quadprog的计算复杂度?

时间:2015-04-16 15:33:26

标签: matlab complexity-theory quadprog

QP问题是凸的。对于Wiki,问题可以在多项式时间内解决。 但究竟是什么命令?

1 个答案:

答案 0 :(得分:0)

这是一个有趣的问题(在我看来)没有明确的答案。我将假设您的问题是凸的,并且您对运行时复杂性感兴趣(与迭代复杂性相反)。

  • 您可能知道,QuadProg不是一种算法,而是解决二次问题的通用名称。它使用下面的一组算法。内点(默认),信任区域和活动集。 Source
  • 根据您的选择,每种算法都有自己的复杂性分析。对于Trust-Region和Active-Set方法,复杂性分析非常困难。实际上,Active-Set方法不是多项式的。存在一些反例,其中Active-Set方法采用指数式时间"时间"收敛(对于线性程序的单纯形法也是如此)。 Source
  • 现在,假设您选择了内点方法,答案仍然不是直截了当的,因为这些方法有各种风格。当Karmarkar首次提出这种方法时,它是第一个已知的求解线性规划的多项式算法,它的复杂度为O(n ^ 3.5)。 Source。这些界限在很晚以后得到了改善。但是,这适用于线性程序。
  • 最后,回答你的问题,Ye and Tse proved in 1989我们可以使用复杂度为O(n ^ 3)的内点法。然而,MATLAB是否使用这种内部点方法的确切风格是有点棘手的,但O(n ^ 3)将是我最好的猜测。

当然,我的答案是理论上的;如果你想凭经验测试它,可以通过逐渐增加变量数量并绘制估算所需的CPU时间来实现。