我们如何计算随机选择的函数严格增加的概率?

机器算法验证 可能性 数理统计
2022-04-20 19:29:56

考虑所有函数的集合{1,2,...,m}{1,2,...,n}, 在哪里n>m. 如果从这个集合中随机选择一个函数,它严格增加的概率是多少?

2个回答

让我们挑选m元素来自{1,,n},让我们称这些为a1<a2<,am. 显然,这些定义了一个严格的递增函数f{1,,m}{1,,n}通过规则f(i)=ai. 此外,在上述集合上定义的任何严格递增函数都是这种形式。

因此正好有(nm)严格递增函数。另一方面,总共有nm这两个集合之间的函数映射。假设“随机”的 OP 意味着对nm上面的函数,那么选择严格递增函数的概率为:

(nm)nm

例如,对于n>>m,斯特林近似的应用,表明 RHS 是1m!.

S(n,m)是子数组的数量1k1<k2<<kmn包含m整数值增加并由值 1 和n. 这个二元函数对所有整数都有很好的定义1mn,给出值的三角数组用一个简单的组合论证我们可以建立以下定义这个二元函数的递归方程:

S(n+1,m)=S(n,m)+S(n,m1)S(n,1)=n.

求解这个递归方程可以得到明确的公式:

S(n,m)=(nm)=n!m!(nm)!.

(还有其他的组合参数也可以引导您得出这个结果。例如,选择递增函数等同于选择m共域中的值,然后按升序排列。)现在,为了得到结果,我们需要明确如何选择该域和共域上的“随机函数”。最简单的规范是说每个可能的映射以相等的概率被选择,这意味着有nm等概率函数。因此,感兴趣的概率是:

P(Increasing Function)=n!m!(nm)!nm.

对大的采用一阶斯特林近似nP(Increasing Function)1/m!,这是一个非常粗略的估计,适用于n大大大于m. 所以基本上,我们看到,一旦这个问题的共域很大,随机得到一个递增序列的概率就很小;这符合直觉。


如果m=1那么我们在映射中只有一个值,并且每个映射到任何n地方给出了一个增加的地图。因此我们有S(n,1)=n对所有人nN. 此外,子数组的数量S(n+1,m)包括值出现在第一个的所有子数组n地方(有S(n,m)其中)以及最后一个值出现在最后一个位置并且其余值出现在此之前的所有子数组(有S(n,m1)这些)。