OD算法清单
| 算法 | 你的掌握程度 | ADAS应用场景 |
|---|---|---|
| 合并区间 | 熟练 | 传感器视野重叠区合并、时间戳对齐区间合并 |
| 打家劫舍(环形DP) | 熟练 | AEB分级决策、路径规划的奖励最大化 |
| 最大子数组和 | 熟练 | 信号质量评估、连续帧置信度累积 |
| 岛屿数量(DFS/BFS) | 熟练 | 障碍物聚类、可行驶区域分割 |
| 括号匹配递归版 | 熟练 | 嵌套协议的解析(如CAN FD的包结构) |
| 螺旋矩阵III | 熟悉 | 传感器扫描轨迹、路径覆盖规划 |
| 字符串交替提取 | 熟悉 | 多路传感器数据流交织解析 |
| 十进制转二进制 | 熟悉 | 信号编码/解码、状态位映射 |
| 字母异位词分组 | 熟悉 | 传感器ID归一化、同义信号归类 |
学习路线(分三个阶段)
第一阶段:直接映射(你最熟悉的算法 → 最直接的ADAS应用)
**目标:** 让你立刻看到算法在ADAS中的用途,建立信心。
| 周次 | 算法 | ADAS应用 | 具体产出 |
|---|---|---|---|
| 第1周 | 合并区间 | 多传感器视野重叠区计算 | 写一个函数,输入多个雷达/摄像头的视野范围(区间),输出它们的重叠区域 |
| 第2周 | 打家劫舍 | AEB分级决策 | 用DP决定"是否刹车"以及"刹多大力度",使安全收益最大 |
| 第3周 | 最大子数组和 | 信号质量评估 | 分析一段时间的传感器信号,找出最稳定的连续片段 |
| 第4周 | 岛屿数量 | 障碍物聚类 | 用DFS把激光雷达点云聚类成独立的障碍物 |
第二阶段:深入应用(需要一点领域知识的算法)
**目标:** 结合ADAS的专业场景,提升深度。
| 周次 | 算法 | ADAS应用 | 具体产出 |
|---|---|---|---|
| 第5-6周 | DFS/BFS | 可行驶区域搜索、泊车路径规划 | 在栅格地图上找出一条可行路径 |
| 第7-8周 | 螺旋矩阵 | 传感器扫描轨迹模拟 | 模拟激光雷达的螺旋扫描模式 |
| 第9-10周 | 位运算 | CAN信号解析 | 从CAN帧中提取车速、转速等信号(就是我们之前那道题) |
第三阶段:综合实战(多个算法组合解决一个完整问题)
**目标:** 把多个算法串联成一个完整的ADAS功能模块。
| 周次 | 项目 | 涉及的算法 | 具体产出 |
|---|---|---|---|
| 第11-12周 | 简易AEB系统 | 合并区间 + 打家劫舍 + 最大子数组和 | 输入模拟传感器数据,输出刹车决策和置信度 |
| 第13-14周 | 障碍物检测与跟踪 | 岛屿数量 + DFS + 合并区间 | 输入点云数据,输出障碍物列表和轨迹 |
| 第15-16周 | 综合Demo | 以上全部 | 一个完整的ADAS感知-决策流水线 |
本周任务(第1周):合并区间 → 传感器视野重叠区计算
问题描述
假设一辆车上有3个传感器:
- 前置摄像头:视野范围 -30°, 30°(相对于车头方向)
- 左前角雷达:视野范围 10°, 70°
- 右前角雷达:视野范围 -70°, -10°
问:哪些角度范围被至少两个传感器覆盖?
这就是典型的合并区间问题变体------不是合并所有区间,而是找出重叠次数 ≥ 2 的区域。
解法思路
-
将所有区间的端点标记为"起点"或"终点"
-
排序后遍历,用一个计数器记录当前被多少个传感器覆盖
-
当计数器 ≥ 2 时,记录当前区间
def find_overlap_zones(intervals):
events = []
for start, end in intervals:
events.append((start, 1)) # 起点,覆盖数+1
events.append((end, -1)) # 终点,覆盖数-1
events.sort() # 按位置排序count = 0 overlap_start = None result = [] for pos, delta in events: if count >= 2 and overlap_start is not None: result.append((overlap_start, pos)) overlap_start = None count += delta if count >= 2 and overlap_start is None: overlap_start = pos return resultsensors = [(-30, 30), (10, 70), (-70, -10)]
print(find_overlap_zones(sensors))输出:[(-30, -10), (10, 30)]