2020春 算法设计与分析 复习(1)

概述

  • 算法·Algorithm
  • 练习题
  • 思考题

算法·Algorithm

  • 算法定义
    有穷性/终止性、确定性、可行性、输入、输出
  • 问题定义
    输入和输出的关系
  • 计算复杂性理论
    固有复杂性,上界复杂性,下界复杂性,平均复杂性,复杂性问题分类:P=NP?,抽象复杂性研究
  • 算法正确性分析
    对于每一个输入是否都最终停止?且是否产生正确的输出?
    不停止或产生不正确结果,都是不正确算法
    注:近似算法对所有输入都停止,但产生近似正确的解或产生不多的不正确解
  • 算法复杂性分析
    目的:预测算法对不同输入所需资源量
    复杂性测度:时间、空间、I/O,是输入大小的函数
    用途:为一个求解问题 选择最佳算法和最佳设备
    数学基础:离散数学、组合数学、概率论、代数
    复杂性分析的度量:输入大小、时间复杂性(是输入大小的函数)、空间复杂性、最坏复杂性(max)、最小复杂性(min)、平均复杂性(y∈Input,y作为算法A的输入出现的概率是Py,A的平均复杂性是 Γ ( z ) = Σ P y ∗ c o m p l e x i t y ( s i z e ( y ) ) \Gamma(z) = Σ Py*complexity(size(y)) Γ(z)=ΣPycomplexity(size(y))
  • 算法设计模式
    暴力搜索,分治法,图搜索与枚举(分支界限、回溯),随机化方法
  • 算法实现方法
    递归与迭代,顺序、并行与分布式,确定性与非确定性,近似求解与精确求解,量子算法
  • 最优化算法设计方法
    线性规划,动态规划,贪心法,启发式方法

练习题

(1). 用伪代码写出求整数最大公因子的欧几里得算法。

1.输入两个数m,n
2.if(m>n),求余数m%n
3.若余数不为0,用n替代m,用余数替代n => 重复2
4.若余数为0,则n就是最大公约数

例如,求81和21的最大公约数:
81/21=3…18
21/18=1…3
18/3=6…0
∴最大公约数为3

(2). 考虑如下伪代码
F(n)
1 if n=1
2 then return 1
3 else return n*F(n-1)
请说明F(n)的功能

斐波那契数列计算乘积
例如,n=5时:
return 5xF(4)=5x4xF(3)=…=5x4x3x2x1=120

(3). 时间复杂度是否是衡量一个算法性能的主要标准,为什么?

衡量一个算法性能原则上无标准。【时间、空间、IO、并行性】复杂度;内存算法中【时间、空间】占主导

(4). 包含死循环的程序是不是算法,为什么?

不是。有穷性?

(5). 是否可以通过提高算法的时间复杂性来降低其空间复杂性?

时空互换:时间复杂度<->空间复杂度
动态规划:空间换时间【台阶问题的动态规划】

思考题

(1).在信息产业中算法扮演什么角色?

算法是计算机科学基础的重要主题(啥玩意儿…)

你可能感兴趣的:(算法)