如果在两个不同的n上运行我计算得出的算法O(n^2)
,而其他所有常数都不变,我是否可以通过比较执行时间来验证它是否为O(n^2)
?例如,n1 = 50
和n2 = 100
。由于n2
是n1
,所以time2
应该是(n2 - n1)^2
的{{1}}倍,对吗?还是只能通过图形进行验证?
答案 0 :(得分:3)
这取决于“验证”的含义。
如果您的意思是正式验证(即证明),那么:
不是,但是绘制或仅比较数字都可以使您确信它是O(n ^ 2)-如果您已经确定结果应该是什么,通常更容易证明某件事是正确的,并且这是真的。
您无法证明这一点的原因例如:
如果您使用“验证”来表示“实验性测试”,例如一个O(n ^ 2)算法实际上就是O(n ^ 2),那么,是的,您可以同时使用这两种方法。
答案 1 :(得分:0)
我可以通过比较执行时间来验证它是O(n ^ 2)吗?
否。
Time complexity
是纯粹的理论概念。您无法直接建立执行时间与时间复杂度之间的关系。
要验证算法是否为O(n ^ 2),应仅依赖于算法本身。