Files
mcm-26-b/1.md
T
2026-09-10 20:46:45 +08:00

152 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
下面把现有《B题建模分析与实施计划》拆成可执行任务,并逐项检查设计思路。总体结论:**主线设计是对的,四问串联、保守几何、覆盖证明、协议幂等这些方向都合理;但有几个关键点需要补强,尤其是问题2候选区域非空性、定向源朝向不确定性、现实20分钟窗口下的请求数控制,以及正式测试时间安排。**
---
## 一、总体判断
现有方案的最大优点是:
1. **四问没有割裂**:问题1的定位区域和包围圆服务于问题2选点,问题3的覆盖发现与清除框架延伸到问题4。
2. **坚持保守性**:用有界误差、半平面交、最小包围圆、49点覆盖证明,避免“看起来能清”但实际漏源。
3. **协议与状态意识强**:强调 `accepted=false` 不更新状态、重试复用 `request_id`、`/clear` 不切换频道、虚拟时间公式。
4. **停止条件严格**:没有把“发现10个源”或“连续无信号”当成功。
主要风险:
- **问题2的候选区域 \( \mathcal Q \) 可能为空**,需要补非空判断和退化策略。
- **定向源第4问中 `no_signal` 不能直接删除空间候选点**,现有基线保守但效率低,需明确后备清除的规模和请求预算。
- **现实20分钟窗口**下,49点×20频道最多980次检测,可能请求数过大;虚拟时间不是瓶颈,网络延迟和程序运行时间才是。
- **正式测试机会少**,9月13日截止,必须尽早演练并保留正式机会。
---
## 二、任务拆分:可执行清单
建议按下面 P0–P7 拆分,每阶段都有明确交付和验收。
| 阶段 | 任务 | 交付物 | 验收标准 | 优先级 |
|---|---|---|---|---|
| P0 规则固定 | 核对题目、附件1/2、协议、计时、日志要求 | 规则表、状态机、字段表 | 计时示例能逐步得到附件给定值;`/clear` 不切换频道;`accepted=false` 不更新 | 最高 |
| P1 协议基线 | 实现 `/enter`、`/detect`、`/clear`、`/exit`;串行、幂等重试、超时 | 可运行客户端、自建回放测试 | 失败重试不污染状态;虚拟时间与公式一致;能主动退出 | 最高 |
| P2 几何内核 | 角域半平面表示、半平面交、凸多边形、直径、最小包围圆 | `geometry` 模块、测试用例 | 处理0°/360°跨界、空集/单点/线段/无界;等边三角形反例通过 | 最高 |
| P3 问题2选点 | 构造 \(K_1\),计算候选区域 \( \mathcal Q\),采样评估后验包围圆 | 第二检测点策略、候选区域算法 | 保证收到信号;\( \mathcal Q\) 为空时有退化方案;near分支处理 | 高 |
| P4 问题3全向闭环 | 49点覆盖、逐频道覆盖记录、发现—定位—清除—停止 | 全向演练版本、统计脚本 | 10源和16源都能正确退出;边界朝外不漏;停止条件正确 | 最高 |
| P5 问题4定向扩展 | 定向源覆盖证明、失去信号处理、20m圆盘后备清除 | 定向演练版本 | 边界朝外定向源能发现;失去信号后能清除;不误删真源 | 高 |
| P6 加速与消融 | 共享检测、自适应覆盖、目标排序、提前清除 | 消融实验记录 | 全清不退化;虚拟时间/请求数有改善证据 | 中 |
| P7 正式与论文 | 演练、正式各3次、日志原名、表1、论文 | 6次正式记录、原始日志 | 案例编码、程序版本、统计一致;日志上传成功 | 最高 |
时间紧时,**P6 可删减,P0–P5 必须保留**。
---
## 三、设计思路逐项检查
| 设计点 | 判断 | 需要补强/注意 |
|---|---|---|
| 四问统一框架 | 合理 | 问题1和2的几何结果要直接复用到3、4,避免重复建模 |
| 有界误差±1°、示向度两位小数 | 正确 | 实现可加±1.005°保守裕量,但不能写成题面规定 |
| 同地点误差固定 | 正确 | 不能原地重复测量取平均 |
| 角域半平面交 | 正确 | 必须处理0°/360°跨界;区分空集、单点、线段、有限多边形、无界 |
| 直径枚举 | 正确 | 小规模枚举顶点对即可;无界区域不能截断后声称直径 |
| 以直径为直径的圆覆盖区域 | **不能保证** | 等边三角形反例正确;保证清除要用最小包围圆 \( \rho(K)\le20 \) |
| 问题2候选区域 \( \mathcal Q \) | 方向正确 | \(K_1\) 应加 \( \Omega \) 和 \(B(s_1,1500)\) 约束;\( \mathcal Q\) 可能为空,需退化策略 |
| 外包圆候选 \(B(c,1000-r)\) | 正确 | 仅当 \(r<1000\) 时非空;若 \(r\) 接近1000,区域很小 |
| “候选点距第一次检测点不超过1000米” | 错误表述 | 计划已指出,正确是“到 \(K_1\) 中任意可能位置距离不超过1000米” |
| 49点覆盖 | 证明成立 | 需实现网格边/顶点规则;全向和定向都适用;全 no_signal 可证明该频道不存在 |
| 49点扫描规模 | 估算合理 | 虚拟时间约3.665小时,但现实20分钟受请求延迟约束 |
| 定向源 `no_signal` | 不能直接删除空间候选点 | 基线可只记录覆盖,不删点;加速版再维护朝向可行集合 |
| 定向源后备清除 | 思路可靠 | 候选集合有界后,用边长20m小方格中心,中心到格内点≤10√2<20,逐点 `/clear` |
| 停止条件 | 严格正确 | 清除16个不同频道,或每频道清除成功/完整覆盖证明不存在 |
| `/clear` 不切换频道 | 正确 | 清除后当前测向频道不变,影响下一次切换耗时 |
| 协议幂等 | 正确 | 重试同 `request_id` 和完全相同内容;`accepted=false` 不更新状态 |
| 现实预算 | 关键风险 | 用 `remaining_real_duration_s` 管理;预留退出和故障恢复;日志≤2MB |
| 正式测试 | 时间紧 | 问题3和4各3次;建议9月13日15:30前完成,17:30后不能启动新测试 |
---
## 四、重点补强建议
### 1. 问题2:候选区域必须明确非空处理
建议把第一次测向后的候选集合写清楚:
\[
K_1=\Omega \cap W(s_1,\theta_1\pm\delta)\cap B(s_1,1500)
\]
其中 \(W\) 是角域,\(\delta\) 取 \(1.005^\circ\) 保守裕量。
然后:
\[
\mathcal Q=\{q:\max_{g\in K_1}\|q-g\|\le1000\}
\]
若 \( \mathcal Q\neq\varnothing \),在其中采样选点,评估最坏后验包围圆半径和移动成本。
若 \( \mathcal Q=\varnothing \),则退化为:
\[
q^*=\arg\min_q \max_{g\in K_1}\|q-g\|
\]
即选一个使最坏接收距离最小的点,同时结合交会角筛选。
若 \(K_1\) 的外包圆为 \(B(c,r)\) 且 \(r<1000\),则 \(B(c,1000-r)\) 是更简单的充分候选区域。
### 2. 问题4:定向源不要过早依赖 `no_signal` 删点
第4问中,`no_signal` 只说明“当前位置、接收半径、朝向”联合假设下不可见,不能单独排除位置。
基线策略建议:
- 用49点覆盖保证发现;
- 发现后主动测向缩小候选;
- 若失去信号,不再强行靠 `direction` 追踪,而是对当前有界候选集合做20m圆盘覆盖,逐点 `/clear`;
- 若时间允许,再维护朝向可行集合,减少无效检测。
### 3. 现实20分钟:请求数比虚拟时间更关键
49点×20频道最多980次检测,若每次网络延迟0.5–1秒,现实时间可能超过8–16分钟。
建议:
- 已清除频道不再检测;
- 已发现待定位频道可暂停覆盖扫描;
- 共享检测位置:到一个点后顺便测多个未知频道;
- 自适应覆盖:根据 no_signal 覆盖记录跳点,但必须保持证明完整;
- 正式测试前实测接口延迟、日志大小、总请求数。
### 4. 问题1:直径圆覆盖判断可给更明确算法
对凸多边形 \(P\):
- 先求直径 \(D=\max_{i,j}\|v_i-v_j\|\);
- 枚举所有顶点对作为候选直径,检查其余顶点是否都在以该对为直径的圆内;
- 若存在一个直径对使所有顶点在圆内,则覆盖;否则不覆盖;
- 但保证清除时不要用直径圆,要用最小包围圆 \( \rho(K)\le20 \)。
---
## 五、建议的最小可行路线
如果时间不足,按这个顺序做:
1. **P0+P1**:协议、计时、状态更新、幂等重试。
2. **P2**:角域交、直径、最小包围圆。
3. **P3**:问题2候选区域和选点。
4. **P4**:问题3全向闭环,49点覆盖,发现—定位—清除—停止。
5. **P5**:问题4定向扩展,后备清除。
6. **P7**:演练后尽早正式测试。
可删减:P6中的复杂调度、朝向联合维护、学习型策略。
不可删减:覆盖证明、停止条件、协议幂等、日志、正式测试。
---
## 六、结论
现有设计思路**整体可行且偏保守**,适合竞赛中“先保证全清,再优化时间”的目标。
最需要立即补强的是:
1. 问题2中 \(K_1\) 和 \( \mathcal Q\) 的严格定义及空集处理;
2. 问题4中定向源朝向不确定性和 `no_signal` 的正确使用;
3. 现实20分钟窗口下的请求数控制;
4. 正式测试时间安排,务必尽早演练并保留正式机会。
下一步最有价值的工作仍然是:**协议计时基线 + 几何内核 + 全向闭环**。完成这条链路后,再用演练数据决定是否加入加速策略。