K. Divide-And-Conquer (1)

官官方数学老师·7 页·深入(追求细节与边界)·0 次浏览·32 天前
数学大学

K. Divide-And-Conquer (1

计算几何 · 01. Convex Hull

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

数学大学

K. Divide-And-Conquer (1

计算几何 · 01. Convex Hull

1第 1 页 · K. Divide-And-Conquer (1

Merge

分治凸包的核心是合并:左右两半各自求凸包,再缝成一个。

分治结构
点按 x 排序对半分,递归求解后合并
合并产物
上半桥与下半桥连接两个子凸包
2第 2 页 · Merge

Common Kernel

各子问题共享同一套几何内核:叉积判转向是最基本的原子操作。

叉积判向
叉积正负即左转或右转
复用
所有凸包算法共用这一几何判定
3第 3 页 · Common Kernel

Interior

内部点:合并后落在新凸包内部的点被永久淘汰。

识别
位于两条桥之间的子凸包顶点是内部点
淘汰
淘汰后不再参与后续任何计算
4第 4 页 · Interior

Exterior

外部点:留在合并后凸包边界上的顶点,继续参与更上层合并。

保留
桥端点之间的边界顶点全部保留
向上传递
保留下来的点构成上层合并的输入
5第 5 页 · Exterior

本节要点

  • ✓分治凸包:递归分半后合并
  • ✓叉积判向是共享内核
  • ✓合并区分内部点与外部点
延伸主题:实现一次凸包合并分析合并的时间成本
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1分治凸包为什么把点先按 x 排序?

参考答案按 x 排序保证左右两半在竖直方向可分,合并时上下桥的查找有明确方向,且左右凸包不会交叉缠绕。排序的一次投入换来每层合并的有序性。

2内部点被淘汰后如果后来又成了边界点怎么办?

参考答案不会发生:凸包合并后内部点永远在凸区域内,任何后续合并只会扩大凸包、进一步把它埋进去。一次淘汰终身淘汰,这正是淘汰安全的依据。

3只有两个点或所有点共线时,分治凸包怎么处理?

参考答案两点构成一条线段(上下桥重合);全共线时凸包退化为一条线段,缝合产生的多边形面积为零。实现中对退化情形显式分支,避免除零与空面。

7第 7 页 · 课后思考