算法研究生课程学习笔记

一.算法相关概念

1.基本概念

算法(algorithm)是一个(由人或机器进行)关于某种运算规则的集合。是对特定问题求解步骤的一种描述,是指令的有限序列。

输入——> {规则}——>输出

确定性:清晰,无歧义

有限性:指令执行次数、时间

特点:

  • 执行时,不能包含任何主观的决定;
  • 不能有类似直觉/创造力等因素。

具有下列5个特性:

  • 有穷性:算法有限步结束,指令有限时间完成
  • 确定性:每条指令都是明确的、无二义的
  • 可行性:每条指令都能够被执行
  • 输入:有0个或多个输入量
  • 输出:有1个或多个输出量

2.算法的衡量尺度

最初,用所需计算时间来衡量算法的好坏,但是,不同的机器相互之间无法比较。所以需要独立于具体计算机的客观衡量标准。如:问题的规模,基本运算,算法的计算量函数。也可以通过时间复杂度(基本运算执行次数)和空间复杂度(需要的存储空间大小)。

1.问题的规模

  • 一个或多个整数,作为输入数据量的测度

  • 数组的长度(数据项的个数)

  • 矩阵的最大维数(阶数)

2.输入规模通常用n来表示

  • 也可有两个以上的参数,如图中的顶点数和边数 (图论中的问题)

3.基本运算

  • 解决给定问题时占支配地位的运算。
  • 在一个表中寻找数据元素x
  • 两个实矩阵的乘法
  • 将一个数组进行排序

通常情况下,讨论一个算法的优劣时,我们只讨论基本运算的执行次数。因为他是占支配地位的,而其他的运算可以忽略不计。

4.算法的计算量函数

用输入规模的某个函数来表示算法的基本运算量,该函数称为算法的时间复杂性(度),一般用T(n)或T(n,m)等表示。如:T(n) = 5n, T(n) = 3n*logn, T(n) = 4n3, T(n) = 2n, T(n,m) = 2(n+m).

最坏情况时间复杂性

规模为n的所有输入中,基本运算执行次数最多的时间复杂性。

如:在一个顺序表中寻找数据元素x。顺序查找:最坏情况为O(n); 二分查找:最坏情况为O(logn)。

平均情况时间复杂性

规模为n的所有输入的算法时间复杂度的平均值(一般均假设每种输入情况以等概率出现).

如:在一个顺序表中寻找数据元素x。顺序查找:评价情况仍为O(n); 二分查找:平均情况仍为O(logn)。

0%