苏运霖
高德纳的《计算机程序设计艺术》,始于1968年,而且很快就把前三卷完成了。人们原来认为,接下来出版的自然应该是第4卷了,然而,事实并非如此。近40年过去了,他对第1卷作过多次修改并再版。第2、3卷,也都分别至少作了一次修改和再版。而且如他所宣称的那样,每次修改,不论是哪一卷,都涉及几乎所有页面。在此期间,他又发表了大量的论著,特别是完成了METAFONT和TEX(为计算机排版技术作出巨大贡献)和著名的《公理与外壳》和《具体数学》等著述。但是对于第4卷,却迟迟未闻任何信息。只是后来才听说,第4卷将分为三个分卷出版,但也未见任何一卷问世。直到此前,人们才终于见到我现在译出的这第2册和第3册。至于后边还有多少分册,仍不得而知。
但正因为是经过几十年才出来的东西,因此它就不同凡响,是名副其实的专著和经典之作。作者在前言写道:“我怀着非常喜悦的心情来写这些材料,就像许多年前写第2卷时我感觉到的激动那样。如同在第2卷中,在那里我高兴地看到,初等概率论和数论的基本原理很自然地出现在关于随机数生成和算术运算的研究中。而在准备7.2.1节的过程中我了解到,当我们研究组合生成的算法时,初等组合学的基本原理也自然地出现,并且具有高度启发性。”他感到有许多美丽的故事等待他来讲述。
关于生成基本的组合模式的问题
乍一看去,无论是生成所有n元组,还是生成排列,这些都不过是很简单的、属于已经解决了的问题,再无什么遗留问题需要研究。然而,经过作者点拔,才发现事实上问题绝非我们所想象的那么简单。作者在提出对于这个问题的研究动机时指出,任何明智的人都不会想要通过几千张纸来打印出{0,1&