4.1-4.3算法与数据结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Towers(3, A, C, B)
Towers(2, A, B, C)
Towers(1, A, C, B)
Towers(2, B, C, A)
软件
技术
基础
void Towers (int n, char Source, char Target, char Interm) { if (n==1) printf(“From %c to %c\n”, Source,Target); else { Towers(n-1, Source, Interm, Target); Towers(1, Source, Target, Interm); Towers(n-1, Interm, Target, Source); } }
软件
技术
基础
贪心算法之0/1背包问题 0/1背包问题
对容量为c 的背包求解可行的背包装载。 对容量为 的背包求解可行的背包装载。从n 个物品中选取装入背包的物品, 个物品中选取装入背包的物品,背包中物品的 总重量不能超过背包的容量, 总重量不能超过背包的容量,最佳装载是指所 装入的物品价值最高。每件物品i 的重量为 ,贪 装入的物品价值最高。每件物品 的重量为wi 价值为pi 价值为 。
2.加密算法 3.排序 算法 4.检索算法 5.随机化算法
软件
技术
基础
常用算法及举例
• 递归法 • 贪心法 • 迭代法 • 分治法 • 回溯法 • 动态规划法 • 分支界限法
软件
技术
基础
递归法
基本思想
递归算法在可计算性理 递归法的出发点不放在 初始条件上, 论中占有重要地位, 论中占有重要地位,它 初始条件上,而放在求 是算法设计的有力工具, 解的目标上, 是算法设计的有力工具, 解的目标上,从所求的 对于拓展编程思路非常 未知项出发逐次调用本 身的求解过程, 有用。 有用。就递归算法而言 身的求解过程,直到递 并不涉及高深数学知识, 归的边界,即初始条件。 并不涉及高深数学知识, 归的边界,即初始条件。 只不过初学者要建立起 而递推是从已知的初始 递归概念不十分容易。 条件出发。 递归概念不十分容易。 条件出发。
软件
技术
基础
算法与建模
有赖于
常用三种计算模型: 结构分析—— 结构分析—— 线性方程组 数学模型 简单、准确,有成熟的计算方法。 人口预报—— 人口预报—— 微分方程 过程模拟模型 线性规划、非线性规划 优化问题—— 处理日常事务问题算法的模型,模型 优化问题—— 线性规划、 简单易行。—— 矩阵分析;特征值、特征向量 震动问题—— 矩阵分析;特征值、 震动问题 信息管理—— 信息管理—— 二维数据表 结构模型 结点和边代表运算处理和输入/输出状态。 人工智能(树型结构) 下 棋—— 人工智能(树型结构) 交通管理—— 最佳道路选择(图型结构) 交通管理—— 最佳道路选择(图型结构)
软件
技术
基础
问题规模与时间复杂度的关系
• 一般来说,计算机算法是问题规模n 的函数 f(n),算法的时间复杂度也因此记做 <math>T(n)= \mathcal{O}(f(n))</math> • 因此,问题的规模n 越大,算法执行的时间 的增长率与f(n) 的增长率正相关,称作渐进 时间复杂度(Asymptotic Time Complexity )。
算法/解题策略 常见模型
计算模型。
软件
技术
基础
4.2 常用算法结构分析
1.枚举 2.搜索 深度优先搜索 广度优先搜索 启发式搜索 遗传算法 1.哈夫曼编码 2.树的遍历 3.最短路径 算法 4.最小生成树 算法 5.最小树形图 6.网络流 算法 7.匹配算法
算 法 的 分 类
(一)基本算法 (二)数据结构的算法 (三)数论与代数算法 (四)计算几何的算法 (五)图论算法 (六)动态规划 1.数值分析 (七)其他
婪 准 则
0/ 1背 背 包 问 题
• 从剩余的物品中,选出可以装入背包的价值最大的物品 从剩余的物品中, • 从剩下的物品中选择可装入背包的重量最小的物品 • 从剩余物品中选择可装入背包的pi /wi 值最大的物品 从剩余物品中选择可装入背包的pi
软件
技术
基础
迭代法
试想一下高次 方程的求解
•确定迭代公式,选取解的误差; 确定迭代公式,选取解的误差; 确定迭代公式 •从事先估计的一个初始近似解出发,求另一 从事先估计的一个初始近似解出发, 从事先估计的一个初始近似解出发 个近似解; 个近似解; •循环处理实现迭代过程; 循环处理实现迭代过程; 循环处理实现迭代过程 •当相邻两次近似解之差的绝对值小于或等于 当相邻两次近似解之差的绝对值小于或等于 给定误差, 给定误差,则认为最后一次得到的近似解即为 问题的解。 问题的解。
软件
技术
基础 Insertion-Sort(A) 1 for j = 1 to n-1 2 key = A[j] 3 i = j-1 4 while i >= 0 and A[i] > key 5 A[i+1] = A[i] 6 i=i-1 7 A[i+1] = key
j=1 j=2 j=3 j=4 j=5 A[0] A[1] A[2] A[3] A[4] A[5]
软件
技术
基础
第4章 算法与数据结构
16学时
软件
技术
基础
算法与数据结构
目的与要求: 目的与要求:掌握算法与算法设计基本方法 掌握数据结构的表示与基本操作 重点与难点: 重点与难点:算法描述方法及应用 数据结构及其表示方法 查找与排序算法设计
本章要点
软件
技术
基础
算法与数据结构
4.1 算法及其表示 4.2 常用算法结构分析 4.3 数据结构及表示 4.4 常用数据结构及表示(表、树、图) 常用数据结构及表示( 4.5 查找与排序 4.6 文件与文件操作 4.7 应用举例
软件
技术
基础
算法的复杂性
时间复杂度
一个算法花费的时间与算法中语句的执行次数 空间复杂度 成正比, 成正比,计算一个算法的时间复杂度一般用语 句执行次数的数量级来衡量。 句执行次数的数量级来衡量。 空间复杂度是指算法在计算机内执行时所占用 问题的规模 的内存开销规模。但一般讨论的是除正常占用 数据结构中数据元素个数n称为问题的规模, 数据结构中数据元素个数n称为问题的规模,当 时间或空间单位下数据的量的多少。 时间或空间单位下数据的量的多少 不断变化时,语句的执行次数也会变化。 n内存开销外的辅助存储单元规模。 。空间单 不断变化时,语句的执行次数也会变化。 位一般规定为一个简单变量(如整型、 位一般规定为一个简单变量(如整型、实型 所占存储空间的大小; 等)所占存储空间的大小;时间单位则一般 规定为执行一个简单语句(如赋值语句、 规定为执行一个简单语句(如赋值语句、判 断语句等)所用时间。 断语句等)所用时间。
2学时 2学时 学时 6学时 学时 4学时 学时 2学时 学时 2学时 学时
本 章 内 容
软件
技术
基础
算法历史小知识
算法的中文名称出自周髀算经 周髀算经;而英文名称Algorithm 来自于 周髀算经 9世纪波斯数学家比阿勒.霍瓦里松的名字al-Khwarizmi,因为比 阿勒.霍瓦里松在数学上提出了算法这个概念。他写的书《aljabr w’al muqabalah》(代数学)演变成为现在中学的代数教科 书。Ad-Khwarizmi强调求解问题是有条理的步骤。如果他能活 到今天的话,他一定会被以他的名字而得名的方法的进展所感 动。 “算法”原为“algorism”,意思是阿拉伯数字的运算法则,在18世 纪演变为“algorithm”。 第一次编写算法是Ada Byron于1842年为巴贝奇分析机编写求 解解伯努利方程的程序,因此Ada Byron被大多数人认为是世 界上第一位程序员。 20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种 假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的 出现解决了算法定义的难题,图灵的思想对算法的发展起到了 重要的作用
软件
技术
基础
时 间 复 杂 度 表 示
通常用“阶 来表示。 通常用 阶”“O(数量级)”来表示。 (数量级) 来表示 常见的时间复杂度有: 常见的时间复杂度有: O(1)常数阶; ( )常数阶; O(logn)对数阶; ( )对数阶; O(n)线性阶; ( )线性阶; O(n^2)平方阶。 ( ^ )平方阶。 例如: for(i=1; i<=n; i++) 例如: for(j =1; j<=i; j++) d[i][j]=data[i][j]+1;
B
C
一个步骤: 将一个盘子从A移动到C
A
B
C
软件
技术
基础
例2将两个盘子从A 经B移动到 C
过程 初始
A B C
三个步骤 将一个盘子从A移动到B
将一个盘子从A移动到C A B C 将一个盘子从B移动到C
软件
技术
基础
例3 将三个盘子从A 经B移动到 C
怎么做? 怎么做?
A B C
软件
技术
基础
例3 将三个盘子从A 经B移动到 C:
软件
技术
基础
4.1算法及其表示 算法及其表示
算法通俗 说法
算法就是一种解题的方法,是解题过程的精确描述。 算法就是一种解题的方法,是解题过程的精确描述。 就是一种解题的方法 算法是由若干条指令组成的有穷序列。即由有限条可 算法是由若干条指令组成的有穷序列。 是由若干条指令组成的有穷序列 完全执行的,有确切含义的指令(或命令,语句) 完全执行的,有确切含义的指令(或命令,语句)所 构成。 构成。
算法严格 说法
软件
技术
基础
算法五大特征
一个算法必须总是在执行有穷步后结束, 有穷性 一个算法必须总是在执行有穷步后结束, 且每一步都可在有穷时间内完成; 且每一步都可在有穷时间内完成; 算法中的每一个指令比须有明确的含义, 确定性 算法中的每一个指令比须有明确的含义, 不能有二义性; 不能有二义性; 可行性 算法中描述的操作都是可通过已经实现的 基本运算、执行有限次实现的; 基本运算、执行有限次实现的; 一个算法应有0个或多个输入; 输入 一个算法应有0个或多个输入; 一个算法应有1个或多个输出。 输出 一个算法应有1个或多个输出。
软件
技术
基础
算法的表示
算 法 的 描 述
•自然语言 自然语言 •流程图 特定的表示算法的图形符号 流程图 •伪语言 包括程序设计语言的三大基本结构及 伪语言 自然语言的一种语言 •类语言 类似高级语言的表示,例如类 类语言 类似高级语言的表示, PASCAL、 类C语言 、 语言
软件
技术
基础
插入排序
软件
技术
基础
贪心法
基本思想
先依据题目的部分条件确定答案的范围, 先依据题目的部分条件确定答案的范围, 在此范围内对所有可能的情况逐一验证, 在此范围内对所有可能的情况逐一验证,直到 全部情况验证完毕, 全部情况验证完毕,若每个情况使验证题目符 合条件,则为本题的一个答案, 合条件,则为本题的一个答案,若全部情况验 证完毕后均不符合题目的条件,则题目无解。 证完毕后均不符合题目的条件,则题目无解。 贪心算法使一个复杂问题的求解过程转化 为相对简单的迭代算式的重复执行过程。 为相对简单的迭代算式的重复执行过程。
软件
技术
基础
Baidu Nhomakorabea
递归法之计算 3!
分析递归、 递推过程
初始条件: 初始条件: fact(1) = 1, , 递推公式: 递推公式:fact(n) = n*fact(n-1) )
软件
技术
基础
递归法之Tower of Hanoi
软件
技术
基础
例1 将一个盘子从A 经B移动到 C
过程: 过程 初始
A
B
C
A
2 2 2 2 2 2 1
4 4 4 4 4 2 2
5 5 5 5 4 4 4
6 6 6 5 5 5 5
1 1 6 6 6 6 6
3 3 3 3 3 3 3
软件
技术
基础
算法的分析与评价
1)正确性(Correctness) 算 法 的 评 价 标 准 2)可读性(Readability) •程序不含语法错误; 能产 •程序对几组输入数据 3)健壮性(robustness) 算法的第一目的是为了阅读和交流; 生满 •程序对精心选择的、典型的、 足规 可读性有助于对算法的理解; 4)高效率与低存储量 应具有容错处理功能。当输入非法数据时, 苛刻的、带有刁难性的几组输入 格要 可读性有助于对算法的调试和修改。 算法应对其作出反应,而不是产生莫名其妙 数据; 求的 的输出结果。 处理速度快;存储容量小。时间和空 •程序对一切合法的输入数据 结果 间是矛盾的、实际问题的求解往往是 求得时间和空间的统一、折中。
相关文档
最新文档