二次筛 - o(1)代表什么?

时间:2014-06-02 04:51:00

标签: c++ algorithm sieve

我正在尝试实现Quadratic Sieve,我注意到我需要选择一个平滑度B来使用这个算法。我在网上发现B也代表exp((1/2 + o(1))(log n log log n)^(1/2))但现在我的问题是o(1)。你能告诉我o(1)代表什么?

2 个答案:

答案 0 :(得分:6)

让我们从你的答案开始:

  

f(n)的定义是o(1)是limn→∞f(n)= 0。这意味着对于所有ε> 0,存在Nε,取决于ε,使得对于所有n≥Nε,我们具有| f(n)|≤ε。

或者用简单的英语:

  

符号o(1)表示“收敛于0的函数。”

这是一个很棒的资源:http://bigocheatsheet.com

查看渐近增长的符号部分

答案也可以在这个重复的帖子中找到:Difference between Big-O and Little-O Notation

f∈O(g)表示,基本上

  

对于至少一个选择的常数k&gt; 0,你可以找到一个常数a,使得不等式f(x)<0。 k g(x)适用于所有x>一个。

请注意,O(g)是此条件所适用的所有函数的集合。

f∈o(g)说,基本上是

  

对于每个选择的常数k&gt; 0,你可以找到一个常数a,使得不等式f(x)<0。 k g(x)适用于所有x>一个。

答案 1 :(得分:0)

O(1)表示它需要恒定的时间,不受输入大小的影响。 o(1)(略有不同!)表示它所代表的函数收敛于0。 我不会太担心平滑度,首先使用非常简单的平滑公式编写其他更复杂的算法。 (前100,000个素数,或者前n个素数,其中n = c * log(数字))一旦算法的其余部分正在工作(并且可能优化?),那么仔细选择平滑度实际上会产生显着影响。你在问题中提出的那个长期复杂的公式是二次筛分算法本身的近似(渐近)运行时间,我很确定它与选择平滑度无关。