本讲是《CSP复赛专题15-搜索2》,承接专题14 的 DFS。学生在上一讲已经会写"一条路走到黑 + 回溯", 但两个问题没解决:一是跑得慢(搜索树指数爆炸),二是求不出最优(DFS 找到的解未必最短)。 本讲正是针对这两个痛点给出两套武器:剪枝与 BFS。
| 环节 | 页码 | 教师活动 | 学生活动 | 时间 |
|---|---|---|---|---|
| ① 复习引入 | P2 | 复述 DFS 三个动作,抛出"深 15 层 3 分支 = 1400 万节点"的量级冲击 | 估算自己上一讲代码的节点数 | 4′ |
| ② 五种剪枝 | P3–4 | 逐条讲策略,动画①现场对比访问 10 个 vs 剪掉 4 个 | 先猜剪掉多少,再看动画揭晓 | 8′ |
| ③ BFS 核心 | P5–7 | 讲"入队即判重"与"首次到达即最优",动画②盯队列 | 口述队列每一步的变化 | 9′ |
| ④ 八皇后 | P8–10 | 降维建模 → 三数组判冲突 → 动画③逐行试放 → 代码走读 | 上台指出下一次该试哪一列 | 12′ |
| ⑤ 抓住那头牛 | P11–12 | 建模为无权图最短路,动画④看距离圈层扩散 | 先猜 5→17 几步,再验证 | 7′ |
| ⑥ 小猫爬山 | P13 | 三种剪枝同时上场,动画⑤演示 | 说出每条剪枝对应哪一步 | 3′ |
| ⑦ 辨析检测 | P14–16 | 动画⑥同图对照,四道检测题 | 完成检测,互评 | 2′ |
cum >= best 却在 best 未初始化时(初值 0)剪光整棵树。
课上必须强调 best 初值为无穷大,且只在代价单调不减时才成立。