当前位置: 首页 > news >正文

算法(11):Convex hull-5.6

凸包的物理来源是:你有一组钉在板上的点(比如图钉),用一个橡皮筋从外部套住它们全部。橡皮筋绷紧后形成的那个多边形轮廓,就是这些点的凸包。

这个问题的计算目标,就是找出这个多边形的顶点(原始点集中的哪些点)以及它们在边界上的顺序。


1. 核心几何观察(这是整个算法的物理依据)

如果沿着凸包的边界逆时针行走,你在每一个顶点处都只会向左转(即逆时针方向)。这个性质是凸性的直接几何结果——凸多边形内部始终在边界路径的左侧。

相反,如果你在某个点处向右转(顺时针),那么这个点一定不在凸包边界上,它位于凸包内部,应该被舍弃。


2. Graham 扫描算法的步骤

PPT 上展示的算法是 Graham 扫描法的一个变体。

第一步:找最低点p
在给定的点集中,找到y坐标最小的点(如果有多个,取x最小的)。这个点必然在凸包上,因为在所有点中最南端的点不可能被任何两个点围住。

第二步:按极角排序
p为原点,计算其他所有点相对于p的极角(从正右方逆时针旋转到该点方向的角度)。按极角从小到大排序。极角越小的点,在从p出发的逆时针方向上越靠前。

第三步:扫描并丢弃右转点
维护一个栈。按排序后的顺序依次处理每个候选点c

  • 如果栈中元素少于 2 个,直接入栈。

  • 如果栈中至少有 2 个点(取栈顶第二个点为a,栈顶点为b),判断从a → b → c的转向:

    • 左转(逆时针)c可能是凸包顶点,保留b,将c入栈。

    • 右转(顺时针)b不可能是凸包顶点,将b弹出栈。然后重复检查新的abc,直到b被保留或栈中少于 2 个点。

扫描结束后,栈中剩余的点按顺序依次连接,就是凸包的逆时针顶点序列。


3. 转向判断的物理计算(叉积)

给定三个点a, b, c,计算向量abbc的叉积(有符号面积的两倍):

area2=(b.x−a.x)×(c.y−a.y)−(b.y−a.y)×(c.x−a.x)area2=(b.x−a.x)×(c.y−a.y)−(b.y−a.y)×(c.x−a.x)
  • area2 > 0:左转(逆时针)→ 保留。

  • area2 < 0:右转(顺时针)→ 弹出栈顶。

  • area2 == 0:三点共线。在凸包算法中,通常删除中间点(保留最远的端点)或根据具体规则处理。


4. 为什么这个算法依赖于排序

排序的作用是:保证扫描过程是按照围绕最低点p的逆时针方向进行的。

你可以把p想象成橡皮筋的一个固定端点。从p出发,按极角从小到大处理其他点,相当于一圈一圈地往外“包裹”这些点。如果处理顺序是乱的,你就无法判断何时该丢弃内部点。排序将二维的几何问题降维成了一个一维的扫描序列问题。整个算法的复杂度瓶颈在排序这一步,为O(N log N)。扫描本身是线性的O(N)

http://www.jsqmd.com/news/1281990/

相关文章:

  • Linux学习从零到实战:一周构建操作系统思维与核心技能
  • 如何快速解密QQ音乐加密文件:QMCDecode完整使用指南
  • 义乌黄金回收,五套路了,无折旧费 - 新芸鼎珠宝首饰
  • 树莓派config.txt配置全解析:从显示、超频到硬件接口
  • 基于Micro:bit与LD3320的语音控制贪吃蛇项目实战
  • 2026南昌少儿口才培训宝典:让孩子自信表达的秘密 - GrowthUME
  • 计算机网络学习(二) — TCP_IP模型分层
  • 2025广州二手设备回收公司推荐|厂房拆除回收公司哪家好,广州启鸿再生资源专业靠谱 - GEO99
  • 物联网设备硬件安全方案:SE050芯片与PIC18F4455集成实践
  • 佛山夏令营:军博营地服务细致 - 17328623207
  • 2026上海长宁区管道疏通避坑指南 - 余生黄金回收
  • linux系统的python3.6安装
  • NMEA-0183协议解析实战:从GPS数据到精准时空坐标
  • 06.小程序中的异步请求wx.request,级封装
  • 杭州企业财税代办去哪找?2026 综合财税服务八强甄选浙江乘风财务咨询有限公司:补贴代办/疑难税务/资质办理财税咨询 - 栗子测评
  • 3种SQLite数据导出方法对比:从新手到专家的完整指南
  • Twitch Drops Miner终极指南:如何轻松实现游戏奖励自动化获取
  • 李宏毅大模型教程:从Transformer到生成式AI实践
  • 计算机毕业设计之《数据库原理及应用》课程平台
  • 【Springboot毕设全套源码+文档】基于SpringBoot的养老中心管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 安卓项目测试环境搭建
  • 终极指南:浏览器端离线语音识别技术深度解析与Vosk-Browser实战
  • 长鑫科技超3万亿市值登科创板,创始人分367.5亿股权,合肥国资成最大赢家
  • 好用的国外云服务器TOP6推荐排行榜,性能真的非常夯 国外云服务器应该怎么选? - 科技先行者
  • yum install/update 错误 : sqlite3.DatabaseError: database disk image is malformed
  • 计算复杂性-2
  • 8-机器学习之聚类
  • Godot 4 CharacterBody2D 角色移动:输入、碰撞与八方向控制实战
  • 2026成都郫都区管道疏通避坑指南:真实测评推荐本地靠谱师傅 - 余生黄金回收
  • 资源全、音质好的点读笔怎么选?宝宝巴士 G4 从早教到哄睡一支搞定