走到这里,你已经看见同一计算可以有不同的形状。数怎样表示,数据怎样排列,工作怎样分配,结果需要多准,都会影响算法的选择。
独立的“算法课堂”将在这里接续,进一步系统学习算法思想、正确性论证、复杂度和数据结构。本篇是已经可以使用的交付接口;独立课程现已建立,从 换一种算法到底换了什么 开始。
本篇保留任务单与路线清单,作为从本章进入那门课的入口:你在这里写下的任务单,就是那边第一单元要接手的东西。
预计用时:45 分钟。选择本章的一个任务,完成下方任务单。可复制 算法课堂接续模板。
不要只写“我要学更快的矩阵乘法”。可以写成:输入是两个多大的矩阵,元素来自什么范围,使用什么设备,结果要用于什么,允许怎样的误差,计算会重复多少次。
同一个名字下面可能有不同的问题:计算一次、反复计算,稠密、稀疏,精确整数、有限精度,低延迟、大吞吐。明确这些条件之后,候选算法才有共同的比较标准。
| 字段 | 本章结束时应交付的内容 |
|---|---|
| 输入与输出 | 数据形状、范围、规模,输出的具体含义 |
| 正确性 | 独立参考或可检查性质;允许的误差;错误输入 |
| 基线实现 | 一份清楚、可运行的起点,以及源文件版本 |
| 候选变化 | 改公式、改顺序、改表示、预处理、并行或近似中的哪一项 |
| 成本账本 | 计算、搬运、准备、存储、同步和维护成本 |
| 实验设计 | 固定什么,改变什么,如何记录相反结果 |
| 证据 | 原始样本、环境、实际计时边界与失败路径 |
| 未解决的问题 | 哪个原因还没排除,下一次该打开哪一层 |
可视化实验导出的 JSON 负责保留样本和当时预测。任务单负责说明它们支撑怎样的判断;两者互相链接,不能用一张漂亮的性能图代替正确性说明。
| 从本章的问题出发 | 独立课堂可以进一步展开 |
|---|---|
| 改循环与分块仍不够 | 分治、快速矩阵乘法、渐近复杂度与交叉规模 |
| 重复查询越来越多 | 排序、查找、哈希、树、动态更新与摊还分析 |
| 数据大量为空或有结构 | 稀疏矩阵、图表示、压缩与局部性 |
| 长计算链挡住并行 | 归约、扫描、依赖图、并行算法与通信复杂度 |
| 迭代如何更快接近答案 | 求根、优化、数值稳定性与收敛条件 |
| 近似能换来什么 | 随机化、采样、误差界与概率保证 |
这些是后续问题清单,本章没有宣称已经实现所有对应算法。算法课堂接续时,应从一个具体问题开始,增加新的方法与证明,而不是重复本章的五组展示。
独立课程已按这条约束起步:第一单元接着本章第六单元的矩阵乘法,从「改循环与分块仍不够」进入 减法从哪一步开始,增加递推式、交叉规模与一次可复核的实测,不重复五组展示。
给你两项新需求,任选一项:
交付两套候选方案、一个可运行基线和一次能区分解释的实验。不要求猜中某个预设赢家;要求结论能够被别人检查,且能说清另一种输入或约束何时会改变选择。
“算法课堂”将沿计算方法深入。“揭开黑盒”的下一章则计划转向实操:给现实中的物品注入灵魂。
设想一个能感知、保持状态、作出判断并反馈的物品。第一章提供保存、状态与通信的边界;第二章提供计算、延迟和误差的选择依据。接下来可以将它们连接成“感知 → 状态 → 判断 → 动作 → 再感知”的反馈循环。
目前这只是后续建设方向,具体物品、硬件与交互目标尚未选定。结束本章时,可以先写下一件你想赋予行为的普通物品,以及它需要感知什么、怎样回应、什么情况下应保持安静。真正的装置将在下一章选题后逐版建设。