吴军《计算之魂》第九章:等价性与因果关系-笔记
9.1 从问题到状态

解决这个问题的关键是要搞清楚老鼠所有可能的位置可以等价为几种可能的状态,答案是两种,如图所示:

解法:假设老鼠第一天在 (2,4) 状态,
第1天:可以在2、4之间随便打开一个,比如2,如果老鼠碰巧在2中,直接结束。如果在4中,那么老鼠第二天必在3或5;
第2天:打开3,如果老鼠在3,直接结束,如果不在,那么老鼠肯定在5,第三天必在4
第3天:打开4,直接抓住结束
第4天:如果3天后未果,说明一开始的假设错误,说明老鼠第一天在 (1,3,5) 状态,但如今已经第4天了,由转换图可知第4天老鼠必在 (2,4) 状态,直接按照第1-2-3天的流程再走一遍即可,因此最多6天老鼠必落入法网。

9.2 等价性:抽象出状态的工具


1)矢量量化(Vector Quantization, i.e. VQ):将物理性质投射到几个主要维度中,比如投射到形状、颜色、大小和旋转角度等维度中,记为<w,x,y,z>。这样能够对落入同一份矢量中的东西进行合并,并产生富有价值的信息。

信息矢量化的应用场景主要在信息压缩方面,比如计算机上显示的矢量字库、矢量图等。另外在语音的压缩编码和识别、图像压缩、信号检测以及通信标准的制定上也都要用到。
2)傅立叶变换(Fourier Transform):人发音的读音波形记录的是在任何一个时刻的声波强度,这种方式记录的语音信号被称为【时域信号】:

如果里面有噪声则无法滤除,但傅立叶变换提供了另一种记录声波信息的方式,即记录每一个频率下信号的强度和相位,被称为【频域信号】。对于该类信号,则可以过滤掉不属于语言频率范围的全部信号(即噪声,如交流电信号、宇宙辐射信号、电路接触不良的脉冲信号)。
不仅语音可以这样处理,存储照片也可以用到等价信息,常用的图片JPEG格式,就是把空间信号变成等价的频率信号,以压缩图像大小。

9.3 因果关系:建立状态间的联系
利用【图论】这个工具将状态之间的因果关系清晰的描述出来,可以帮助解决一些复杂问题:

图(a)中初始状态出发的三种状态中,因为考虑到B和D、b和c的性质相同(即对称),可以将B/b、C/c的各种情况合并到一起:

如何将具体问题变成计算问题,才是计算机从业者需要解决的问题。需要做好控制,就需要有清晰的逻辑和系统的方法。将问题中的各种情况抽象成状态,将大量看似无关的情况用少数状态覆盖,在理清状态之间的逻辑关系,是计算机从业者所应具备的能力。