# 🎯 1. 背景与目标

# 📌 应用场景

轨迹数据广泛存在于以下应用中:

  • GPS 路径(车辆、手机用户行驶轨迹)
  • 雷达 / 卫星跟踪(如台风移动路径)
  • 动物迁徙轨迹(如候鸟、鲸鱼)
  • 运动轨迹数据(如跑步者、球员移动)

这些轨迹数据常常由很多点组成,呈折线状。

# 🧠 分析目标:

从这些轨迹中提取有意义的行为模式,例如:

  • 找出聚集区域(多个个体集中活动);
  • 分析路径形状(如迁徙路线);
  • 进行预测分析(如风暴路径预测)。

# ❓ 要解决的两个核心问题

  1. 相似性问题

    • 给定两条轨迹,如何判断它们的相似程度
    • 哪些方法能更准确刻画 “形状是否接近”?
  2. 压缩问题(简化问题)

    • 给定一条很长的轨迹,如何用更少的点表示它?
    • 如何在保留形状的同时减少点数,加快处理速度?

# 📏 2. 曲线相似性度量方法

在轨迹分析中,我们需要定义 “相似性” 来比较两条曲线是否形状接近。下面是几种主流方法:


# 🧩 2.1 一般方法

这些方法大多源自信号处理或字符串比较,适用于等长或对齐轨迹。

  • 向量化方法

    • 将曲线转为高维向量比较;
    • 但要求点数相同、对齐,不适用于实际轨迹。
  • 常见度量方式

    1. Hausdorff 距离:比较最大最小点对距离,忽略匹配顺序;
    2. DTW(Dynamic Time Warping):允许 “拉伸时间” 对齐点序;
    3. LCSS(Longest Common Subsequence):基于离散子序列匹配,容忍缺失点。

# 🐕 2.2 Fréchet Distance(牵狗人模型)

更几何、连续、顺序敏感的度量方式。

# ✅ 直观解释:

  • 人牵着狗,分别沿着两条曲线行走;
  • 两人都不能后退,牵引绳最短长度就是 Fréchet 距离;
  • 强调连续性与 “全局匹配”,能捕捉曲线整体形状的相似性。

# ✅ 特点:

  • 比 Hausdorff 更强,因为它考虑了曲线 “行进过程” 的顺序;
  • 离散版本只在顶点上比较,误差大;
  • 通常用 ** 自由空间图(Free Space Diagram)** 来判断 δ(P,Q)r\delta(P, Q) \le r 是否成立。

# 📐 3. Fréchet 距离计算算法

我们关心的问题是:如何计算两条曲线的 Fréchet 距离?也就是牵狗人模型中 “最短牵引绳长度”。


# 🔎 3.1 决策算法(是否 ≤ 某个阈值 r)

这是 Fréchet 计算中的基础问题:

给定两条曲线 PPQQ 以及一个数 rr,判断它们的 Fréchet 距离是否 r\le r

# ✅ 解决方法:使用 “自由空间图(Free Space Diagram)”

  • 构建一个二维网格,每个单元格表示 PP 的一条边和 QQ 的一条边的交互;
  • 在每个格子中标记哪些 (s,t)(s, t) 对应点满足 P(s)Q(t)r|P(s) - Q(t)| \le r
  • 然后检查是否存在一条从左下角到右上角的非递减路径,沿着 “白色区域” 前进。

如果存在这样一条路径,就说明 Fréchet 距离 r\le r

# ⏱️ 时间复杂度:O(mn)O(mn)

其中 mmnn 是两条曲线的点数。


# 🧮 3.2 精确计算 Fréchet 距离

真正的 Fréchet 距离是:满足上面路径条件的 “最小 r” 是多少?

# ✅ 解法思路:

  • 将所有可能的临界距离(例如点对之间的距离)排序;
  • 用二分法或者参数搜索,在这些候选值中找到最小的满足条件的 rr
  • 每次都调用上面的决策算法。

