zoukankan      html  css  js  c++  java
  • 分圆问题:一个诡异的数列规律

    问题

    在圆上任取$n$个点,将每对点用直线连接起来,并规定任意三条线不能交于同一点,这些直线会将圆分割成多少份?

    首先我们列出简单情况来寻找规律:

    • 2个点将圆分成2份
    • 3个点将圆分成4份
    • 4个点将圆分成8份
    • 5个点将圆分成16份

    看来这个数列的规律非常明显:每增加一个点,分割的份数都将乘2。然而,当点数增加到6个的时候,分割的份数不是我们预料的32,而是31。

    为了找到这个数列的通项公式,我们使用欧拉示性数公式(Euler’s Characteristic Formula)来进行推导:

    $$V-E+F=2$$

    这个公式的意思是,在任何联通平面简单图中,顶点数减边数加上面数等于2。

    为了利用这个公式得到分割的份数(即为面数),我们需要先求出顶点和边的数量。

    首先求顶点数:圆内的每个交点都对应圆上的4个点交叉相连,因此圆内的交点共有$C_n^4$个,加上圆上的$n$个点,因此$V=n+C_n^4$。

    再求边数:圆内的那个交点的度数(度数是与点相连的边的个数)为4,圆上的点都与除此之外的每个点相连,因此度数是$n-1$,所以总度数为$4*C_n^4+n*(n-1)$,由于每条边对于总度数的贡献为2,再加上连接圆上顶点的弦的数目,最后得边的数量$E=2*C_n^4+C_n^2+n$。

    将结果带入欧拉公式,并考虑园外区域也算一个面,则分割的份数为:

    $$egin{aligned}
    F-1 &= E-V+2-1 \
    &= (2*C_n^4+C_n^2+n)-(n+C_n^4)+1 \
    &= C_n^4+C_n^2+1
    end{aligned}$$

    由排列组合公式,上式可以继续分解:

    $$C_n^4+C_n^2+1 = C_{n-1}^4+C_{n-1}^3+C_{n-1}^2+C_{n-1}^1+C_{n-1}^0$$

    这也就解释了当$n<6$时结果总是成2的幂。

    参考链接:

  • 相关阅读:
    CSS开发中常用技巧总结
    Linq的分组功能
    深入理解 C# 协变和逆变
    js数组删除数组元素!
    关于 Photoshop 蒙版和 Alpha 通道
    jQuery数组处理详解(含实例演示)
    多媒体指令(灰度像素最大值)
    多媒体指令(图像均值模糊)
    matlab练习程序(立体相关块匹配)
    matlab练习程序(steerable filters)
  • 原文地址:https://www.cnblogs.com/lfri/p/10329711.html
Copyright © 2011-2022 走看看