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

8.9 KiB
Raw Blame History

下面把现有《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. 正式测试时间安排,务必尽早演练并保留正式机会。

下一步最有价值的工作仍然是:协议计时基线 + 几何内核 + 全向闭环。完成这条链路后,再用演练数据决定是否加入加速策略。