You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

满足双重约束条件的函数计数问题求解

满足双重约束条件的函数计数问题求解

嗨,我来帮你拆解这个函数计数问题的解法:

问题重述

给定正整数 $n \in \mathbb{N}^*$,我们需要计算满足以下两个约束条件的函数 $f:{1,2,\dots,n} \to {0,1,\dots,n-1}$ 的总数:

  1. 对任意 $k \in {1,2,\dots,n}$,都有 $f(k) \leq k-1$;
  2. 不存在三个下标 $p<q<r$,使得 $f(p)<f(q)<f(r)$(即函数值序列中没有长度为3的严格递增子序列)。

小实例手动验证

我先手动计算了几个小n值的情况,结果如下:

  • 当 $n=1$ 时:只有1个有效函数,因为 $f(1)$ 只能等于0(必须满足 $f(1) \leq 0$);
  • 当 $n=2$ 时:共有2个有效函数,分别是 ${(1,0),(2,0)}$ 和 ${(1,0),(2,1)}$;
  • 当 $n=3$ 时:数出了5个符合条件的函数。

规律推导与结论

从这几个结果可以看出,这个计数序列和卡特兰数完全匹配(卡特兰数的前几项为:1, 2, 5, 14, 42...)。我们可以从约束条件来解释这个对应关系:

第一个条件 $f(k) \leq k-1$ 限定了每个位置k的函数值范围;第二个条件要求函数值序列中没有长度为3的严格递增子序列,根据Erdős–Szekeres定理,这样的序列可以分解为至多2个递减子序列的并集。

进一步用递推思路验证:假设n对应的函数数量为 $C_n$,那么递推关系恰好是卡特兰数的经典递推公式:
$$C_{n+1} = \sum_{i=0}^n C_i C_{n-i}$$
初始条件为 $C_1=1$,结合我们手动计算的前几项,完全吻合。

所以最终结论是:满足给定双重约束的函数数量等于第n个卡特兰数。

备注:内容来源于stack exchange,提问作者Math_fun2006

火山引擎 最新活动