《大学计算机基础》第4章-问题的求解:算法及其实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该算法体现了有穷性、确定性、输入、
输出和可行性等算法的基本特征
15
算法设计示例—走迷宫
【例4.5】走迷宫。
问题求解:
入口
Step 1. 从迷宫入口进入
Step 2. 如果无岔路口,继续;
如果碰见岔路口,停下,贴个小纸条
Step 3. 任意选择一个方向(向前、左、
A
右),继续走:
如果碰壁,返回到刚才贴小纸条处,
个特定关系的量。 可行性:算法中描述的每一步操作都可以通过已有的
基本操作执行有限次实现
11
用自然语言编写算法
【例4.1】编写a与b的整型数值交换问题的算法。
① 输入a、b两个整数。 ② 若有资源c,则c=a,a=b,b=c;
否则,a=a+b,b=a-b,a=a-b。 ③ 输出a、b交换后的结果,且算法到此结束。
6
4.1.1 算法的定义与特征
1、什么是算法?
算法的定义——算法是一个有穷规则的集合,它用规则规 定了解决某一特定类型问题的运算序列。通俗地说,算法 规定了任务执行/问题求解的一系列步骤
算法是一个可终止过程的一组有序的、无歧义的、可执行 的步骤的集合
算法是对解决某个具体问题而采取的方法与步骤的完整和 准确的描述。它是指令的有限序列,其中每一条指令表示 一个或多个操作
在算法设计过程中,还有有关正确性 、可读性、健壮性、效率与低存储量 需求,以及算法效率的度量等问题 14 14
欧几里得算法
【例4.4】欧几里得算法(也有的写为欧几里德算 法,又称辗转相除法):求解两个数的最大公 因子(公约数)的算法(公元前300年)。
输入:正整数M和正整数N 输出:M和N的最大公约数 算法: Step 1. 将较大的数赋给M,较小的数 赋给N; Step 2. M除以N,记余数为R Step 3. 如果R不是0,将N的值赋给M, R的值赋给N, 返回Step 2;否则,最 大公约数是N,输出N,算法结束
8
算法思维
也就是说,规定了问题求解的一系列步骤的有穷 规则的集合,就是算法
算法规定了解决某一特定类型问题的运算序列
音乐乐谱、 太极拳谱 等都可看 作广义的 算法!
9
算法思维(Cont.)
借助计算机,人们很多的算法思想正在变成现实。 如把中国象棋的规则方法借助计算机来实现,可
以实现人与计算机下棋(人机博弈) 博弈的规则即规定哪些走法是合法的,例如对于
结论:
从第①步到第③步的顺序结构叙述中,有头有尾满 足了可执行
在第②步中是有条件的选择结构(也称分支结构)
中内嵌了顺序结构,也满足可执行
符合算法的特征,可称为两整数交换算法
12
一个非算法的举例
【例4.2】编写一个计数器的算法,实现从0到n 的加一计数。
① 令n为0;
② 置n为n+1; ③ 返回②。
计是唯一的吗? 如果不唯一,能比较这些求解方法优劣吗?如何
比较?
算法的不唯一性:求解某一问题算法不 一定是唯一的,可以有多种不同的解法
17
4.1.2 算法描述与表示
如何表达问题的求解规则与求解步骤呢? 如何描述一个算法呢?
自然语言 计算机语言 图形化工具
如流程图(FlowChart)、N-S图、PAD图(Problem Analysis Diagram,问题分析图)、UML图 (Unified Modeling Language, 统一建模语言)
7
算法:从机器语言到高级语言的抽象
虽然算法属于计算理论的知识范畴,但计算机求 解任何问题都要依赖于算法
算法是解决某个特定问题的一种方法或一个过程, 是一系列求解问题的清晰具体的指令序列
设计算法的过程充满趣味和智力挑战,而算法的 执行则是一个机械化的过程,每一步都依照一组 简单的规则接着上一步进行
Hale Waihona Puke Baidu
并选择另一个方向,重复执行Step 2-Step3.
否则继续前进,重复执行Step 2-Step3.
Step4. 看见出口,算法结束
此算法体现了回溯的计算思维
B
出 口
16
算法的不唯一性
以上所设计的两个算法都体现了输入、输出、有 穷规则、确定性和可行性
思考: 问题的求解方法是唯一的吗?也就是说算法的设
无条件的循环结构
结论:不能称为算法
原因:违背了算法特征中有穷性、输出数据、可行性
13
稍加修改的计数器算法
【例4.3】编写一个不超过1万次的计数器算法。
① 令n为0;
② 置n为n+1;
③ 若n小于10000,则返回②;否则,输出n之值,
且算法到此结束。
有条件的循环结构
结论:是算法。 原因:符合算法特征
共4学时
3
本章重点
理解算法思维 掌握算法的设计及描述方法 掌握用典型的算法求解问题的方法和过程 掌握求解查找、搜索问题的几种不同方法 掌握算法的空间效率和时间效率的评价方法 掌握常见算法的优化方法 了解并行计算及相关概念和模型
4
4.1 算法与程序设计
4.1.1 算法的定义与特征 4.1.2 算法的描述与表示 4.1.3 计算机求解问题的典型算法举例
枚举法求解问题 递归法求解问题
5
计算机求解问题的核心是算法
计算学科是研究利用计算机求解各种问题的相关 技术与理论的学科
计算机求解问题的核心是算法,算法被誉为计算 学科和计算机的灵魂,算法提供了利用计算工具 求解问题的技术
算法最终要表达为机器可以理解的程序,依托具 体的计算机语言,形成指令由计算机执行获得期 望的输出结果
大学计算机基础
课程目录
第1章 第2章 第3章 第4章
计算机与计算思维
(6学时)
问题的抽象与建模
(4学时)
程序设计与数据结构
(8学时)
问题的求解:算法及其实现 (4学时)
第5章 求解显示,交互 第6章 求解的工程思维,规范
(2学时) (2学时)
2
第4章 问题的求解:算法及其实现
4.1 算法与程序设计 4.2 算法分析与优化 4.3 优化与并行
中国象棋来说的马走日,象走田等一些规则。涉 及到的最重要的算法就是搜索
10
2、算法的基本特征
2、算法的五项基本特征
有穷性:一个算法在执行有穷步规则之后必须结束。 确定性:算法的每一个步骤必须要确切地定义,不得
有歧义性。 输入:算法有零个或多个的输入。 输出:算法有一个或多个的输出/结果,即与输入有某