算法导论章节总结(1.2)

提要:总结基于算法相关PPT ##introduction

1.1 算法

定义:良定义(well-defined)的计算过程.一个算法是一个计算步骤的序列,将输入转化为输出。 这里写图片描述

举例:

插入排序 - Input 具有n个数的数列 < a1, a2, …, an> - Output 上述序列的一个排列< a1’, a2’, …, an’>满足关系:a1’≤ a2’≤ … ≤ an’
【伪代码】使用最清晰、最简洁的表示方法来说明给定的算法。不关心软件工程的问题,为了更简洁地表达算法的本质,尝尝忽略数据抽象、模块性和错误处理的问题。
INSERTION-SORT(A) for j=2 to A.length key=A[j] i=j-1 while i>0 and A[i]>key A[i+1]=A[i] i-- A[i+1]=key
【循环不变式】我们把A[1..j-1]这些性质形式地表示为一个循环不变式。 主要用来帮助我们理解算法的正确性。他有以下三条性质:

  • 初始化:循环的第一次迭代之前,它为真。
  • 保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。
  • 终止:循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。

1.3 分析算法

目的:预测算法需要的资源,选取有效的算法(时间、空间、通信带宽等)
计算模型单处理器计算模型——随机访问机(RAM),指令一条接一条的执行,没有并发操作 【插入排序算法的分析】
时间分析 - 运行时间 用基本操作的数目(执行步数)来度量;(好处是算法分析独立于机器,即任何基本操作看作是单位时间) 用更接近实际的计算机上实现的时间来度量;(如RAM模型,不同的指令具有不同的执行时间) 但两者相差一个常数因子。

  • 最坏时间 最坏运行时间指Size为n时任何输入的最长运行时间。
  • 平均运行时间 常常假定一个给定Size的所有输入是等概率的。实际上这种可能并不一定成立,但可以用随机化算法强迫它成立。
  • 有时平均时间和最坏时间不是同数量级,算法选择依据是,最好、最坏的概率较小时,尽量选择平均时间较小的算法。

猜你喜欢

转载自blog.csdn.net/zongzi13545329/article/details/64158866
今日推荐