算法是一种解决问题的系统性方案。所谓“系统性”是指,所要解决的问题必须被精确地定义,并且在任何算法被认为完整之前,必须要证明它的有效性并分析其性能。在很多情况下,算法中的所有巧思和复杂性都旨在提高速度(或减少内存使用),因此,确保算法能达到预期性能的证明至关重要。 在本课程中,您将学习包括各种已有的“前人之作”算法和数据结构,以应对计算机科学中常见的问题;但更有价值的是,您将学会如何发明新的算法和数据结构,以解决未曾被教授的复杂问题。实现这一目标的最佳途径是积极参与本课程,而不是被动地接受。为此,我们提出了三个难题,您可以尝试为这些问题设计合适的算法和数据结构。本课程其余部分将逐步向您展示解决这些问题的优秀方法,但如果您能在学习标准解法之前自行尝试(即便可能失败),那么您对这些答案及其适用性的理解将会更加深刻。