【问题标题】:runtime complexity Power(x.N)运行时复杂度 Power(x.N)
【发布时间】:2017-04-02 16:29:38
【问题描述】:

我试图找出下一个方程的上下边界(运行时复杂性):

0

我所知道的是,如果 c 等式中重要的部分是右边的部分,如果 c>0.5 -> 重要的部分是左边的部分。 我该如何进行?

【问题讨论】:

  • 既然0 < c <1 可以cn 也有十进制值,还是它位于1 < cn <n-1 中只有整数值?
  • 我不太确定这是否重要。关键是等式的一侧需要更长的时间才能达到最小值 - 而另一侧太短了,我们无法关心。我不确定我应该如何解决这个问题。

标签: time-complexity computer-science


【解决方案1】:

假设-

0 < c <0.5 , ?(?) = ?((1 − ?)?) + 1
0.5 <= c <1 , ?(?) = ?(??) + 1

你可以找到上下界如下-

对于下界-

我们必须选择c 的值,这样我们才能得到T(cn)T((1-c)n) 的最小值。

可以简单地检查为c=0.5,因为T(cn)T((1-c)n) 的值随着c 接近0.5 而减小。

因此,

T(n) = T(n/2) + 1
//which implies
T(n) = T(n/(2^k)) + k

现在,让n = 2^x

或者,x = log(n) 给我们

T(n) = T(1) +log(n)     //lower bound

对于上限 -

根据允许的值,可以有两个答案-

1)cn(1-c)n 在其函数中可以有十进制值-

现在可以选择c 的值,使cn(1-c)n 接近n 通过使用c 接近1 但略低(例如,c = 0.9999999999)@987654340 @ 和价值接近 0(1-c)n

在这种情况下,上限将是无穷大,因为函数将继续计算T(x),其中x 接近n

2)cn(1-c)n取底价 -

如果你不知道什么是底值,它是十进制数的截断值,其中小数部分被删除或 编码术语typecast float 到 @987654349 @。

现在,cn(1-c)n 的最大值可以为 n-1,因为 c 不能等于 zeroone

因此,

T(n) = T(n-1) + 1
T(n-1) = T(n-2) + 1

等等。

给出,

T(n) = T(0) + n

因此具有 O(n) 的时间复杂度。

3)cn(1-c)n取ceil值-

如果你不知道什么是 ceil 值,那么在编码术语中你 typecast floatinteger 并添加 1 到它。

现在,对于ccn(1-c)n 中分别接近10,它们的ceil 值是n

因此,

T(n) = T(n) + 1

它的复杂性是无限的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多