一,凸包--------4,Incremental construct

文章讨论了如何通过借鉴插入排序算法,将极点和极边的时间复杂度降低到O(n2),重点在于理解如何通过toLeft原理确定新添加点X时保留和舍弃部分,保持凸包结构。对于内部点,凸包保持不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从时间复杂度上来看,极点是O(n4),极边是O(n3),那么,还有没有可能使时间复杂度更小呢?有的,可以到O(n2),借鉴插入排序
算法。在这里插入图片描述
分为两部分。一部分是排好序的,一部分是未排序的。

在这里插入图片描述
如上图所示将外部点X加入到原凸包,(即S黄Vt蓝V所在的凸包)那么可以观察到,将会组成新的凸包XS黄Vt,也就是说,逆时针来看,保留st这段,舍弃ts这段。

那么st这段为什么要保留,而ts这段为什么舍弃呢?分界点s,t有什么特征呢?
这还是涉及到了toLeft原理。根据每个点的直接前驱和直接后继在x点到该点的直线的关系,可以分为四种情况
1,xt是凸包的切线,不管t是直接后继也好,直接前驱也好,都在xt这条线的右侧,即R+R
2,xs也是凸包的切线,不管t是直接后继也好,直接前驱也好,都在xs这条线的左侧,即L+L
3,对点黄V,x->黄V这条线,黄V的直接后继(即在S黄V这段)在线的右侧,黄V的直接前驱(即在黄V到t这段)在线的左侧,即R+L
4,对点蓝V,x->蓝V这条先,蓝V的直接后继(即在t蓝V这段)在线的左侧,蓝V的直接前驱(即在蓝V到s这段)在线的右侧,即L+R

所以,对于添加的外部点X来说,只要找到了两个点ts即可,保留st,舍弃ts,将X缝合起来,形成新凸包xs黄vt。

如果新添加的点X在内部,如下图所示,则每个点都是R+L,凸包不变。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值