Math 通过在N个顺时针点上形成三角形来计算配置的总数

Math 通过在N个顺时针点上形成三角形来计算配置的总数,math,geometry,combinations,Math,Geometry,Combinations,在顺时针方向的圆圈中,有编号为1到N的N个固定点。 我们希望通过选择任意三个点来创建三角形 我们可以创建尽可能多的三角形,但没有两个三角形应该相互交叉,一个点只能共享一个三角形。所以有多少这样的配置是可能的? 例如,假设有10点: 点1、2、3可以创建一个三角形,如果只存在该三角形,则它将是一个配置 只有三角形(2,3,4)是其他配置 三角形(1,2,3)和(4,5,6)将形成其他配置 (2,4,5)也可以是三角形 (2,4,5)和(1,3,6)不能是一个配置,因为两个圆将相互交叉 我可以部

在顺时针方向的圆圈中,有编号为1到N的N个固定点。 我们希望通过选择任意三个点来创建三角形

我们可以创建尽可能多的三角形,但没有两个三角形应该相互交叉,一个点只能共享一个三角形。所以有多少这样的配置是可能的?

例如,假设有10点:

  • 点1、2、3可以创建一个三角形,如果只存在该三角形,则它将是一个配置
  • 只有三角形(2,3,4)是其他配置
  • 三角形(1,2,3)和(4,5,6)将形成其他配置
  • (2,4,5)也可以是三角形
  • (2,4,5)和(1,3,6)不能是一个配置,因为两个圆将相互交叉
我可以部分解决:

  • 对于一个三角形,我们可以用nC3方法选择任意三个点并创建一个三角形
  • 对于两个三角形,我们可以选择nC6方式中的任意六个点,并可以以3种方式形成两个三角形

我无法解决更多三角形的问题。

出于以下考虑,我也希望将“根本没有三角形”视为有效配置。你可以在最后减去一来摆脱它

所以,递归地思考这个问题。给定n个点,有两个选项:要么选择“根本没有三角形”并返回,要么选择三个点形成一个三角形,然后递归。如果你有三个角,它们会把你的圆分成三个范围。所有后续三角形都必须具有来自单个范围的角,否则它们将重叠。如果将它们限制在其中一个范围内,它们将不会与第一个三角形相交。对于递归,您可以将这些范围中的每一个都视为一个小圆圈(自己检查关于交点的陈述是否仍然有效)

好的,上面将生成所有可能的三角形有序序列。如果你不在乎秩序,你必须设法消除它。一种可能是将每个计数除以n!其中n是最终生成的三角形数。另一种方法是确定三角形的完整顺序(即按最小角点索引排序),并确保递归不会生成比以前选择的三角形更小的三角形

有了这些想法,您应该能够编写一个小脚本来枚举几个点的三角形配置。您甚至可以手动检查一些案例。也许有这样的剧本就足够了。如果没有,您可以将该序列(由于“根本没有三角形”而带有或不带有偏移量)馈送给您,并查看它们是否为您提供了公式。或者自己找一个,可能是在一个医生的帮助下。如果其他一切都失败了,你可能想把这个带到医院

编辑:
除非我在实现自己的小脚本时出错,否则您要求的序列,包括“根本没有三角形”实例,都是错误的。还有一个公式。我使用以下一段python代码生成了该序列:

c=[1,1,1]
对于范围(3,30)内的n:
s=1
对于范围(0,n-2)内的i1:
对于范围内的i2(i1+1,n-1):
对于范围内的i3(i2+1,n):
s+=c[i2-i1-1]*c[i3-i2-1]*c[n-i3-1]
断言len(c)==n
c、 附加
印刷品

我没有想到递归。我试试看。