E. Jarvis March

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

E. Jarvis March

计算几何 · 01. Convex Hull

按 空格/→ 演示下一步

问一句
1 / 11 页

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

数学大学

E. Jarvis March

计算几何 · 01. Convex Hull

1第 1 页 · E. Jarvis March

Selectionsort

Jarvis March 的结构神似选择排序:每轮从剩余点中「选出」下一个凸包顶点。

类比
选择排序每轮选最小,Jarvis 每轮选最「右转」的点
复杂度同构
每轮线性扫描,共 h 轮为 O(nh)
2第 2 页 · Selectionsort

Strategy

策略:从最左下的点出发,反复选择相对当前点「最右转」的候选点作为下一顶点。

候选扫描
对所有点按 ToLeft 逐一挑战当前候选
保证
扫描结束时选出的点必为下一极点
3第 3 页 · Strategy

Coherence

连贯性:相邻两轮的选点决策共享大量比较,重复信息可被利用。

重叠比较
上一轮的比较结果下一轮依然有效
优化余地
利用连贯性可进一步减少实际计算
4第 4 页 · Coherence

To-Left Test

Jarvis 中的核心判定:候选点是否在当前边右侧,右转最多者胜出。

挑战制
新候选若在「候选边」右侧即取代旧候选
退化
共线时取距离更远者,避免漏掉中间点
5第 5 页 · To-Left Test

Degeneracy

退化情形:多点共线时同一方向上出现并列候选,需按距离打破平局。

共线并列
最右转相同则取离当前点最远的候选
重复点
输入中的重复点应预先剔除
6第 6 页 · Degeneracy

Lowest-Then-Leftmost

起点选取:先最低、同高再最左的点必是凸包顶点,作为第 0 号极点。

确定性起点
唯一保证属于凸包的规范起点
作用
使算法从确定位置开始逐极点推进
7第 7 页 · Lowest-Then-Leftmost

Implementation

实现要点:双层循环外层定当前点、内层挑战下一候选,h 轮后回到起点终止。

循环骨架
外层逐极点,内层逐候选挑战
终止条件
下一个顶点回到起点即完成一圈
8第 8 页 · Implementation

Output Sensitivity

输出敏感性:Jarvis 的 O(nh) 与凸包规模 h 挂钩——顶点少则快。

h 的角色
凸包顶点数 h 通常远小于 n
对比
Graham 的 O(n log n) 不看 h,各有胜负
9第 9 页 · Output Sensitivity

本节要点

  • ✓Jarvis March = 几何版选择排序
  • ✓每轮选相对当前边最右转的候选
  • ✓共线取最远,起点最低再最左
  • ✓输出敏感 O(nh),顶点少时极快
延伸主题:实现 Jarvis March构造 h 极小的输入测性能
10第 10 页 · 本节要点

课后思考

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

1「输出敏感」是什么意思?对算法选择有什么指导?

参考答案运行时间由输出本身的规模(h)决定:凸包顶点极少的海量点集,Jarvis 的 O(nh) 可能远快于 O(n log n) 的 Graham。知道输出的预期规模,才能选对算法。

2Jarvis March 的「挑战制」与选择排序的「擂台制」如何对应?

参考答案选择排序内层循环用「当前最小」做擂台逐个挑战;Jarvis 用「当前最佳下一顶点」做擂台,挑战的判据是 ToLeft 右转与距离。同一个擂台模式,换了比较器而已。

3「h 轮、每轮 n 次比较」的 O(nh) 中,h 何时会退化到接近 n?

参考答案点均匀分布在圆周上时几乎所有点都是极点,h≈n,此时 O(nh)=O(n²)。相反,绝大多数点挤在内部、只有少数顶点时 h 极小,Jarvis 反而大占便宜。

11第 11 页 · 课后思考