Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 队列大小增加的时间复杂性_Algorithm_Big O - Fatal编程技术网

Algorithm 队列大小增加的时间复杂性

Algorithm 队列大小增加的时间复杂性,algorithm,big-o,Algorithm,Big O,在过去的半个小时左右,我搜索了谷歌和StackOverflow,虽然我找到了很多有趣的信息,但我还没有找到解决问题的方法。我认为这应该是相当简单的回答;我只是不知道怎么回答 我在一个程序中使用以下循环(显然,这是我算法的伪代码): 在此循环中: Q是一个队列 x是包含整数数组s的对象 N是表示问题大小的整数 y是与x相同类型对象的新实例 Combine是一个返回与x相同类型的新对象的方法 Combine只包含For循环,因此它的最坏情况时间复杂度为O(N) 我的问题是我应该如何计算这个循

在过去的半个小时左右,我搜索了谷歌和StackOverflow,虽然我找到了很多有趣的信息,但我还没有找到解决问题的方法。我认为这应该是相当简单的回答;我只是不知道怎么回答

我在一个程序中使用以下循环(显然,这是我算法的伪代码):

在此循环中:

  • Q是一个队列
  • x是包含整数数组s的对象
  • N是表示问题大小的整数
  • y是与x相同类型对象的新实例
  • Combine是一个返回与x相同类型的新对象的方法
    • Combine只包含For循环,因此它的最坏情况时间复杂度为O(N)
我的问题是我应该如何计算这个循环的时间复杂度。因为我可能会在每个循环的队列中添加N-1项,所以我假设这将增加复杂性,而不仅仅是普通循环中的简单O(N)


如果您需要更多信息来帮助我,请告诉我,我会在可能的情况下为您提供所需信息。

您需要问自己的问题是“总共可以向队列添加多少项目?”通常在像这样的广度优先搜索算法中,在单个循环迭代中添加的子项的潜在数量不是项目总数的可靠指标。一旦你建立了物品数量,你需要分析处理单个物品的成本(这里,成本是联合成本,你说是O(N))。在周末的大部分时间里,我都在碰壁,我找了几个其他人帮我看,我们最终决定你可以加N!将项目添加到队列中。上面我忘了提到的一个细节是整数数组s的长度为N。从一开始,这可能是一个很好的信息,但我没有想清楚。谢谢你的帮助!
while Q is not empty
    x = Q.dequeue()
    for(i = 1 to N)
        if x.s[i] = 0
            y = Combine(x, i)
            Q.add(G[y])