← 揭开黑盒:理解系统的调查课堂

第二章 · 计算机选择的数学 / 章末交付 · 通往算法课堂的接口

算法课堂接口:带着问题与证据出发

走到这里,你已经看见同一计算可以有不同的形状。数怎样表示,数据怎样排列,工作怎样分配,结果需要多准,都会影响算法的选择。

独立的“算法课堂”将在这里接续,进一步系统学习算法思想、正确性论证、复杂度和数据结构。本篇是已经可以使用的交付接口;独立课程现已建立,从 换一种算法到底换了什么 开始。

本篇保留任务单与路线清单,作为从本章进入那门课的入口:你在这里写下的任务单,就是那边第一单元要接手的东西。

预计用时:45 分钟。选择本章的一个任务,完成下方任务单。可复制 算法课堂接续模板。

把兴趣变成一个能研究的问题

不要只写“我要学更快的矩阵乘法”。可以写成:输入是两个多大的矩阵,元素来自什么范围,使用什么设备,结果要用于什么,允许怎样的误差,计算会重复多少次。

同一个名字下面可能有不同的问题:计算一次、反复计算,稠密、稀疏,精确整数、有限精度,低延迟、大吞吐。明确这些条件之后,候选算法才有共同的比较标准。

接续任务单

字段本章结束时应交付的内容
输入与输出数据形状、范围、规模,输出的具体含义
正确性独立参考或可检查性质;允许的误差;错误输入
基线实现一份清楚、可运行的起点,以及源文件版本
候选变化改公式、改顺序、改表示、预处理、并行或近似中的哪一项
成本账本计算、搬运、准备、存储、同步和维护成本
实验设计固定什么,改变什么,如何记录相反结果
证据原始样本、环境、实际计时边界与失败路径
未解决的问题哪个原因还没排除,下一次该打开哪一层

可视化实验导出的 JSON 负责保留样本和当时预测。任务单负责说明它们支撑怎样的判断;两者互相链接,不能用一张漂亮的性能图代替正确性说明。

可以继续打开的算法路线

从本章的问题出发独立课堂可以进一步展开
改循环与分块仍不够分治、快速矩阵乘法、渐近复杂度与交叉规模
重复查询越来越多排序、查找、哈希、树、动态更新与摊还分析
数据大量为空或有结构稀疏矩阵、图表示、压缩与局部性
长计算链挡住并行归约、扫描、依赖图、并行算法与通信复杂度
迭代如何更快接近答案求根、优化、数值稳定性与收敛条件
近似能换来什么随机化、采样、误差界与概率保证

这些是后续问题清单,本章没有宣称已经实现所有对应算法。算法课堂接续时,应从一个具体问题开始,增加新的方法与证明,而不是重复本章的五组展示。

独立课程已按这条约束起步:第一单元接着本章第六单元的矩阵乘法,从「改循环与分块仍不够」进入 减法从哪一步开始,增加递推式、交叉规模与一次可复核的实测,不重复五组展示。

章末迁移:没有参考排名的选择

给你两项新需求,任选一项:

  1. 一份数值记录每天更新一次,却要被查询上万次。你会把准备工作放在哪里,怎样识别旧版本,怎样核对浮点求和误差?
  2. 一个设备不断产生小批数据,希望界面及时更新。你会直接算、积攒成批,还是交给其他执行者?如何同时比较延迟、吞吐和异常恢复?

交付两套候选方案、一个可运行基线和一次能区分解释的实验。不要求猜中某个预设赢家;要求结论能够被别人检查,且能说清另一种输入或约束何时会改变选择。

留给下一章的另一条线

“算法课堂”将沿计算方法深入。“揭开黑盒”的下一章则计划转向实操:给现实中的物品注入灵魂。

设想一个能感知、保持状态、作出判断并反馈的物品。第一章提供保存、状态与通信的边界;第二章提供计算、延迟和误差的选择依据。接下来可以将它们连接成“感知 → 状态 → 判断 → 动作 → 再感知”的反馈循环。

目前这只是后续建设方向,具体物品、硬件与交互目标尚未选定。结束本章时,可以先写下一件你想赋予行为的普通物品,以及它需要感知什么、怎样回应、什么情况下应保持安静。真正的装置将在下一章选题后逐版建设。