B. Slab Method

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

B. Slab Method

计算几何 · 06. Point Location

按 空格/→ 演示下一步

问一句
1 / 11 页

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

数学大学

B. Slab Method

计算几何 · 06. Point Location

1第 1 页 · B. Slab Method

Slab Decomposition

Slab 方法:过每个顶点做竖直线,把平面切成竖直条带(slab)。

条带内
条带内无顶点,边贯穿左右边界
条带内排序
穿过的边按 y 顺序排好
2第 2 页 · Slab Decomposition

Ordering Trapezoids

条带内按 y 排序的梯形:相邻边之间的每个空隙是一个梯形面片。

梯形
两条相邻边与条带边界围成的区域
定位
查询点先定条带,再在条带内二分梯形
3第 3 页 · Ordering Trapezoids

Tree of Trees

树套树结构:外层按 x 二分找条带,内层按 y 二分找梯形。

外层树
条带的区间树或二分树
内层树
每个条带挂一棵 y 方向的平衡树
4第 4 页 · Tree of Trees

Example

例题:小规模细分上的条带分解与查询演示。

演示
标出竖直线、条带与条带内的梯形编号
查询走查
沿外层树到内层树的完整查询路径
5第 5 页 · Example

Query Time

查询时间:外层 O(log n) + 内层 O(log n) = O(log n)。

两层对数
两个二分相加仍是对数级
6第 6 页 · Query Time

Preprocessing Time

预处理时间:构造条带与排序,O(n log n) 或更高(视实现)。

排序主导
条带内边的排序是成本大头
7第 7 页 · Preprocessing Time

Storage Cost

存储代价:条带内边表的总和可达 O(n²)——这是 Slab 法的痛点。

平方存储
一条长边横跨多个条带被重复记录
改进方向
持久化结构或梯形图法可压回线性
8第 8 页 · Storage Cost

Worst Case

最坏情形:网格状细分让每条边横跨所有条带,存储与预处理爆炸。

构造
n/2 条横线与 n/2 条竖线交织
教训
理论查询 O(log n) 但空间不可接受
9第 9 页 · Worst Case

本节要点

  • ✓竖直条带 + 条带内 y 排序梯形
  • ✓树套树查询 O(log n)
  • ✓痛点:存储最坏 O(n²)
延伸主题:实现小规模 Slab 结构思考空间优化方案
10第 10 页 · 本节要点

课后思考

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

1Slab 法「查询快但空间爆炸」的根源是什么?

参考答案根源是同一条边在多个条带中被重复记录:横跨 k 个条带的边存储 k 份。树套树的每一层都要完整复制边表信息,最坏时平方爆炸。持久化(只存差异)正是为解决这个复制问题而生。

2条带法把「平面定位」降为「两次一维二分」,这个降维思想还能用在哪?

参考答案区间树、线段树套平衡树、kd 树都是同构的降维手法:外层处理一个维度、内层处理剩余维度。多维查询问题的通用分解策略就是「逐维建立层级索引」。

3O(n²) 空间最坏情形在什么应用里可以接受?

参考答案细分小而查询极频繁的静态场景(如游戏小地图、CAD 单图纸)可以接受:一次平方空间的预处理换来永久 O(log n) 查询。数据大或动态变化就必须换持久化或梯形图法。

11第 11 页 · 课后思考