【转】分圆问题:一个诡异的数列规律

问题

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

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

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

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

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

V−E+F=2V−E+F=2

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

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

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

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

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

F−1=E−V+2−1=(2∗C4n+C2n+n)−(n+C4n)+1=C4n+C2n+1F−1=E−V+2−1=(2∗Cn4+Cn2+n)−(n+Cn4)+1=Cn4+Cn2+1

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

C4n+C2n+1=C4n−1+C3n−1+C2n−1+C1n−1+C0n−1Cn4+Cn2+1=Cn−14+Cn−13+Cn−12+Cn−11+Cn−10

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

参考链接:

原文地址:https://www.cnblogs.com/yuelian/p/12001021.html

时间: 2024-08-01 22:46:06

【转】分圆问题:一个诡异的数列规律的相关文章

分圆问题:一个诡异的数列规律

问题 在圆上任取$n$个点,将每对点用直线连接起来,并规定任意三条线不能交于同一点,这些直线会将圆分割成多少份? 首先我们列出简单情况来寻找规律: 2个点将圆分成2份 3个点将圆分成4份 4个点将圆分成8份 5个点将圆分成16份 看来这个数列的规律非常明显:每增加一个点,分割的份数都将乘2.然而,当点数增加到6个的时候,分割的份数不是我们预料的32,而是31. 为了找到这个数列的通项公式,我们使用欧拉示性数公式(Euler’s Characteristic Formula)来进行推导: $$V-

linux hosts一个诡异问题

最近部署环境时遇到一个古怪问题. 背景环境: tomcat服务器 :  192.168.13.78 简称t 依赖服务器 :  192.168.12.59 简称s 二者关系 :t服务器的tomcat应用启动的时候需要调用s服务器的2181端口 问题现象: connect Unable to connect to  192.168.12.159:2181 server within timeout: 12000 解决过程: 1. ping  发现是可以通的 ping 192.168.12.159 P

zoj 2060 Fibonacci Again(fibonacci数列规律、整除3的数学特性)

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2060 题目描述: There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2) Input Input consists of a sequence of lines, each containing an integer n. (

关于Java数组越界的一个诡异问题【leetcode204】

刷leetcode204时,质数计算,在看完改进算法后有个测试怎么也过不了,数据越界报错: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2146737495 仔细看都没有找到原因,其中最后两行输出为: 499813 499979  701  713 -2146737495 499979  46349  46349 很纳闷,怎么突然从701跳到了46349,而且i*j<n也是验证过的,这

抛弃EF,20分构建一个属于自己的ORM框架

相信EF大家都不陌生了,因为数据库表跟程序实体是一一对应的原因,我们能够通过lambda这种函数式的编程方式进行操作数据库,感觉非常清晰明了.与我们直接写SQL相比,lambda是强类型,拥有更好的扩展性,伸缩性,而且编程更加的方便,快捷..下面我们就基于Expression和lambda来与大家构建一个属于自己的ORM框架. 思路的话很简单,就是将lambda转换成我们对应的数据库所需的查询条件,然后执行查询,再将结果以反射的方式封装成List<T>返回出去. Expression 大家使用

导师分享大发一分快三走势技巧与规律让你快速回血上岸!

快三(导师Q:270320446)是一个极度挑战人心理素质的快三彩种,要想在大发上做到稳赚不赔,首先,你要具备以下几点: ①.心态 在最不该下大的时候,玩心跳玩梭哈,相信运气而不相信概率.这种事典型的敢输不敢赢,运气不好的时候猛打猛冲,运气好的时候想着赢点就够了.输的时候拼了命的砸,该赢的时候不敢下,这样怎么不输? ②.下单投注不合理 不能做到科学理性有规划的投注!胡乱做各钟乱打.瞎打,没有计划,不理性思考,一味鲁莽行事,这种人就是庄家最喜欢的人,你不输谁输? ③.找对台子 赔率奖金过高或过低,

【LeetCode】下一个排列【找规律】

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空间. 以下是一些例子,输入位于左侧列,其相应输出位于右侧列. 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5 → 1,5,1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/next-permutation 分析: 方法1:直接调

记录Qt的一个诡异Bug

公司的一款项目,在迭代开发阶段,突然发现运行速度越来越慢,界面切换卡顿时间在2秒以上.经过和某个不卡版本的对比,惊奇的发现程序二进制都一模一样,就几个图片资源和脚本不一样.经过差不多一天的排查,发现是新加的splash程序影响了主程序的速度-.- 因为主程序设计的原因,启动大概需要10秒左右,为了不在黑的X界面等太久,为了界面的友好,我们独立做了个splash程序,用于在主程序启动之前显示友好提示界面,splash程序的生命周期是20秒,之后将自己退出.然而奇怪的是就是这个splash程序,即时

关于overflow: hidden;的一个诡异问题

1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="ie=edge"> 6 <title>Title</title> 7 <meta name="v