【问题标题】:Analysing algorithm with big theta用大 theta 分析算法
【发布时间】:2019-03-02 21:52:51
【问题描述】:

我不得不说这三种算法的时间复杂度。 有没有人可以看看他们是否正确?

我也不确定如何找到 theta?

我知道 theta 是 big-O 和 Omega 的平均值。但我觉得在分析代码和用大 O 表示法编写代码时基本相同。

【问题讨论】:

  • 第一个和第三个是正确的。第二不是因为您的复杂性在n 中是线性的。

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


【解决方案1】:

第一个似乎正确的解释如下,Θ符号的定义如下

Θ(g(n)) = {f(n) : there exists c1,c2,n0 such that
                 0 <= c1*g(n) <= f(n) <= c2*g(n) given c1,c2,n0 > 0}

在第一个 sn-p 中,我们应该寻找 f(n)

f(n)= n/3 + n/5 = 8/15*n

如果我们假设 c1=0.5,c2=2,n0=15(因为可以被 3 和 5 整除),则求 g(n) 那么下面将是案例

when n=15, 0<=c1g(n)<=f(n)<=c2g(n)  =>  0<=c1g(n)<=1*8/15*15<=c2g(n)  =>  0<=0.5*g(n)<=8<=2*g(n)
when n=30 0<=0.5g(n)<=16<=2g(n)
when n=90 0<=0.5g(n)<=48<=2g(n) ...so on

when n=17 0<=0.5g(n)<=9<=2g(n)
when n=20 0<=0.5g(n)<=10<=2g(n)

因此 g(n) = n 似乎是合适的选择,因为我们可以证明 c1、c2 和 n0 的一种组合来证明定义是正确的,所以 g(n)=n 是可以接受的答案.

【讨论】:

    猜你喜欢
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多