# 寻路算法实验室（DeepSeek-V4.1-Flash-0731 · high · r01）

单文件静态网页，直接打开 [index.html](index.html) 即可运行。无后端、无 CDN、无远程字体或图片、无构建步骤，`file://` 与 HTTP 静态托管都能运行。

## 原始提示词

见 [完整原始输入](prompt.md)；任务正文与 [v1 任务正文](../../prompts/v1/prompt.md) 逐字一致。

## 实现要点

- 网格 31×19，四方向移动。算法为**真实搜索**而非固定动画：BFS 用先进先出队列；Dijkstra 与 A* 用二叉最小堆优先队列，A* 的启发函数为到终点的曼哈顿距离（最小单步代价为 1，因此可采纳）。
- 代价模型：起点代价不计入；进入普通格 +1，进入高代价格 +5。BFS 忽略地形代价，只按步数最少；Dijkstra 与 A* 按累计地形代价。
- 可视化：搜索前沿（蓝）、已访问节点（深蓝）、最终路径（黄线）、起点/终点标记，均可实时观察。
- 控制：运行 / 暂停 / 单步（每次正好展开一个节点）/ 速度滑块（指数映射，1 ~ 2048 次每秒）/ 清除搜索 / 重置地图。
- 编辑：障碍、橡皮、高代价地形、起点、终点五种工具，按住拖动可连续绘制；直接拖动起点或终点网格也可移动。**搜索期间编辑地图会立即停止并清除旧搜索**，避免混用旧状态。障碍不能覆盖起点与终点。
- 预设：空地图、经典迷宫（固定种子的递归回溯迷宫）、加权地形、封闭终点，均为固定种子，可重复。
- 渲染用 Canvas 2D 并按 `devicePixelRatio` 缩放，指针坐标经矩形变换换算，缩放后仍准确。

## 验收自测

用无头 Chromium 加载 `file://` 入口，切换算法与预设跑完整搜索后读取统计栏：

| 验收项 | 期望 | 实测 |
|---|---|---|
| 无障碍网格路径正确 | 步数 = 曼哈顿距离 28 | A* 28 步 / 代价 28；BFS 28 步；Dijkstra 28 步 |
| 封闭终点 | 明确不可达 | A* 与 Dijkstra 均显示「不可达」，展开 564 个可达节点后终止 |
| 加权地图 Dijkstra 与 A* 最小代价相同 | 相同 | 两者均为 36 步 / 代价 36 |
| BFS 展示步数最少路径 | 步数最少 | BFS 28 步（代价 44）；Dijkstra/A* 36 步（代价 36）——步数最少与代价最小确实分离 |
| 暂停真实控制 | 暂停后不再推进 | 暂停后展开节点 3 → 3 保持不变 |
| 单步真实控制 | 每次 +1 | 3 → 4，正好一个节点 |
| 起终点不可被障碍覆盖 | 绘制被忽略 | 在起点与终点上刷障碍后仍可正常搜索 |
| 移动端可编辑 | 可编辑 | 使用 Pointer Events + `touch-action: none`；390px 无水平溢出 |
| 搜索期间编辑清除旧搜索 | 归零 | 运行中点画布 → 状态回到「就绪」，展开节点归 0 |

数据取自页面统计栏，非人工填写。速度滑块实测最慢档约 1 步/秒、最快档可瞬间跑完。

## 运行与复盘

- 运行方式：浏览器直接打开本目录 `index.html`；或使用根目录 `npm run preview` 后的静态托管地址。
- 未使用网络资源，断网可用。
- 复盘：算法本身一次通过全部验收项。自查时发现一处真实缺陷——速度控制的最低档被「每帧至少推进一步」的下限覆盖，最慢也约 60 步/秒，与标签显示的 1 次/秒不符；已改为按速率累积并复测（最慢档 1 步/秒，暂停与单步仍精确）。这是首轮生成内部的自查修正，不属于部署适配，因此 `changes` 为空。

<!-- archive:start -->
## 当前归档信息（自动生成）

- 实验 ID：`pathfinding-lab--deepseek-v4-1-flash-0731-high-r01`
- 模型：DeepSeek-V4.1-Flash-0731；推理档位：high
- 类型：single-html；预览：static；网络：offline
- [完整原始输入快照](prompt.md) · [主题与其他版本](../../../../topic.html?id=pathfinding-lab)
- 输入记录：本次批量执行的完整指令 + 主题任务正文；正文与 demos/pathfinding-lab/prompts/v1/prompt.md 逐字一致。任务正文来源为 docs/test-cases.md，不含更早的对话上下文。
- 工具：Claude Code。模型名称由用户指定为 DeepSeek-V4.1-Flash-0731；会话内模型标识为 deepseek-flash[1m]。单会话直接执行，未委派子代理。Windows 11 + Node 22.16.0。首轮生成后仅修正自身缺陷（速度滑块最低档被强制为每帧至少一步），未做其他人工修改。
- 运行方式：浏览器直接打开本目录入口；CDN/外部素材需要联网。
- 费用记录：Deepseek 批次合计 2.71 CNY（11 个案例；批次 deepseek-v4-1-flash-0731-high-2026-10-13；未记录单案例费用）
- [主页面](../../../../demos/pathfinding-lab/runs/deepseek-v4-1-flash-0731-high-r01/index.html)

### 部署适配记录

- 迁移来源：F:\dev\ai-coding-demo-test（model-test-base 工作区）/demos/pathfinding-lab/runs/deepseek-v4-1-flash-high-r01；保留原测试轮次 r01 与完整输入快照。
- 迁移验收：通过本地 HTTP 实际入口补拍 desktop screenshot.png；390px 页面无横向溢出。静态入口也通过 file:// 直接打开检查。
- 模型与实验目录标识按用户确认更新为 DeepSeek-V4.1-Flash-0731；历史输入、评分、产物与迁移来源保留。
- 维护者于 2026-10-22 按 v3 对本轮桌面、手机及补充状态逐图重评并绑定 captures 证据；旧截图和 v2 评分见 catalog/score-reviews/2026-10-21-v3-source.json。未重跑模型或改写实验源码，截图不证明完整功能、算法、手势或性能。
<!-- archive:end -->
