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