# ⏱️ 时间复杂度:O(mnlogmn)O(mn \log mn)(当前最优)


# ❓ 3.3 开放问题

尽管已有算法很优秀,但仍有几个悬而未决的问题:

  1. 是否存在亚二次时间的精确算法?

    • 也就是说,是否能做到 O(n2ε)O(n^{2 - \varepsilon}) 的精度计算?
  2. 是否可以更快地逼近 Fréchet 距离?

    • 对于某些特殊类型的曲线,比如:
      • c-packed 曲线(即 “不会绕太多圈” 的轨迹),
      • 存在近似 Fréchet 距离的线性时间算法!

# ✂️ 4. 曲线简化(Trajectory Simplification)

# 🧭 4.1 动机(为什么需要简化?)

  • 实际轨迹数据中包含大量 GPS 或传感器采样点,点数可能成千上万;
  • 如果直接用这些点计算 Fréchet 距离或执行聚类、比对等操作:
    • 会很慢,占内存,甚至难以可视化;
  • 所以我们希望:

    在不改变轨迹形状的前提下,尽可能少地保留点数


# 📚 4.2 常见算法(不同需求下的选择)

# 1️⃣ Ramer–Douglas–Peucker(RDP)算法

  • 核心思想:递归分割曲线,保留转折大的点,删掉 “直线段上多余的点”;
  • 误差度量:基于 Hausdorff 距离;
  • 适用性:简单好用,适合快速粗略压缩;
  • 复杂度
    • 最坏 O(n2)O(n^2)(所有点都要递归比较);
    • 通常情况下为 O(nlogn)O(n \log n)

# 2️⃣ Simple Simplification(Driemel et al., 2012)

  • 核心思想:从起点开始向前走,每段简化边长度 ≥ ε\varepsilon
  • 只要 Fréchet 距离误差不超过 ε\varepsilon,就可以 “跳过中间点”;
  • 误差度量:Fréchet 距离,控制整体形状保留;
  • 优点:运行快,代码简单;
  • 时间复杂度O(n)O(n),线性时间;
  • 适用性:非常实用,适合大数据下快速处理。

# 3️⃣ Agarwal et al. 算法(2005)

  • 目标:在 Fréchet 距离约束下,找出 “最短长度” 的简化曲线(最少点数);
  • 方法:将曲线简化建模为图最短路径问题;
  • 误差度量:Fréchet 距离,结果理论上最优;
  • 时间复杂度O(nlogn)O(n \log n)
  • 适用性:适合精确压缩任务,对点数敏感的分析任务非常有效。

# ✅ 总结建议

算法精度依据时间复杂度简要评价
RDPHausdorffO(nlogn)O(n \log n)快速粗略压缩
SimpleFréchetO(n)O(n)快速、实用、误差受控
Agarwal et al.FréchetO(nlogn)O(n \log n)点数最优但较复杂

# ✅ 5. 总结

本节课程围绕轨迹曲线的相似性与简化,重点内容包括:


# 📌 核心主题:

  • 介绍了 Fréchet 距离,它是一种考虑曲线连续性与顺序的相似性度量;
  • 特别适用于比较真实轨迹数据(如 GPS 路径、人和动物运动等)。

# 🔧 技术要点:

  1. 自由空间图:作为判断 Fréchet 距离是否小于某个阈值的几何工具;
  2. Fréchet 计算方法:包括判定算法与最优距离计算,时间复杂度最优为 O(mnlogmn)O(mn \log mn)
  3. 三种曲线简化算法
    • RDP(基于 Hausdorff);
    • Simple Simplification(线性时间、误差控制);
    • Agarwal 最优算法(结果点数近似最小)。

# 📈 应用意义:

  • 曲线简化 与 相似性比较 是空间数据分析中最常用、最重要的基础操作;
  • 广泛应用于轨迹挖掘、聚类、可视化、预测分析等实际任务。