在学术界以外使用平滑分析吗?


24

平滑分析是否找到了进入算法主流分析的途径?对于算法设计人员来说,将平滑分析应用于其算法是否很常见?


11
人们是否在学术界以外的算法中应用了各种复杂性分析?
戴夫·克拉克

2
@DaveClarke说什么;也许他应该要求进行严格的(或非平凡的)分析。我希望许多从业者会研究他们的算法,计算循环嵌套深度,然后说:“这是!”。O(n3)
拉斐尔

3
在寻找除Simplex以外的任何平滑分析方法时,我发现了一个由发现该技术的人策划的清单
拉斐尔

1
@DaveClarke在IBM或HP或NTT工作的人怎么样?他们不应该使用这种分析吗?
Marcos Villagra'3

1
@DaveClarke我知道。
凯文

Answers:


12

我可能是错的,但是我认为平滑分析是解释理论上没有很好保证(简单,k均值等)的算法在实践中行为的一种方式。我不确定在实践中使用平滑分析会意味着什么,除了要证明使用具有最坏情况表现不佳的特定启发式算法是合理的(“我的启发式算法具有最坏的情况,但是平滑分析表明它将在实践中表现出色等等”)


2
问题在于,到目前为止,平滑分析的巨大成功在于解释了当前的实践,因此从业者可能只做出这样的回应:“很好,我所做的一切都可以证明是有意义的” :)。我不知道是否有人因为平滑分析而决定使用迄今为止鲜为人知的启发式方法。
Suresh'3

形式化的平滑分析非常困难,没有理论上的人没有理由过度实践它。另一方面,如果您将其视为一种用于分析算法的启发式方法(即输入是半随机的),则可能一直在使用它。
Yuval

3

人们在现实世界中分析算法的方式与学术界有很大不同。在学术界,目标是找到运行时间的可证明正确的上限,而在现实生活中,目标是了解算法的工作原理以及哪些调整可以改善运行时间。学术界禁止使用但主要在实践中使用的两种主要方法:

  • 近似方法。在这里,您使用许多简化的假设来尝试预测算法的运行时间。与理论物理学家(过去)所做的类似。
  • 实验。您运行算法并测量多个统计信息-每个部分花费了多少时间,每个函数被调用了多少次,每个分支运行了多少次,等等。此信息可用于优化算法。实验还用于找出在分析算法工作时是否完成了一些近似运算。

就是说,除了在相关的学术出版物中添加一些填充文本外,我认为在实践中分析算法不是很普遍。根据主题,重点是软件工程还是低级优化。

最后,平滑分析是一种启发式方法,可用于解释为什么算法在实践中比其最坏情况所建议的效果更好-即,由于某些输入在某种意义上是“随机的”。如果正在使用近似方法,则可以使用这种启发式方法来近似算法的行为。


“虽然在学术界的目标是要找到一个可证正确的运行时间上限” -这是一个目标,而不是目标。即使普通的CS学生可能看不到很多(因为这相对困难),但在平均案例分析方面也有很多工作要做。可以说,“了解算法的工作原理”是学术界所有算法学的基础。
拉斐尔
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.