当前位置: 首页 > 知识库问答 >
问题:

内环依赖于外环的复杂性

史飞尘
2023-03-14

对于以下伪代码,我想先计算出作为输入大小n函数的操作数,然后再将其放入大O表示法中:

for i ← 1 to n do
    for j ← 3 to 3i+n do
        // operation 

到目前为止,我认为对于外循环的每个迭代n,内循环等于3i n-2操作。顺从的

n (3i + n - 2) = n^2 - 2n + 3ni

简化为O(n^2)。

但是我不确定我是否在正确的轨道上,因为我没有看到任何像这样的问题,即外循环的索引被用于内循环。

共有1个答案

燕刚捷
2023-03-14

正确,它在O(n^2)中。更重要的是,它位于θ(n^2)中。

唯一重要的是执行操作的频率。循环本身的计算,比如指数都在θ(1)中,所以我们可以忽略它们。

因此,计算执行//操作的频率。正如你所说,这是n*(3i n-2)

但是,i会发生变化。所以你实际上需要完全写出来:

简化这一点:

这显然是在θ(n^2)中。

你可以用形式化的定义很容易地证明这一点。因此,让我们调用函数f。我们有

所以它在O(n^2)中。我们有

产生Omega(n^2)。在Theta(n^2)中,这意味着f。

我随机选择了常数。你可以把它弄得更紧,但你只需要找到一个能装得下的,所以没关系。

当然,我们也可以使用极限定义轻松展示:

这是<代码>

结果表如下所示

对于限制,我们使用了L'Hôpital的规则(见维基百科),其中非正式地说:

f/g的限制与f'/g'的限制相同,假设该限制甚至存在。

分析假设//操作θ(1)中,否则显然也需要考虑其复杂性。

 类似资料:
  • 我有一个嵌套的for循环: 如何找到这个循环的时间复杂度。 我在考虑外部循环,它从0运行到n^2(独占),所以它运行n^2 1次。 对于内部循环,它取决于i,这就是我迷失的地方。有什么指示吗?

  • 这是一个正常的嵌套循环,具有复杂性 我很难理解为什么下一个循环也有复杂性,即使它打印的语句更少 有什么想法吗?

  • 如果我有下面的for循环: 我知道外环将迭代次,而内环将为每th从外环迭代一次。 因此,为了确定时间复杂度,我们有一些类似于 不确定如何继续并得到一个封闭形式的时间复杂度。

  • 我是分析时间复杂性的新手。有人能帮我解决以下算法的时间复杂度吗? 外部循环将运行日志(n)次。内部循环将运行多少次。我们如何用“n”来计算内环的频率,因为这里它取决于变量“i”,并将运行log(i)次。 有人能帮忙找出上面代码的时间复杂度吗。

  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!