编程珠玑第十章探讨

这一章的内容很贴近实际。一方面我们的确要面对现实,不可能永远都有充足的存储空间;另一方面,数据空间的压缩有时不是只有单一的含义,这里的数据可能指代状态空间的总数,也就是说,此时对于数据空间的优化,是与时间挂钩的。不过,更常见的情景依旧是时间换空间,空间换时间。鱼和熊掌不可得兼,考虑哪个更加重要进而作出优化的判断。

重新计算、稀疏结构、信息理论、分配策略;函数定义、解释程序、翻译

问题探讨

1.这个问题可以理解为,原始压缩的数据在被处理时需要的指令相对比较多,可以类比「重新计算」。但是把压缩去掉后就是原始数据,无需解压操作,面对这类数据时,指令数会减少不少,所以代码空间少了很多。

6.这个编码思想我觉得非常重要,信息论本身在我们的生活中体现着很重要的作用,对于编码的研究不但可以更高效的存储,还可以在通信领域施展拳脚。譬如数据压缩技术,我们现在享受的互联网多媒体:在线的音乐、视频、图片,以及未来的「流游戏(神罗公司)」五一不为了更快速的传输对原本庞大的体积进行了压缩,将这种思想用于程序,当然我们也能得到不菲的回报。

反思

尽管我们有时候不得以在时间和空间中二选一,但是有时候也许会有完美的状况发生:时间空间都恰到好处。不过这种完美是片面的,往往会伴随着「复杂」,在本章的边栏文摘中就体现了这一点,Ken Thompson 为国际象棋分析程序优化数据空间而使用了一种相对繁杂的分析手段,如果你做过USACO,就知道USACO 1.5.4 checker,也就是第一章最后一题,就可以使用这种发掘棋盘对称性的技术从而优化状态空间提升速度。如果空间相当重要,我们自然也不会吝惜那一点复杂。