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

网站检测企业微信小程序入口

网站检测,企业微信小程序入口,网站建设推进情况,海外建站平台1. 理论原理推导 核心思想 Graham 扫描法基于以下基本思想: 极角排序: 选取一个参考点(通常选择 y 坐标最小的点,若存在多个,则选 x 坐标最小的),将其他点按照与该参考点构成的极角进行升序排…

1. 理论原理推导

核心思想

Graham 扫描法基于以下基本思想:

  • 极角排序:
    选取一个参考点(通常选择 y 坐标最小的点,若存在多个,则选 x 坐标最小的),将其他点按照与该参考点构成的极角进行升序排序。这样排序后的点序列沿参考点方向依次展开,便于后续的凸包构造。

  • 利用栈进行构造:
    从参考点开始,依次将排序后的点加入栈中。每加入一个新点,都检查当前栈顶的两个点与新点形成的转向:

    • 如果转向为左转(或者说逆时针转),说明当前点有可能是凸包的一部分,继续压入栈中;

    • 如果转向为右转(顺时针)或共线,说明栈顶点不满足凸包条件,需要弹出栈顶点。如此反复,直至满足左转条件,再将当前点压入栈中。

几何证明

  • 正确性证明:
    利用“循环不变量”思想,可以证明:

    • 在每一步,栈中保存的点构成部分凸包(即所有点均处于边界的外侧)。

    • 如果出现右转,则说明栈顶点处于内部,不可能在最终凸包上,将其删除。

    由此,通过反复修正转向,最终栈中剩下的点必然构成整个点集的凸包。

  • 关键性质:
    对于任何三个连续的点 P_{i-2}P_{i-1}P_i,如果构成右转,则 P_{i-1}  一定不在凸包边界上;如果总是保持左转,则整个路径是凸的。
    这一性质正是构造凸包的理论依据。


2. 时间复杂度推导

Graham 扫描法主要分为两个阶段:

  1. 极角排序阶段:

    • 对 n 个点按照极角排序,通常采用快速排序或归并排序,其时间复杂度为 O(nlog⁡n)。

  2. 扫描与构造阶段:

    • 利用栈对排序后的点进行扫描,判断每次转向是否为左转或右转。每个点最多入栈一次、出栈一次,故该阶段的时间复杂度为 O(n)。

综合时间复杂度:
主要耗时在排序阶段,故总体时间复杂度为O(nlog⁡n)


3. 算法步骤

步骤 1:选择参考点

  • 在所有点中选择 y 坐标最小的点作为参考点(若 y 坐标相同,则选择 x 坐标最小的点),记为 P_0

步骤 2:极角排序

  • P_0​ 为原点,计算所有其他点与 P_0 之间的极角。

  • 对所有点(除了 P_0)按照极角升序排序。

    • 注意:在极角相同的情况下,通常保留离 P_0 最近的点,或者按距离排序,确保排序结果有利于凸包构造。

步骤 3:初始化栈

  • P_0 以及排序后的前两个点依次压入栈中。

步骤 4:扫描构造凸包

  • 对于排序后的其余每个点 P_i​(从第 3 个点开始):

    1. 检查栈顶的两个点(记为 P_{top}​ 和 P_{next\_to\_top}​)与 P_i​ 构成的转向。

    2. 如果转向为右转(或共线不满足要求),则说明 P_{top} 不在凸包上,从栈中弹出该点。

    3. 重复上述检查,直到栈顶的两个点与 P_i​ 构成左转为止。

    4. P_i​ 压入栈中。

步骤 5:输出结果

  • 当所有点处理完毕后,栈中保存的点按顺序构成整个点集的凸包。


算法总结

  • 理论原理:
    通过选择参考点、极角排序以及利用栈检查转向,保证了每一次只保留凸包边界上的点。利用几何性质证明了只有左转时点才属于凸包,右转时弹出不符合条件的点。

  • 时间复杂度:
    排序阶段 O(nlog⁡n),扫描阶段 O(n) ,整体为 O(nlog⁡n) 。

  • 算法步骤:
    包含选择参考点、极角排序、栈初始化、扫描构造凸包以及输出结果等步骤,流程清晰且易于实现。

http://www.dtcms.com/wzjs/544420.html

相关文章:

  • 如何做网站关键字优化怎么做拍卖网站
  • 网站模板之家免费下载哪些网页游戏好玩
  • 上海沙龙网站建设网络推广公司十大排名
  • 做网站用什么语言比较简单单个页面的网站
  • 天津市建设厅网站多人在线网站开发
  • 公司网站域名cn和com温州seo优化网络推广
  • 运动鞋网站的建设风格网站建设题库
  • 建网站哪家好北京东莞seo外包平台
  • 呼和浩特网站建设哪家好百度问答下载安装
  • 做网站字体要求修改wordpress登陆用户名和密码
  • 广州商城网站建设网站开发建设需多少钱
  • 我有虚拟服务器怎么快速做网站梅州市建设培训中心网站
  • 苏州网站关键词推广网站上切换语言是怎么做的
  • 在什么网站可以做推广自己建设淘宝客网站需要备案么
  • 建设网站如何挣钱wordpress 获取第一张图片不显示
  • 英文网站 icp备案号怎么用手机做软件
  • 可以做外链的网站开发网站合作协议
  • 企业网站手机网站建设河南专业网站建设公司
  • ADPR国际传媒网站建设阳江房产网最新楼盘精装修
  • 直播网站制作辽宁营商环境建设局网站
  • 专业商城网站建设报价单电子商务网站设计的认识
  • 农业网站建设模板制作二维码的微信小程序
  • 可做市值曲线的网站个人工作室经营范围
  • 网站怎么做下载网页代码吗正规seo关键词排名哪家专业
  • 安阳网站建设安阳seo搜索引擎优化人才
  • 网站怎么加关键词做优化2020最有效的网络推广方式
  • 网站宽屏图片怎么做天津网站建设托管
  • 网站建设成交话术高端网站制作效果好
  • 有什么网站工业设计服务平台
  • 网站建设的流程步骤求职简历模板免费可编辑