跳转到内容

计算机科学基础/算法设计

来自维基教科书,开放的书籍,开放的世界

算法设计

[编辑 | 编辑源代码]

算法设计 是一种创建解决问题的数学过程的特定方法。在解决魔方(任何尺寸)时,可以看出算法设计的一个有力例子。在解决魔方(任何尺寸)时,了解逐步的指令或算法来达到有效的解决方案非常重要。这就是算法设计发挥作用的地方。有一些设计可以将看似复杂的解决方案分解,通过解决每一层(首先,中间和最后以及颜色)来解决问题。

请点击链接,了解如何解决 3X3魔方 的最后一层。

算法设计方法

[编辑 | 编辑源代码]

自顶向下

[编辑 | 编辑源代码]

自顶向下的设计方法是从检查整个问题开始的,或者可以认为是从先看大图/整体开始。一旦你评估了主要问题,然后你将问题分解成更小的组件或部分。

自顶向下方法的下一部分是开始测试。最初,由于我们专注于更大的图景,所以会有一些部分缺失。在某些情况下,问题的某些部分没有被解决,这时会使用存根或占位符作为临时占位符。

从某种意义上来说,自顶向下方法就像一个将军指挥他的军队。将军会分解任务,为每个士兵分配一个特定的任务来完成,而这个任务反过来又对整个任务的至关重要部分做出贡献。

自底向上

[编辑 | 编辑源代码]

自底向上的算法设计方法从问题的最小单元或部分开始。这种方法首先解决最小的单元,然后逐步构建下一层或解决方案。使用这种方法可以确保最小的单元已经成功测试,因此,当你开始解决或实现下一个子解决方案时,由于前面的层已经成功工作,所以它会工作。

一个例子是造汽车。汽车的每个部件都经过设计、制造和测试。知道较小的部件能够正常工作,这些部件就会在装配线上逐步添加。随着部件的添加,你就会知道,由于对每个部件进行了彻底的测试,所以较小的部件能够正常工作。最终,当你完成这个过程时,最终的结果是一辆能够正常工作的汽车。

算法设计:构建模块

[编辑 | 编辑源代码]

算法设计中涉及一些基本的逻辑结构和操作。构建模块对于决定我们希望如何操作工作单元是必要的。每个算法的基础都是步骤或操作块。这些步骤/操作块可以像将两个数字加在一起一样简单。但是,这些操作块也可以很复杂,例如,在一个数字列表中找到最大值。

逻辑结构对于将步骤组织成一个过程/解决方案至关重要。以下四个基本的逻辑结构描述了用于创建算法的块类型

  • 过程/函数调用 - 一个例子是 Scratch 中的一个单一模块
  • 序列 - 为了创建一个序列,你需要一个模块堆栈
  • 备选方案 - 使用 if-then-else 模块来指示特定问题的备选解决方案
  • 迭代 - 使用“重复”、“for”和“永远”模块来构建循环以解决问题

大多数语言都有用于基本操作和逻辑结构的编程结构。为了理解编程结构,你必须首先了解 人工语言。根据维基百科的定义,人工语言是“一种其语音学、语法和词汇是为人类或类人生物交流而有意识地设计的语言,而不是自然形成的”。类似地,编程结构 是“为了向机器(特别是计算机)传达指令而设计的”。

华夏公益教科书