区域划分问题总结
来源:互联网 发布:银魂中空知大猩猩 编辑:程序博客网 时间:2024/04/30 14:49
本文转自 http://hi.baidu.com/andimeo/item/ce96b6e3285065256cabb836
1.直线(Line)分割平面
由于第n条直线与前n-1条直线相交于n-1个点,这n-1个点将第n条直线划分为n个部分,而这第n条直线的两边分别有L(n-1)和n个部分。故L(n)=L(n-1)+n L(0) = 1
2.一次折线(Zig)分割平面
由于一条一次折线相对于两条直线相交少了两个部分,所以Z(n) = L(2n) – 2n Z(0) = 1
3.Z型折线(Zig-zag)分割平面
Z型线与三条之间很相似,但是有两条平行,这样就少了1个部分,如果再将有两条直线平行的三条直线变为Z型的话,则又将少4个部分,这样每个Z型折线比三条直线分平面形成的部分少5个。故ZZ(n) = L(3n)-5n
P.S.对于2,3而言由于后面的图形与前面的图形相交时要获得尽量多的区间,所以交点不会在顶点处,既然不在顶点处,那么本来这个图形相比直线而言少了几个区间,与其他图形相交后仍然少那几个区间
4.圆(Circle)相交
第n个圆与前n-1个圆相交于2(n-1)个点,这2(n-1)个点将第n个圆划分为2(n-1)个圆弧,这每条弧都将原来的一个旧区域一分为二。故C(n) = C(n-1) + 2(n-1) C(0) = 1
5.平面(Flat)分割空间
第n个平面与前n-1个平面有n-1条交线,这n-1条交线分割第n个平面为L(n-1)个区域,则在这个平面的两侧分别把空间分为F(n-1)和L(n-1)个区域,故F(n) = F(n-1) + L(n-1)
6.对没有三条对角线交于一点的凸多边形,计算各边和对角线组成的互不重叠的区域个数
我们从各区域的顶点总数和所有区域的内角和的总和两个角度进行分析:
设:Nk为区域中k边形的个数。
角度1:各区域顶点总数(包括重复计算的数目)的等式为
3N3 + 4N4 + … + mNm = 4C(n,4) + n(n-2) (等式1)
其中m是各区域边数的最大值,n是凸多边形的顶点数。
左式表示的各区域顶点总数来自两个方面:
由于每两条对角线(或四个顶点)决定一个内部区域的顶点,因此区域的顶点数是4C(n,4),即每个内部顶点在左式中计数4次(总是四个区域公共一个顶点).又因为在计算中,凸多边形的每个顶点(为n-2个三角型的公共顶点)重复计数n-2次,因此左式的计算中,n个顶点被计数为n(n-2).
角度2:所有区域的内角和的总和的等式为
180N1 + 360N2 + 540N3 + … + (m-2)180Nm = C(n,4)360 + (n-2)180 (等式2)
左式表示的所有区域的内角和的总和来自两个方面:
(1)各内部顶点处区域内角和(360)的总和为C(n,4)360
(2)凸多边形的内角和为(n-2)180
等式2两边同时除以180,得出
N3 + 2N4 + … + (m-2)Nm = 2C(n,4) + (n-2) (等式3)
殊途同归,由等式1两边同时减去等式3两边,可得出区域总数:
N3 + N4 + N4 + … Nm = C(n,4) + C(n-1,2)
这就是说,所求的区域总数为C(n,4) + C(n-1,2)
7.n条直线划分矩形
每条直线和矩形必然交于两点,这两点任一个都必然同时属于两个多边形.矩形内部n条直线两两相交且没有3条交于同一点,所以产生n(n-1)/2个交点,每个交点属于4个多边形,所以矩形边上和内部的点数一共为 n(n-1)/2+2n=n(n+3)/2.如果尽量让直线与矩形相交的时候交点不是矩形的顶点的话还会多出来4个顶点,每个顶点只属于一个多边形,所以总的点数为n(n+3)/2+4 = (n^2+3n+8)/2.
内部每个交点处内角和为360度,边上每个交点内角和为180度,顶点处内角和为90度,4个加起来是360度,仿照5的方法列方程可得到区域总数为(n^2+n+2)/2
8.圆圈上n个点两两连线最多把圆分成多少个区域
先把每个点和与它相邻的两个点相连,这样就转化成凸多边形的问题了,求出凸多边形内部的区域数,再加上n就行了.
- 区域划分问题总结
- 区域划分问题总结
- 区域划分总结
- 区域划分问题
- c/c++中内存区域划分总结
- c/c++中内存区域划分总结
- 凸多边形区域划分为三角形问题
- c/c++中内存区域划分大总结
- C/C++中内存的区域划分总结
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结-转
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结
- c/c++中内存区域划分大总结
- [c++]stl map
- ListItemEventHandler does not fire on the prospective list
- poj 2356 and 3370 鸽巢原理
- hdu 1021
- /etc/hosts与/etc/resolv.conf
- 区域划分问题总结
- 编程求解字符串中每个字母出现的次数
- 你应该知道的C语言预处理
- PHP自学之路------超全局变量
- 献给正在打拼的人
- 程序人生--一个程序员对学弟学妹建议(转载)
- 状态压缩dp学习小记part2
- 抗锯齿方法paint.setAntiAlias(ture);paint.setFilterBitmap(true))
- 对人,还是对事?