Answers:
尽管有定义明确的例程可以计算绘制了所有对角线的正则n边形中的区域数,但它们非常麻烦。我认为采用图像处理方法可能会很有趣:如果我们绘制带有对角线的n边形,是否有可能从绘制的图像中计算出区域(更准确地说,是从图像的光栅化和二值化表示为数组)?
以下生成并处理多边形的实际图像,并根据光栅化图像确定区域数。
Table[MorphologicalEulerNumber@Binarize@Rasterize@CompleteGraph[k, ImageSize->1200,EdgeStyle->Thickness[Large]],{k,3,14}]
{1、3、11、24、50、80、154、220、375、444、781、952}
这就是所谓的工程师解决方案。它可以完成工作,但只能在某些有限条件下完成。(而且很慢:上面的代码花了4.24 s来运行。)上面的例程可以正常工作,直到并包括一个14-Complete图,如下所示。我发现这令人惊讶,因为即使以1200 x 1200像素显示图像,也很难看到952个区域。
下图是光栅化和二值化之前的图像。
实现@mob注释中Woflram Mathworld链接上给出的公式。
=A1*(A1^3-6*A1^2+23*A1-42)/24+1+(MOD(A1,2)=0)*(A1*(42*A1-5*A1^2-40)/48-1)-(MOD(A1,4)=0)*3*A1/4+(MOD(A1,6)=0)*A1*(310-53*A1)/12+(MOD(A1,12)=0)*49/2*A1+(MOD(A1,18)=0)*32*A1+(MOD(A1,24)=0)*19*A1-(MOD(A1,30)=0)*36*A1-(MOD(A1,42)=0)*50*A1-(MOD(A1,60)=0)*190*A1-(MOD(A1,84)=0)*78*A1-(MOD(A1,90)=0)*48*A1-(MOD(A1,120)=0)*78*A1-(MOD(A1,210)=0)*48*A1
为了清楚起见,不做广告:
=A1*(A1^3-6*A1^2+23*A1-42)/24+1
+(MOD(A1,2)=0) *(A1*(42*A1-5*A1^2-40)/48-1)
-(MOD(A1,4)=0) *3*A1/4
+(MOD(A1,6)=0) *A1*(310-53*A1)/12
+(MOD(A1,12)=0) *49/2*A1
+(MOD(A1,18)=0) *32*A1
+(MOD(A1,24)=0) *19*A1
-(MOD(A1,30)=0) *36*A1
-(MOD(A1,42)=0) *50*A1
-(MOD(A1,60)=0) *190*A1
-(MOD(A1,84)=0) *78*A1
-(MOD(A1,90)=0) *48*A1
-(MOD(A1,120)=0)*78*A1
-(MOD(A1,210)=0)*48*A1