J. Graham Scan: Analysis

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

J. Graham Scan: Analysis

计算几何 · 01. Convex Hull

按 空格/→ 演示下一步

问一句
1 / 7 页

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

数学大学

J. Graham Scan: Analysis

计算几何 · 01. Convex Hull

1第 1 页 · J. Graham Scan: Analysis

Ω(n) Backtracks

扫描中的弹栈(回溯)总次数下界为 Ω(n):每个点至多压栈一次、弹出一次。

摊还视角
压栈 n 次封顶,弹栈次数不超过压栈次数
下界
凸包有 n 个顶点时至少 n−1 次成功压栈
2第 2 页 · Ω(n) Backtracks

Planarity

平面点集假设:输入点是平面上的位置点,彼此无序——排序正是引入秩序的第一步。

无序输入
原始点列没有任何顺序结构
有序化代价
排序是引入秩序的必要投入
3第 3 页 · Planarity

Amortization

摊还分析:单个点的弹栈可能多次,但总弹栈均摊后每次操作 O(1)。

均摊成本
总成本除以操作数为 O(1)
方法
聚合法或势能法均可证
4第 4 页 · Amortization

Simplification

化简:预处理剔除非极点与重复点,让主算法在更小的输入上运行。

预处理
去重、去内点都是有效化简
权衡
化简本身的成本须低于节省的时间
5第 5 页 · Simplification

本节要点

  • ✓压栈 n 次封顶,弹栈不超压栈
  • ✓摊还后每次操作 O(1)
  • ✓预处理化简要算成本账
延伸主题:做一次摊还分析练习测试预处理对性能的影响
6第 6 页 · 本节要点

课后思考

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

1摊还分析中的「势能法」如何应用到栈扫描?

参考答案把栈中元素个数设为势能:压栈使势能上升 1(付 1),弹栈使势能下降(返还信用)。实际成本减去势能变化后,每步摊还成本非负且为常数——总成本自然线性。

2「回溯」在本算法中具体指什么操作?

参考答案指弹栈:新点到来时撤销此前被证明非顶点的栈顶选择。每个点至多被撤销一次,与压栈次数对偶,因此回溯总量线性——这正是摊还分析的结论。

3平面性假设如果去掉(空间点集),凸包算法还能沿用吗?

参考答案不能直接沿用:三维凸包是多面体,极角排序与栈扫描全部失效,需要增量法或分治在三维上重构面片。二维技巧的核心都依赖平面上的转向判定。

7第 7 页 · 课后思考