算法:快包算法

本文深入解析快包算法,一种高效解决凸包问题的分治法。通过确定最右最下点和最左最上点,将凸包问题分解为左凸包和右凸包,再递归求解。最佳情况时间复杂度可达O(nlogn),了解其工作原理及应用。

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

快包算法(分治法求凸包问题)


  • 过程
    1. 两个极端点,它们是最右最下点p和最左最上点q
    2. 有向直线pq将整个凸包划分为左凸包和右凸包
    3. 对左右凸包分别进行递归
      1. 递归过程:
        • 设S1是严格在直线pq右边的点集
        • 在S1中寻找距离pq最远的点,作为pq右边的一个极端点b
        • 连接pb和qb
        • 把pb右侧的点集记为A,qb右侧的点集记为B
        • 对边pb和点集A以及边qb和点集B分别进行递归调用
    4. 依次连接凸包上的顶点,得点集S1的凸包(点集S的右凸包)
    5. 类似计算出S的左凸包从而得到整个点集的凸包

  • 时间复杂度
    1. 最好,每次划分平衡,O(nlogn)
    2. 最坏,每次划分极端,O(n2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值