凸包问题之GrahamScan解法
来源:互联网 发布:linux设置文件权限 编辑:程序博客网 时间:2024/05/16 06:55
首先了解一下GrahamScan解法的原理:
当沿着Convex hull逆时针漫游时,总是向左转在极坐标系下按照极角大小排列,然后逆时针方向漫游点集,去除非Convex hull顶点(非左 转点)。
第一步
这里P0是极坐标的中心,在编程的时候,经常就是选择y坐标最低的点
第二步:
这样就建立起了所有点到P0的极坐标
第三步:
这里首先选择三个点压栈,这三个点肯定构成的是非右转关系
看P3
可以发现P3和P2P1构成右转关系,因此考虑把P2从凸包点中排除,然后把P3加入到凸包栈中,继续向前探进
第四步:
这里P3P4P5都不构成右转,因此都放入到凸包栈中,
第五步:
P6P5P4构成右转关系,因此需要删除P5,加入P6,
P7P6P4构成右转关系,因此删除P6,加入P7,P7P4P3构成非右转关系,删除P4。。。。。。。
知道所有点都遍历完
第七步:
上图构成的就是凸包了(包括P0)
0 0
- 凸包问题之GrahamScan解法
- 凸包问题之GrahamScan解法
- 凸包问题之GrahamScan法
- 凸包GiftWrapping GrahamScan 算法实现
- 凸包算法-GrahamScan+暴力+分治
- 凸包问题之蛮力解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- 凸包问题的五种解法
- POJ 2187(凸包GrahamScan扫描+极角排序+平面最远点对)
- 凸包的解法
- poj_2187凸包,暴力解法
- Day7(上).二级指针实战
- Andorid--AsyncHttpClient(三)
- 数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
- 第十六周阅读项目(2)
- 黑马程序员---API
- 凸包问题之GrahamScan解法
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 《C#高级编程》【第7章】运算符与类型强制转换 -- 学习笔记
- linux权限管理
- 最大子数组的和
- Zabbix Proxy在centos6.5final的安装
- 第十四周 项目三 电子词典
- 数据库Sharding的基本思想和切分策略
- 圈水池(凸包)