1.1.1 计算模型

程序员的工作是做什么呢?一般人的第一个想法大概是“构建算法并进行实现”。所以我们了解需求然后写代码,这是一般的看法。

我们可以创造一个算法来描述我们每天的例行事务么,例如出门郊游或者购物?这个问题听起来似乎不太难,相信很多人会开心地把他们的解决方案提供给你。

当然了,这些解决方案可能是大相径庭的。可能某一个方案会有例如“开门”或“拿钥匙”;另一个方案则是一个“离开屋子”的事件,而省略掉细节。还可能有不走寻常路的其它方案,会向你描述他的手和脚的动作细节,甚至是描述他的肌肉收缩模式。

这些方案的迥异是由于最开始的问题不够具体和完整造成的。

所有的想法(包括算法)都需要一种方式进行表达。如果需要描述一种新的概念我们就需要其它的简单概念来进行辅助。在这个过程中我们还需要避免概念的恶性循环,所以这种表达需要遵循金字塔形的原则。每个级别的阐述都是横向增加的。而且我们不能让金字塔无限增长,因为表达必须是有限的,所以我们需要在基础、原始的概念上完成表达而不要继续扩展下去。所以我们应该选择对任意概念进行表达的基础。

这也就是说我们有了基础的概念集合,才能够去表达算法的构建过程,这些基础就像建筑的基石。

计算的模型则是一系列的基本操作和相应的性能消耗。

这里的性能消耗一般是一个 int 型的数值,这样的数值被用来标明一系列组合的综合消耗。我们不会在本书中去讨论计算的复杂度。

很多计算模型都是抽象的机器。也就是说它们定义了一台假想的计算机,而这些模型的基本操作也就是这台计算机的指令。其它类型的模式,例如决策树,不在本书的讨论范围内。

results matching ""

    No results matching ""