【趣味题目】n维切k刀

1. 引

之前做了一道题:

有一个大西瓜, 用水果刀平整地切, 总共切9刀, 最多能切成多少份, 最少能切成多少份?

最少很好求,就是 10 份呗。关键是最多是多少。

这个问题可以一般化为一个很经典的数学问题:

k 个超平面可以把 n 维空间最多分为多少部分?

我们定义 f ( n ,   k ) f(n,\ k) f(n, k) 表示该问题的解,首先我们会给出这个解的递推公式,然后给出其通项公式。

2. 递推公式

首先考虑平凡问题解:

  1. k 个点可以最多把一条直线分成几个部分?
    k + 1 k + 1 k+1

  2. 1 个超平面可以最多把 n 维空间分成几个部分?
    2 个

所以:
{ f ( n ,   1 ) = 2 f ( 1 ,   k ) = k + 1 \begin{cases} f(n,\ 1) = 2\\ f(1,\ k) = k + 1 \end{cases} {f(n, 1)=2f(1, k)=k+1

再考虑一般情况 f ( n ,   k ) f(n,\ k) f(n, k)。我们把它分成两个部分来看:

  1. 前面 k − 1 k - 1 k1 刀把空间分成了几份?

我们不知道,但是我们可以用 f ( n ,   k − 1 ) f(n,\ k - 1) f(n, k1) 来表示。

  1. k k k 刀给空间多划分了几份?

这个问题就比较关键了。为了方便理解,我们可以从最简单的二维世界开始讲。如果我们已经在平面上划了 k − 1 k - 1 k1 条线,现在划第 k k k 条线,且需要尽可能多的分割平面应该怎么做呢?

显然,稍加思考就会发现这是一个贪心问题,可以贪心的求解:只需要让新的一条线同之前所有的线都相交就可以了。原本的 k − 1 k - 1 k1 条线会把新的线分割成 k k k 个部分,然后新增出 k k k 个空间出来。

如下图所示,原本三条直线把空间分为 7 个部分,新增了一条线后,一下子多出来了 4 个空间。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T7v9SisW-1584633914640)(demo.png)]

同样的道理扩展到 n 维空间也是一样的。原本已经有了 f ( n ,   k − 1 ) f(n,\ k - 1) f(n, k1) 个部分,多了一个超平面后,原本的超平面把新的超平面分割为 f ( n − 1 ,   k − 1 ) f(n - 1,\ k - 1) f(n1, k1) 个部分,因此也会多处同样数量的子空间出来

综上所述,我们有:

{ f ( n ,   1 ) = 2 f ( 1 ,   k ) = k + 1 f ( n ,   k ) = f ( n ,   k − 1 ) + f ( n − 1 ,   k − 1 ) n ⩾ 2 \begin{cases} f(n,\ 1) = 2\\ f(1,\ k) = k + 1\\ f(n,\ k) = f(n,\ k - 1) + f(n - 1,\ k - 1) & n \geqslant 2 \end{cases} f(n, 1)=2f(1, k)=k+1f(n, k)=f(n, k1)+f(n1, k1)n2

3. 通项公式

通项公式的具体推导很复杂,具体可以见 这里

这里直接给出结论:

f ( n ,   k ) = ∑ i = 0 n C k i f(n,\ k) = \sum_{i = 0}^{n}\large C_k^i f(n, k)=i=0nCki

比如在三维空间里,9 个平面最多可以把空间分为:

C 9 0 + C 9 1 + C 9 2 + C 9 3 = 130 \large C_9^0 + C_9^1 + C_9^2 + C_9^3 = 130 C90+C91+C92+C93=130

即 130 个部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值