Algorithm 如何获得无限循环算法的预期执行时间和最坏情况?
我对算法的预期执行时间和最坏情况下的执行时间有一个疑问,我认为这是一个简单的算法,但它包含一个无限循环,我不知道如何解释预期执行时间?。我总是可以用停止条件来确定到达算法的时间 这是我的例子(我只知道,超过n/2可以给出正确的答案):Algorithm 如何获得无限循环算法的预期执行时间和最坏情况?,algorithm,time-complexity,big-o,infinite-loop,execution-time,Algorithm,Time Complexity,Big O,Infinite Loop,Execution Time,我对算法的预期执行时间和最坏情况下的执行时间有一个疑问,我认为这是一个简单的算法,但它包含一个无限循环,我不知道如何解释预期执行时间?。我总是可以用停止条件来确定到达算法的时间 这是我的例子(我只知道,超过n/2可以给出正确的答案): 这似乎取决于最终决定是否属实的可能性。 所以在这种情况下,决策需要n个步骤。 这意味着运行时是O(n), 现在我们假设决策为真的概率为50%,这意味着在平均值上,每个循环需要2n步(求和(prob^x*n),x=0..无穷大,prob=0.5)。 即使O随决策概率
这似乎取决于最终决定是否属实的可能性。 所以在这种情况下,决策需要n个步骤。 这意味着运行时是O(n), 现在我们假设决策为真的概率为50%,这意味着在平均值上,每个循环需要2n步(求和(prob^x*n),x=0..无穷大,prob=0.5)。
即使O随决策概率增加,乘法仍然与“决策”为真的变化成线性关系,因此仍然为O(n)。预期执行时间为O(n) 概率
p>=1/2
,第一个i
将给出decision(i)==true
,因此循环将在调用decision
一次后终止
让q=1-p为未发生的概率。
然后,使用概率q*p
,第二个i
将给出decision(i)=true
,因此循环将在两次调用decision
后终止
类似地,使用概率q^2*p
,第三个i
将给出decision(i)=true
,因此循环将在调用decision
三次后终止,依此类推
通过求和,我们将调用decision
的预期次数计算为
1+q+q^2+q^3+…
。
我不清楚你在问什么。你想做出什么样的解释?让我感到困惑的一个原因是,你把这个贴上了“big-o”的标签,但在帖子中没有提到复杂性。更确切地说,帖子处理的是执行时间,这是一个非常实用的概念,而不是渐进缩放限制。决策是概率的吗?它返回真值的可能性有多大?是否有某些值是正确的?在当前表单中,您不能对预期的运行时说任何话。@Prune,您好,您好,请在文本中添加更多内容。我知道最坏的情况是指大(O)符号,但我对执行时间和渐近符号感到困惑,它们之间有什么关系?@Skam,是的,你是对的,但我不确定概率。我只知道,超过n/2可以给出正确的结果。随机是否意味着你是均匀随机抽样的?很容易精确求解:迭代次数E满足E=1+(1-p)E,因此E=1/p。@PaulHankin是的,这将是一个很好的答案!但我没有想到,因为我对这个问题的阅读不知何故建议我应该坚持基本原则。你从哪里得到的想法是,决策
的概率为1/2?OP没有说明决策
将返回true的条件。@JimMischel在评论中解释了“我只知道,超过n/2可以给出true”这句话。如果你有更好的词组(我敢打赌),请考虑把它编辑成问题。这不是我解释那个句子的方式。
while (true)
{
int i = random(0,n-1);
bool e = decision(i); //Θ(n)
if (e==true)
return i;
}