Ahead

10.6.2018

算法5(GS)

最优算法O(nlogn)

实现

1.预处理排序
选取LTL与第二LTL 对剩下的点进行极角排序 (ToLeft Text)

2.开两个栈T与S (开头相对!!! ,为了好看)将已连接的边放入S,其余的按极角大小放入T

3.三个指针指向S的栈顶与次栈顶以及T的栈顶S[0],S[1],T[0]

代码

   while(!T.empty()) {ToLeft(S[1],S[0],T[0])?S.push(T.pop()):S.pop(); }    

4.最后对S栈自底向上是凸包的环路描述

这是大概的流程图

理解

每次退S栈表示一次回溯,否则是一次加边,那么对于弹S 表示S栈顶的元素偏内,而新节点更外面,就目前而言应该往右拐 (模拟一下就可以看出了)

正确性


下一个拓展点一定位于黄区或者蓝区,如果黄区直接拓展,如果蓝区,那么显然就是一个退栈的过程 也就是把在右边的退了,从而达到我们需要的状态 (弹一个判断一个)

复杂度分析

对于每次操作必然带着一次栈操作,那么一个点最多经历一次退栈一次入栈一次出栈,所以是O(n)的操作时间 加上预处理所以为O(nlogn) 。

Presorting?

一个很显然的方法就是去求夹角,不过还是会有误差。
和之前的算法一样我们尝试使用ToLeft 也就是把比较器变成ToLeft,越左边,越后面

简化

如果输入的数据已经在X或Y或某一方向上有序,那么,就能看成垂直该方向的两个无穷远处构造凸包,分别构造出上凸包(upper hull)和下凸包(lower hull) 从而可以将时间优化至O(n);
当然关于闭包的算法还有很多,不过GS算法已经足够优秀了

转载于:https://www.cnblogs.com/PiCaHor/p/9746986.html

【学习笔记:计算几何基础3】 Convex Hull相关推荐

  1. c语言计算时钟的夹角不用if,C语言学习笔记——计算时钟的夹角

    C语言学习笔记--计算时钟的夹角 题目内容: 钟面上的时针和分针之间的夹角总是在 0 -180之间 ( 包括 0 和180 ) .举例来说,在十二点的时候两针之间的夹角为 0 ,而在六点的时候夹角为1 ...

  2. 【Convex Optimization (by Boyd) 学习笔记】Chapter 2 - Convex sets(1) 仿射集凸集

    I. 仿射凸集(Affine and convex sets) 1. 线与线段 假设\(R^n\)空间内两点\(x_1,x_2\, (x_1≠x_2)\),那么\(y=\theta x_1+(1-\t ...

  3. 计算广告学学习笔记---计算过广告基本概念

    学刘鹏老师的<计算广告学>笔记,课程是免费的,课程地址 一.广告的目的和效果是什么? 广告 Advertisng:广告是由已确定的出资人通过各种媒介进行的有关产品(商品.服务和观点)的,通 ...

  4. 医咖会免费STATA教程学习笔记——计算变量的置信区间

    1.导入数据集 sysuse auto, clear 2.连续变量的置信区间的计算 方法一: ci means mpg (默认为95%的置信区间) ci means mpg, level(99) (该 ...

  5. Qt-OpenCV学习笔记--计算周长--arcLength()

    概述 这个函数用来计算 轮廓的周长 或者 曲线的长度. 函数 double cv::arcLength (InputArray curve,bool closed ) curve 计算对象(轮廓 或者 ...

  6. mysql记录和字段_科学网—MySQL学习笔记:计算同一条记录内各字段之和,并判断是否归一 - 丁祥欢的博文...

    ★计算同一记录中不同字段之和 背景说明:MainDB表内有几十个字段用于存放配方数据,需要将它们加起来看看是否归一. 由于MySQL没有类似高版本Access那样的计算字段,因为需要用SQL语法来处理 ...

  7. 《计算几何》学习笔记

    前言 这是学堂在线邓老师讲的<计算几何>课程的学习笔记.实际上很多细节,比如点重合.边平行等特殊情况,在课程中没有进行考虑,课程讲的算法只考虑一般性的情况. (最后两章Geometric ...

  8. Li‘s 影像组学视频学习笔记(28)-ROI/病灶体积的计算、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学的系列教学视频 本节(28)主要讲解: 用SimpleITK包进行ROI/病灶体积的计算 1.加载包 import SimpleITK as sitk im ...

  9. 百度计算广告学沙龙学习笔记 - 内容匹配广告

    百度计算广告学沙龙学习笔记 - 内容匹配广告 时间 2014-02-05 18:53:55 CSDN博客 原文  http://blog.csdn.net/three_body/article/det ...

  10. .NET 大数据实时计算--学习笔记

    摘要 纯 .Net 自研大数据实时计算平台,在中通快递服务数百亿包裹,处理数据万亿计!将分享大数据如何落地以及设计思路,技术重难点. 目录 背景介绍 计算平台架构 项目实战 背景介绍 计算平台架构 分 ...

最新文章

  1. python环境安装opencv,Python环境搭建之OpenCV的步骤方法
  2. 宇宙射线会导致路由器 bug,思科你认真的吗
  3. 【竞赛相关】Kaggle知识点:入门到进阶的10个问题
  4. 2019 最新蚂蚁花呗Java三面题目:红黑树+并发容器+CAS+Solr+分布式等
  5. P4172 [WC2006]水管局长 LCT维护最小生成树
  6. 网站建设解决了传统的销售模式
  7. java linux 写文件_Java读写文件
  8. A*解决传教士与野人问题
  9. 2010QQ游戏登录器(分析+感叹)
  10. codewars练习(javascript)-2021/1/24
  11. error: no viable conversion from 'MyCalendar *' to 'MyCalendar'
  12. switch调函数 vue_vue3中轻松实现switch功能组件的全过程
  13. Ramnit 蠕虫分析
  14. 软考信息系统项目管理师(高项),论文该怎么准备?
  15. pandas常用命令
  16. js 滚动显示获奖名单
  17. (转载) android项目大全,总有你所需的
  18. 关于微信小程序开发中的显示个人信息以及重置密码功能
  19. Aspect Joinpoint Advice Pointcut 区别
  20. suse安装readline-devel

热门文章

  1. go语言环境搭建以及监测命令
  2. Mysql-mmm配置全自动切换主从关系和读写分离
  3. foobar2000实现用手机远程控制PC命令行版
  4. 转 PHP函数---$_Get()和$_Post()的用法
  5. 机器学习之推荐算法分类
  6. Http头部和状态码
  7. 常用的工具网站和收藏文章
  8. Python [6] IT资产管理(下)
  9. dsp 链接命令文件的写法
  10. 经典技术文章翻译(3):IIS7协议侦听器(Introducing IIS 7 IIS Protocol Listeners)