Algorithm 概率租用-辅助

Algorithm 概率租用-辅助,algorithm,combinations,permutation,probability,Algorithm,Combinations,Permutation,Probability,这是一个解决雇佣助理问题的算法 HIRE-ASSISTANT(n) best <- 0 for i <- 1 to n do if candidate[i] is better than candidate[best] best <- i hire candidate i 招聘助理(n) 最佳雇佣至少两次的概率是(n-1)/n。 假设你有一个随机排列的候选人,你只雇用一个候选人,当且仅当第一个候选人也是最好的。它发生的概率是

这是一个解决雇佣助理问题的算法

HIRE-ASSISTANT(n)
best <- 0
for i <- 1 to n do
      if candidate[i] is better than candidate[best]
          best <- i
          hire candidate i
招聘助理(n)
最佳雇佣至少两次的概率是
(n-1)/n

假设你有一个随机排列的候选人,你只雇用一个候选人,当且仅当第一个候选人也是最好的。它发生的概率是
1/n
。因此,这种情况不会发生的概率(并且您将雇佣两次或更多)是
1-1/n=(n-1)/n

要雇用两次:

  • 为“最佳”选择一个位置(不是第一个):
    n-1
    可能性。让这个地方成为我
  • 对于每一个这样的位置,选择i-1候选人排在最佳候选人之前:
    choose(n-1,i-1)
  • 这些i-1候选人中的第一个是最好的。需要替换其余的:
    (i-2)
  • 此外,还需要为(n-i-1)个“最佳”后的候选人进行排列:(n-i-1)
这为我们提供了“有效”排列的总数,其中恰好有两名候选人被雇佣:

f(n) = Sum[ Choose(n-1,i-1)*(i-2)!*(n-i-1)! | for i=2,...,n]

概率就是p=f(n)/n

事实上,在第四个项目中,我们需要排列(n-i)个候选人,以便最终答案减少到p=1/n*H(n-1),其中H(n-1)是(n-1)次谐波数。

雇佣两次的概率是多少?
恰好两次或至少两次?这个问题似乎离题了,因为这是一个概率问题,不是编程。我想这个答案有一个小错误,但我的编辑被拒绝了:剩下的候选项是
(n-I)
,而不是
(n-I-1)
很多。