最近考试的复杂性令人困惑

时间:2017-03-22 11:42:54

标签: algorithm time-complexity big-o complexity-theory

您认为以下信息是否属实?

If Θ(f(n)) = Θ(g(n)) AND g(n) > 0 everywhere THEN f(n)/g(n) ∈ Θ(1)

我们与我们的教授有点争论

4 个答案:

答案 0 :(得分:4)

f(n)=Θ(g(n))表示存在c,d,n0,使得对于n> cg(n)< = f(n)< = dg(n)。 N0。

然后,因为g(n)>对于n> 0,c <= f(n)/ g(n)&lt; = d。 N0。

所以f(n)/ g(n)=Θ(1)。

答案 1 :(得分:0)

划分函数f(n),g(n)与划分他们的Big-O不同。例如,让:

f(n) = n^3 + n^2 + n
g(n) = n^3

这样:

O(f(n)) = n^3
O(g(n)) = n^3

但:

f(n)/g(n) = 1 + 1/n + 1/n^2 != constant !!!

<强> [EDIT1]

但正如 kfx 所指出的那样,您要与复杂性进行比较,以便:

O(f(n)/g(n)) = O(1 + 1/n + 1/n^2) = O(1)

答案是肯定的。

但要注意复杂性理论并不是我的一杯茶,而且我对你的问题没有任何背景。

答案 2 :(得分:0)

使用Landau表示法https://en.wikipedia.org/wiki/Big_O_notation的定义,很容易得出结论,这是正确的,除法的界限必须小于无穷大但大于0。

它不必完全是1,但它必须是有限常数,即Θ(1)。

一个反例可能很好,如果语句不正确,应该很容易给出。一个积极严谨的证据可能需要从关于系列的石灰的定义出发,以证明形式和限制定义的等价性。

我使用这个定义并没有看到它被证明是错误的。我认为分歧可能在于Θ的确切定义,众所周知,人们通常会使用那些具有微小差异的,特别是大O.或者可能是一些棘手的案例。对于正面定义的函数和系列,我认为它不会失败。

答案 3 :(得分:0)

对于任何一对函数f, g,基本上有三个选项:第一个增长渐近更慢,我们写f=o(g)(注意我使用小o ),第一个增长渐近更快:f=ω(g)(再次,小欧米茄)或它们渐近紧密绑定:f=Θ(g)

f=o(g)的含义比大O更严格,因为它不允许f=Θ(g)为真; f=Θ(g)同时表示f=O(g)f=Ω(g),但o, Θω是独占的。

要确定f=o(g)是否足以评估n到无限f(n)/g(n)的限制,如果它是零,f=o(g)为真,如果它是无穷大{ {1}}为真,如果它是任何实数有限数,f=ω(g)就是你的答案。 这不是一个定义,而只是一种评估语句的方法。 (我在这里做的一个假设是f和g都是正数。)

特殊情况是,如果n goint到无穷大f=Θ(g)的限制是有限数,则意味着f(n)/1 = f(n)(基本上我们选择f(n)=Θ(1)的常数函数。)

现在我们遇到了您的问题:由于g隐含f=g(Θ),我们知道存在f=O(g)c>0n0适用于所有f(n) <= c*g(n)。因此,我们知道所有n>n0f(n)/g(n) <= (c*g(n))/g(n) = c。只有相反的不平等符号才能为n>n0做同样的事情。因此,我们得到Ω介于f(n)/g(n)c1之间的c2n0之间的Θ因为WITH S AS ( SELECT 'B' type, 1 number UNION SELECT 'B', 2 UNION SELECT 'B', 3 UNION SELECT 'B', 4 UNION SELECT 'B', 5 UNION SELECT 'A', 6 UNION SELECT 'A', 7 UNION SELECT 'B', 8 UNION SELECT 'B', 9 UNION SELECT 'B', 10 UNION SELECT 'C', 11 UNION SELECT 'A', 12 UNION SELECT 'B', 13 UNION SELECT 'B', 14 UNION SELECT 'B', 15 UNION SELECT 'B', 16 UNION SELECT 'B', 17 UNION SELECT 'A', 18 UNION SELECT 'C', 19 UNION SELECT 'B', 20 UNION SELECT 'B', 21 ) SELECT type, number, sequence = CASE WHEN type = 'B' THEN 'B' + CAST(DENSE_RANK() OVER (ORDER BY CASE WHEN type = 'B' THEN 0 ELSE 1 END, RN) AS VARCHAR(10)) END FROM ( SELECT *, RN = ROW_NUMBER() OVER (ORDER BY number) - ROW_NUMBER() OVER (PARTITION BY type ORDER BY number) FROM S ) AS T ORDER BY number; 的定义而被称为有限数。因为我们知道我们的新函数在那里,我们也知道它的极限是有限数,因此证明它确实是恒定的。

结论,我相信你是对的,我希望你的教授提供反例来推销这个陈述。如果某些事情没有意义,请随时在评论中提出更多问题,我会尝试澄清。