假设您有两种算法(A1和A2)
A1 = Omega(n)
A2 = O(n^2)
这些算法确定数字n是否是素数。 你应该选择哪一个?为什么?
并且当使用A1和A2对大量运行测试时,注意到运行时间没有差异。这怎么可能?
答案 0 :(得分:2)
这些算法确定数字n是素数还是 不。你应该选择哪一个?为什么?
由于多种原因,所提供的算法规范不够丰富。
O(n ^ 2)和Omega(n)没有足够的信息来选择哪个具有更好的渐近复杂度。例如,您可以在Theta(n)
中运行A1,在Theta(n^2)
中运行A2,并且A1将渐近地优于A2。另一方面,您可以在Theta(n^3)
中运行A1,在Theta(log^3(n))
(which is the best known algorithm for testing primality of a number)中运行A2。取决于哪些是真正的复杂性 - 答案会有所不同
此外,如果预期的输入是n
的小值,我们对预期输入一无所知 - 大O符号(和大欧米茄)的信息量不大,因为它们只处理大价值。
然而,第二个确实给你一些上限,而第一个没有,所以这是一个奖金。虽然仍然不足以准确地说出哪个更好。