算法分析与设计 分治算法 寻找凸包 寻找凸包 问题描述 给定平面上 nnn 个点的集合 QQQ,QQQ 的凸包是一个凸多边形 PPP。QQQ 的点或者在 PPP 上或者在 PPP 内,并且连接 PPP 内任意两点的边都在 PPP 内。现在要求 QQQ 的凸包 PPP。 问题分析 Graham-scan 的基本思想: 找到最下最左顶点,其他顶点与它连线。 按夹角从小到大排序。 夹角最小的开始,寻找凸包点。 是否存在分治的方法? 取两极端点,最右最下点 pdrp_{dr}pdr 和最左最上点 pulp_{ul}pul。 有向线 pdrpulp_{dr}p_{ul}pdrpul 将整个凸包被划分为右凸包和左凸包。 对右凸包和左凸包分别进行递归。 算法分析 时间复杂度:O(nlogn)O(n \log {n})O(nlogn) 快速傅里叶变换作业