在第k次迭代中执行的代码行的概率

时间:2013-09-10 11:05:31

标签: algorithm probability pseudocode

RANDOM MIN(A[1::n])

min = infinity

for i = 1 to n in random order

        if A[i] < min
            min = A[i] ---- (*)
return min

第k次迭代执行第*行的概率是多少?

我发现它是1 / n,除了第一次迭代。

原因是随机顺序生成n!可能的结果和第k次迭代A [第k个生成的结果]可以是n个中的任何一个。并且为了最小化,有n种可能性,因此1 / n。

一个例子:对于n = 3,k = 2
输入:(10,11,12)或3个

的任意组合
permutations    if A[2] < min
  123              N
  132              N
  213              Y
  231              N 
  312              Y//edited mislabeled it earlier
  321              Y

行执行的第二次迭代的概率与所有其他1 / n的概率相同,除了第一行是1,因为它始终保持

如果我错了,请告诉我,因为我的教授说它是1 / k,我对他的解释不满意!

2 个答案:

答案 0 :(得分:2)

你混淆了“最小值在哪里”和“线是否被执行”的问题。

最小值处于一个随机的位置,因此概率为1 / N,它位于一个特定的位置。

但要找到它,你需要执行该行,这种情况发生的概率越来越小:

  1. A [1]小于无穷大,概率为

  2. A [2]小于A [1],概率为1/2。

答案 1 :(得分:1)

Round 1: 1 in 1 chance it is the smallest so far
Round 2: 1 in 2 chance it is the smallest so far
Round 3: 1 in 3 chance it is the smallest so far
Round 4: 1 in 4 chance it is the smallest so far
...
...
Round k: 1 in K chance it is the smallest so far