《计算思维导论:程序设计思想与方法》——第10章:算法设计和分析

10.1 枚举法
  • 线性搜索
  • 求解不定方程

采用枚举策略设计算法的一般步骤:
(1)确定枚举对象、枚举范围和判定条件;
(2)枚举各可能解,逐一验证是否所需的问题解;
(3)尽量减小枚举范围,提高算法效率。

10.2 递归
  • 阶乘
  • 列表处理
  • 二分搜索
  • Hanio塔问题
    递归是非常重要的算法设计方法,在解决很多具有递归性质的问题、结构的时候,设计递归算法往往是直接而简单的。递归定义必须满足以下条件才是良定义:
    (1)有一个或多个无需递归的奠基情形;
    (2)递归总是针对规模更小的问题。
10.3 分治法
  1. 分治法(divide-and-conquer)是解决问题的一种常用策略,其思想是将难以处理的较大问题分解为若干个较小的子问题,然后分别解决这些子问题,并从子问题的解构造出原问题的解。
  • 选择排序
  • 归并排序
10.4 贪心法
  1. Prim算法的伪代码如下:
    (1)初始时所有地点标记为不可通达;
    (2)选择一个特定地点,标记为可通达;
    (3)重复下列步骤,直至所有地点都被标记为可通达:
    选择距离最近的两个地点,其中一个地点的标记是可通达,另一个地点的标记是不可通达。然后将这两个地点连接起来,并将原先不可通达的地点改标为可通达。
  2. Kruskal算法:
    重复以下步骤,直至所有地点都直接或间接地连通:
    将当前距离最近并且尚未连通地两个地点连接起来。
  3. 贪心法指的是这样一种问题求解策略:在求解过程地每一步都尽量作出在当前情况下局部最优的选择,以期最终能得到全局最优解。
  4. 贪心算法的一般模式是通过迭代(循环)来一步一步地进行贪心选择,从而缠身一个局部最优解,并将问题简化为更小的问题,最终的全局解由所有局部解组成。即:
    贪心算法模式:
    算法:
    输入:一个候选对象集合
    输出:由某些候选对象组成的全局解
    重复以下步骤,直至得到全局解:
    从候选对象中选择当前最优解,并加入到局部解中
10.5 算法分析
10.5.1 算法复杂度
  1. 通常只考虑算法所占用的CPU时间和存储器空间这两种资源。
  2. 所谓算法分析,就是分析特定算法在运行时所耗费的时间和存储空间的数量,分别称为算的时间复杂度和空间复杂度。
  3. 实际上,算法分析指的是分析算法的代码,估计出为解决问题需要执行的操作(或语句、 指令等类似概念)的数目,或称算法的“步数”。之所以分析算法步数,是因为:第一,步 数确实能反映执行时间——步数越多执行时间就越长;第二,算法的步数不依赖于平台,更 容易分析和比较。
  • 算法复杂度的大O表示法
    (1)如果f(n)是若干项之和,则只需保留最高次项,省略所有低次项;
    (2)如果f(n)是若干项之积,则可省略任何常数因子(即与n无关的因子)。
10.5.2 算法分析实例
  • 搜索问题的两个算法
  1. 线性搜索算法的思想是逐个检查列表成员,编码时可以用一个循环语句来实现。
  2. 二分搜索算法的主体也是一个循环,但该循环不是逐个检查列表数据,而是每次检查位 于列表中点的数据,并根据该中点数据与要查找的数据的大小比较情况来排除掉左半列表或 右半列表。接着对保留下来的一半列表重复进行这个“折半”过程。
  • 排序问题的两个算法
  1. 选择排序算法 首先找出全体数据中的小值,并将该值作为结果列表的第一个成员。其次,算法从剩余数 据中找出小值,并将该值作为结果列表的第二个成员。依此类推,直至产生有序列表。
  2. 归并排序算法的基本思想是 将列表一分为二,然后对两半数据各自排序,后再合并成一个列表。其中对两个子列表的 排序又是通过递归调用归并排序来实现的,终将分解到长度为 1 的列表,这时可直接进行 归并。
  • Hanio塔算法
10.6 不可计算的问题
  • 图灵机
    英国数学家 Alan Turing 于 1936 年发明了一种抽象机器用于研究计算的本质,人们称这 种机器为图灵机(Turing machine)。图灵机能够模拟算法式计算,即按预定的规则一步一步 执行基本指令的过程。现代计算机就是这样按照预定的程序一步一步执行指令的,因此可以 视为图灵机的具体实现。
    一个图灵机涉及以下一些要素:
    (1)纸带;
    (2)读写头;
    (3)符号表;
    (4)状态;
    (5)指令;
  • 停机问题
10.7 练习

书籍下载地址:https://download.csdn.net/download/qq_37590544/10959608

猜你喜欢

转载自blog.csdn.net/qq_37590544/article/details/87863290