摘要:Hadoop使用了MapReduce编程范式,目前已经被公认为是分布式环境中分析大数据的标准框架。然而,它并不能很好的应用于大规模的计算几何处理。本文介绍的CG_Hadoop是一套可伸缩的和高效的MapReduce算法,用于处理各种基本计算几何问题,例如多边形合并、skyline(轮廓线)、convex hull(凸包)、farthest pair(最远相对)以及最近相对等,这些都是其它几何算法的基础。对于每一个计算几何操作,CG_Hadoop有两个版本,一个基于Apache Hadoop系统,一个基...
分类:
其他好文 时间:
2014-12-26 20:24:40
阅读次数:
227
题目大意:给定n个点(n
逗我?n
其实数据是随机生成的 经过验证 随机生成50w的点集 平均在凸包上的点在50~60个左右
于是求凸包之后就可以随便乱搞了- - 不会写O(n^3)的最小圆覆盖 写了O(n^4)的照过
注意最小圆覆盖时要讨论有两点在圆上和有三点在圆上两种情况
--------------------以上是题解-----------以下是粗口---------------...
分类:
其他好文 时间:
2014-12-26 18:46:13
阅读次数:
170
题目大意:给出平面上n个点,求最小圆覆盖。
思路:圆覆盖问题只与所有点中凸包上的点有关,因此先求一下凸包,然后数据范围骤减。大概是只剩下logn左右个点。这样就可以随便浪了。
先找所有三个点组成的圆,然后找两个点为直径所组成的圆。
还有就是三角形的外心公式,简直不是人推的,然后我就机制的百度了,结果如下:
不要模拟退火。。。
样例很坑,当你算出2.49 2.86的时候,不...
分类:
其他好文 时间:
2014-12-26 18:43:37
阅读次数:
255
题意: 判断凸包是否稳定。解法: 稳定凸包每条边上至少有三个点。这题就在于求凸包的细节了,求凸包有两种算法:1.基于水平序的Andrew算法2.基于极角序的Graham算法两种算法都有一个类似下面的语句:for(int i=0;i 1 && Cross(ch[m-1]-ch[m-2], p[i]-c...
分类:
其他好文 时间:
2014-12-20 02:06:13
阅读次数:
311
题意: 给一个圆和一个多边形,多边形点可能按顺时针给出,也可能按逆时针给出,先判断多边形是否为凸包,再判断圆是否在凸包内。解法: 先判是否为凸包,沿着i=0~n,先得出初始方向dir,dir=1为逆时针,dir=-1为顺时针,然后如果后面有两个相邻的边叉积后得出旋转方向为nowdir,如果dir*n...
分类:
其他好文 时间:
2014-12-19 21:54:05
阅读次数:
172
RT。求平面上点集的凸包。
1. GrahamScan算法,《算法导论》上的例子,先找到y最小的点O,以O建立极坐标,其它点按极角排序后再从头开始扫描(配合stack实现)。
2.BruteForce算法,依赖定理:如果一个点在平面上某三个点组成的三角形内,那么这个点不可能是凸包上的点。
所以暴力的思路是平面上的点每4个进行枚举,并判断是否满足定理,若满足,则删除这个点继续找;一直找到没有满...
分类:
编程语言 时间:
2014-12-16 19:14:22
阅读次数:
306
题意: 给你两个凸包,求其最短距离。解法: POJ 我真的是弄不懂了,也不说一声点就是按顺时针给出的,不用调整点顺序。 还是说数据水了,没出乱给点或给逆时针点的数据呢。。反正WA了几发就是了。求凸包最短距离还是用旋转卡壳的方法,这里采用的是网上给出的一种方法:英文版: http://cgm.c...
分类:
其他好文 时间:
2014-12-16 06:24:46
阅读次数:
224
RT,Graham扫描法求凸包分为3步:
1.找到y最小的点
2.以y最小的点O为原点,求其余所有点相对O的极角并按极角从小到大排序
3.对于排序后的点集,配合栈,完成Graham扫描。
ConvexHull.py
#coding=utf-8
import math
import numpy
import pylab as pl
#画原始图
def drawGraph(x,y):
...
分类:
其他好文 时间:
2014-12-15 19:06:31
阅读次数:
133
题意: 求一条直线分凸包两边的面积。解法: 因为题意会说一定穿过,那么不会有直线与某条边重合的情况。我们只要找到一个直线分成的凸包即可,另一个的面积等于总面积减去那个的面积。怎么得到分成的一个凸包呢?从0~n扫过去,如果扫到的边与直线不相交,那么把端点加进新凸包中,如果直线与扫到的边相交了,那么就将...
分类:
其他好文 时间:
2014-12-15 13:35:16
阅读次数:
111
http://www.lydsy.com/JudgeOnline/problem.php?id=1069显然这四个点在凸包上,然后枚举两个点找上下最大的三角形即可。找三角形表示只想到三分QAQ。。。。。。。看了题解发现。。。。这是单调的。。。。直接扫。。。然后,这货叫“旋转卡壳”?是qia还是ka。...
分类:
其他好文 时间:
2014-12-14 19:56:28
阅读次数:
249