编辑寻找时间复杂性的良好介绍。
我一直在做很多Project Euler问题,而且我对性能有一些疑问。我可以编写一大堆脚本来测试不同的理论,这些理论比其他事情需要更长的时间,但我宁愿从专业人士那里阅读。作为业余爱好者,我可能甚至不知道要问的问题或要测试的理论。因此,我正在寻找一种资源,可以解释在Python中需要更长时间/使用更多CPU周期的事情。是否有一个好的地方去寻找“经验法则”这样的效率信息?
答案 0 :(得分:3)
不幸的是,没有这样的经验法则。在实际计算机上运行的实际程序的实际性能太复杂,无法用简单的规则捕获。
为了预测一段代码是否可行可以运行(这是Project Euler所需要的),复杂性理论 - “大哦符号” - 是首选工具。严格的分析,或者只是直觉,可以告诉你(以及为什么)某些程序对于大小为n的输入至少需要2 ^ n步。知道了n的数量级,就可以很容易地得出结论,该程序不能足够快地完成。
但是这个数学工具对实际运行时间几乎一无所知:采用O(n)时间的算法可能比采用O(log n)时间的算法快得多。另外,虽然有一些估算复杂性的规则(“嵌套循环=二次”,这也是许多有用程序的常见规则),但是无论如何都需要一个直觉,一旦你有了这个,所有这些经验法则都已过时。