正N边型的完全图被分割成几个多边形?
这篇文章被分为四个部分
一、知识铺垫
二、在不允许对角线重合的情况下,N边形可以分为多少个多边形
三、正N边形可以分为多少个图形
四、附录(在附录进行总结)
一、知识铺垫
1.组合数公式(Combinatorial Number Formual)
这个公式用于示意在
2.欧拉示性数公式(Euler's Characteristic Formual)

其中
即
这个公式表示了三维几何体内各个元素的关系,亦表示了平面内各个元素的关系,这是由于你可以把一个平面图看作底面为平面的三维几何体的俯视图。

二、在不允许三个及以上的对角线相交于一点的情况下,N边形可以分为多少个多边形
这个问题很类似于分圆问题,感兴趣的小伙伴可以去看一看。
我们把这个问题简化一下,就引出以下两个问题:
1.N边形(非正)的完全图有多少条线(不包括边)?
2.N边形(非正)的完全图有多少个点(不包括顶点)?
3.第1问中所得得线被第2问中所得得点分为几段?
解决前两个问题还是很简单的。
两点连成一线,我们在
两线交于一点,但是并不是所有的线都交与N边形内,如下图

我们可以让每一个交点都对应一个四元数,即一组直线(两个直线)的每个端点为一元,四元即可对应一个交点,即在
Then, 来求边的数量。
每增加一个交点等价于增加两条边,每个交点由已知的直线构成,然后这两个直线又被分成四小份。
For Instance,


在我们的图像中,
根据欧拉示性数公式,有
展开一下,得到
由于我们只关注多边形以内的部分,我们在最后的结果上减去
三、正N边形可以分为多少个图形
由于正奇边形不会有三个及以上的连线交于同一点,如此,正奇边形的完全图便完解了。
正偶边形呢?

Generally Speaking, 正偶边形都会有若干条线交与同一点。
-----------------------------------------------------------------------------------------------
(这可真不是一个简易的解法 >_<)
-----------------------------------------------------------------------------------------------
Now, 思考另一个问题,如果
答案是


That's So Easy, 但又引出一个问题:正偶边形的特殊交点数目各几何?
我们现在把由大于等于
接着引出以下函数
通过统计得到:
正四边形
正六边形
正八边形
正十边形
正十二边形
正十四边形
现在令
我们自然而然地对
很明显,想要知道
为了讨论正偶边形,我们引入一个函数
对于正偶边形,均有
例如正十边形与正十四边形,他们有
对于这类仅有(除数为偶数)

我们对
当
那么对于仅有(除数为偶数)
现在令

将
(
我们可以猜测
将
解得
最终发现
于是可以得出与
用同样的方法便可以得出与
值得一提的是,在下面的文章中,也提到了
https://wenku.baidu.com/view/978b3eb1f111f18583d05abd.html
In Addition, 如果你对统计情有独钟的话,我认为上面的文章会帮助到你。
Luckily, 我从OEIS得到了一个公式来计算以计算正N边形构成点数目的计算公式:
由于公式太长,为了能让手机用户看到,我把他分成了七行。
可以用同样的方法得到
我有一个对这个命题十分美妙的证明,这里空白太小,写不下。[手动滑稽]
Okay, 根据欧拉示性数公式,我们最终得出
那么 ,正N边形完全图就被分为了
Interestingly, 即使在正偶边形中,总交点的个数也并不随着N的增大而严格单调增。
For Example, 正二十八边形内交点个数为
我最后准备了一片Python代码来计算它,如下
# Creating By KebRainy
def delta(m,n):
if n % m == 0:
return 1
return 0
def vertex(n):
return (n**4 - 6*n**3 + 11*n**2 + 18*n)/24 + (-5*n**3 + 45*n**2 - 70*n + 24)*delta(2,n)/24 - (3*n/2)*delta(4,n) + (-45*n**2 + 262*n)*delta(6,n)/6 + 42*n*delta(12,n) + 60*n*delta(18,n) + 35*n*delta(24,n) - 38*n*delta(30,n) - 82*n*delta(42,n) - 330*n*delta(60,n) - 144*n*delta(84,n) - 96*n*delta(90,n) - 144*n*delta(120,n) - 96*n*delta(210,n)
def face(n):
return (n**4 - 6*n**3 + 23*n**2 - 42*n + 48)/24 + delta(2, n)*(-5*n**3 + 42*n**2 - 40*n - 48)/48 - delta(4, n)*(3*n/4) + delta(6, n)*(-53*n**2 + 310*n)/12 + delta(12, n)*(49*n/2) + delta(18, n)*(32*n) + delta(24, n)*19*n - delta(30, n)*36*n - delta(42, n)*50*n - delta(60, n)*190*n - delta(84, n)*78*n - delta(90, n)*48*n - delta(120, n)*78*n - delta(210, n)*48*n
def edge(n):
return (2*n**4 - 12*n**3 + 34*n**2 - 24*n)/24 + delta(2, n)*(-5*n**3 + 44*n**2 - 60*n)/16 - delta(4, n)*(9*n/4) + delta(6, n)*(-143*n**2 + 834*n)/12 + delta(12, n)*(133*n/2) + delta(18, n)*(92*n) + delta(24, n)*54*n - delta(30, n)*74*n - delta(42, n)*132*n - delta(60, n)*520*n - delta(84, n)*222*n - delta(90, n)*146*n - delta(120, n)*222*n - delta(210, n)*146*n
n = int(input("请输入要解析的正N边形: N="))
print("正 %d 边形完全图点统计为: %d " % (n, vertex(n)))
print("正 %d 边形完全图面统计为: %d " % (n, face(n)))
print("正 %d 边形完全图棱统计为: %d " % (n, edge(n)))
四、附录
这个问题来源于:
正n边型的完全图被分割成几个多边形?www.zhihu.com参考资料:
http://www.bilibili.com/video/av19849697
http://oeis.org/A007678
http://oeis.org/A006561
http://oeis.org/A135565
https://wenku.baidu.com/view/978b3eb1f111f18583d05abd.html
At Last, 喜欢小雨可白的小伙伴可以点一下关注,よろしくお願い!
