内容正文:
镇雄长风中学 杨鹏
第二章 算法与问题解决
2.1 算法的概念及描述
必修1《数据与计算》
1
同学们你们遇到问题,要解决问题应该怎么做呢?
用计算机编程解决问题的一般过程
分析问题
解决问题并
验证结果
文字处理
图像处理
数据处理
其他应用
寻找解决问题的
途径与方法
必修一:数据与计算
计算机已经成为人们解决问题的重要工具。一般来说,用计算机解决一个具体问题时,由于实际问题的复杂性,需要先对实际问题进行抽象与建模,再根据建立的计算模型设计算法,并将算法用合适的方式加以准确描述。
用计算机解决问题的一般步骤
用算法解决问题的过程
选择计算机编程语言:Python、 JAVA、C、C++、C#、 GO、SQL、 RUBY、PHP、 JavaScript 、
……
编写程序
根据算法特征和结构化程序设计思想设计算法
自然语言
流程图
伪代码
计算机程序
设计算法
调试与运行
发现和修正程序中的错误
录入错误
语法错误
逻辑错误
输入输出错误
提炼核心要素(变量)并加以确定或假设
用数学符号解决问题的计算模型
抽象与建模
必修一:数据与计算
【问题】有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢?
开始
C是伪币
B是伪币
A是伪币
A=B?
A=C?
是
否
否
是
算法的概念及描述
必修一:数据与计算
算法的概念及描述
【问题】一个农夫带一条狼一头山羊和一篮蔬菜要过河,但是只有一条小船。乘船时,农夫只能带一样东西。当农夫在场时,着三样东西相安无事。一旦农夫不在,狼会吃羊,羊会吃蔬菜。请设计一个算法,时农夫安全地将着三洋东西安全渡河。
【方案二】
第一步:农夫带羊过河,空手回来;
第二步:农夫带狼过河,带羊回来;
第三步:农夫带蔬菜过河,空手回来;
第四步:农夫带羊过河;
第五步:达到目的,结束。
【方案一】
第一步:农夫带羊过河,空手回来;
第二步:农夫带蔬菜过河,带羊回来;
第三步:农夫带狼过河,空手回来;
第四步:农夫带羊过河;
第五步:达到目的,结束。
分析:
题目已经描述得很清楚,狼和羊、羊和白菜不能单独在一起。所以我们的思路就是每次保证狼和羊、羊和白菜不能脱离农夫单独被带到对岸。
必修一:数据与计算
算法的概念及描述
家里的家用电器如洗衣机、电冰箱,电饭锅,热水器,空调等等……
大多数使用的都是定时器、定温器、定量(功率、容积、……)等等控制手段……
例如智能家居,它是为了带来更为便捷舒适的生活方式,它的控制方式有本地控制、远程网络控制、定时控制和一键情景控制等方式来实现家居产品自动工作。
必修一:数据与计算
古代的算法主要指“算术”,即数值算术运算。
算法的概念及描述
algorithm
什么是算法(algorithm)
广义的算法是解决问题或者完成任务的一系列步骤。
在计算机科学中,算法是指用计算机解决问题的步骤,是为了解决问题而需要让计算机有序执行的、无歧义的、有限不周的集合,这些需要解决的问题包含数值计算,还包含非数值计算的数据处理。
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间,空间或效率来完成同样的任务。
一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
必修一:数据与计算
什么是算法
V 有关算法(Algorithm)一词的定义不少,但其内涵基本上是一致的。最为著名的定义是计算机科学家高德纳(Donald Ervin Knuth) 在其巨著《计算机程序的艺术》(The Art of Computer Programing)第一卷中所做的有关描述。其非形式化的定义是:
Donald E. Knuth (高德纳)是斯坦福大学计算机科学系的荣誉退休教授,算法和程序设计技术的先驱者,他所著描述基本算法与数据结构的巨作《计算机程序设计的艺术》( The Art of Computer Programming)被《美国科学家》杂志列为20世纪最重要的12本物理科学类专著之一,与爱因斯坦《相对论》、狄拉克《量子力学》、理查·费曼《量子电动力学》等经典比肩而立。
《计算机程序设计艺术》目前出版了前四卷: 1. 《基本算法》; 2. 《半数值算法》; 3. 《排序与查找》;4.《组合算法》; 第5卷《语法算法》和第6卷《语言理论》、第7卷《编译程序》尚未出版。本书内容博大精深,作者因为三卷书获得美国计算机协会1974年图灵奖。
算法的概念及描述
高德纳《计算机程序设计艺术》(上)
图灵奖奖杯(下左)和图灵(下右)
高德纳:一个算法,就是一个有穷规则的集合,其中之规则定义了一个解决某一特定类型问题的运算序列。
algorithm
必修一:数据与计算
算法是解决问题的方法与步骤。
或者说是,解决问题方法的精确描述。解决一个问题的过程,就是实现一个算法的过程。
数 值 运 算:求和,求方程的根,……
非数值运算:人名排序,计算机绘图,……
什么是算法
算法的概念及描述
algorithm
Donald E. Knuth(高德纳):
一个算法,就是一个有穷规则的集合,其中之规则定义了一个解决某一特定类型问题的运算序列。
必修一:数据与计算
解析算法
用计算机解决问题的一般步骤
常见算法
解析算法(analysis algorithm):指用解析的方法找出表示问题的前提条件与结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。
《张丘建算经》 “百钱百鸡问题”是世界上首次提出三元一次不定方程及其一种解法。
设公鸡为x只,母鸡为y只,小鸡为z只(z只能取3 的倍数),依据题意可得以下方程组:
见教材108页
如果单看一种鸡型,则还需在满足下列条件:
⑤
使用解析法和穷举法就可以罗列出X、Y、Z的值。
1 for x in range(0,21):
2 for y in range(0,34):
3 z=100-x-y
4 if 5*x+3*y+z/3==100:
5 print(“公鸡:”,x,”只”, “公鸡:”,y,”只”, “公鸡:”,z,”只”)
1 公鸡4只,母鸡18只,小鸡78只。 公鸡0只,母鸡25只,小鸡75只。
2 公鸡8只,母鸡11只,小鸡81只。 公鸡4只,母鸡18只,小鸡78只。
3 公鸡12只,母鸡4只,小鸡84只。 公鸡8只,母鸡11只,小鸡81只。
4 公鸡12只,母鸡4只,小鸡84只。
枚举算法
必修一:数据与计算
《张丘建算经》 “百钱百鸡问题”是世界上首次提出三元一次不定方程及其一种解法。
分析:假设鸡翁为x只,鸡母y只,鸡雏z只,则下列式子成立:
如果单看一种鸡型,则还需在满足下列条件:
使用解析法和穷举法就可以罗列出X、Y、Z的值。
解析算法
枚举算法
算法的概念及描述
必修一:数据与计算
11
用计算机解决问题的一般步骤
常见算法:
枚举算法(穷举法):也叫列举法。指在求解过程中,先按照一定的顺序一一列举所有可能的解,然后用条件判断列举出的可能解是否为正确解。
穷举法一般适合解决解集为离散的且范围明确的问题,例如用于解决一些组合问题、排列问题以及最大公约数、最小公倍数等问题。 使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。
此外还有排序算法(冒泡排序、快速排序、归并排序等)、搜索算法(二分查找、广度优先搜索、深度优先搜索等)、图算法、动态规划(背包问题、最长公共子序列等)等等。
【教材108页第5题】民间流传着“韩信点兵”的故事。韩信带1500名士兵打仗,战死四五百人,剩下的士兵排队:站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049。请编写计算机程序验证结果。
教材109页第5题
必修一:数据与计算
12
算法的概念及描述
枚举算法(穷举法)算法思想
根据题目的部分条件(约束条件)确定答案的大致范围,然后在此范围内对所有可能的情况逐一验证,直到所有情况均验证完毕。若某个情况符合题目条件(约束条件),则为本题的一个答案;若全部情况验证完后均不符合题目条件,则问题无解。
枚举算法(穷举法)关键步骤
明确问题的描述、确定范围、确定筛选条件、循环遍历求解
枚举算法(穷举法)基本结构
循环+选择
枚举算法(穷举法)优缺点
优点:算法简单,容易理解
确定:运算量大
必修一:数据与计算
【2023秋季学期学业水平考试第26题 (12分) 】 大约在1500年前,《孙子算经》中就记载了鸡兔同笼问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?意思就是:有若干只鸡和兔在同一个笼子里,从上面数,有三十五个头;从下面数,有九十四只脚。求笼中鸡和兔各有几只?小邓利用循环结构进行问题求解,其中设鸡的数量为x、兔的数量为y,同时满足如下两个条件:x+y=35 和 2x+4y=94,则问题有解。程序如下:
(1)该程序采用的算法是________________。
1 head=35 #头的数量
2 foot=94 #脚的数量
3 for x in range(1,head+1) :
4 for y in range(1,head+1) :
5 if x+y==head and 2*x+4* y==foot :
6 print(“鸡的数量是 :“ ,x,”兔的数量是 :“,y)
复习:算法的分类
解析算法
必修一:数据与计算
算法的特征
可行性
确定性
0个或多个输入
有穷性
1个或多个输出
根据算法的定义,算法具有下列特征:
一个算法必须保证执行有限步之后结束。
算法的每一步骤必须有确切的定义;
算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
(Finiteness)
(Definiteness)
(Input)
(Output)
(Feasibility)
算法的概念及描述
算法的特征
必修一:数据与计算
【第5题】观察右侧的流程图,下列关于算法的特征表述错误的是( )
A. 算法可以没有数据输入
B. 算法必须至少有一个输出
C. 该流程图符合算法的有穷性特征
D. 该流程图中s=s+1体现了算法的确定性
牛刀小试(2021春季学期学业水平考试)
开始
输出s
i=0,s=0
i<3
s=s+1
结束
Y
N
C
i=i+1
流程图做 如此修改即可。
必修一:数据与计算
练一练
下列关于算法的特征表述不正确的是( )
A. 有穷性:算法必须在有限步骤之内结束
B. 输入:算法至少有一个输出
C. 确定性:算法的每一步必须有确切的含义
D. 输出:算法至少有一个输出
B
必修一:数据与计算
【第6题】上图是小丽设计的流程图,下列关于该流程图描述错误的是( )
A、该算法符合有穷性特征
B、该流程图中x=2x,y=y+1
体现了算法的确定性
C、该算法不需要用户输入数据
D、把x的初始值改为1,该算法
可以输出y的值
A
练一练(2023秋季学期学业水平考试)
必修一:数据与计算
18
数据
(基础)
运算
(核心)
控制
转移
(程序结构)
(赋值、输入、输出)
算
法
的
要
素
用算法解决问题时,必须明确参与运算的初始数据、运算时产生的中间数据以及代表问题解决的结果数据。
在对数据进行运算时,必须明确每一步运算什么、对哪些数据进行运算等。
在算法执行过程中,有时需要根据数据或运算结果的特点进行不同的处理,这时候就需要运用控制转移来执行不同的操作。
算法的概念及描述
必修一:数据与计算
算法的要素
用计算机解决问题,本质上是以“数据运算”的方式来实现的。各种“运算”有时需要依次进行,有时需要根据条件选择一部分进行,有时候又需要重复执行某些“运算”,这些“运算”顺序的调控就需要借助控制转移来实现。因此,通过算法让计算机解决问题时,数据、运算及控制转移就成为算法的要素。
一、数据对象的运算和操作:计算机可以执行的基本操作是以指版令的形式描述的权。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
① 算术运算:加(+)、减(-) 、乘(*) 、除(/) 、取余(%)、取整(//)、幂(**)等运算
② 逻辑运算:与(and) 、或(or) 、非(not)等运算
③ 关系运算:大于(>) 、大于等于(>=)、小于(<) 、小于等于(<=)、等于(==) 、不等于(!=)、in(包含)等运算
④ 数据传输:输入(input) 、输出(output,print) 、赋值(=)等运算
二、算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。
算法的概念及描述
必修一:数据与计算
1、人们利用计算机解决问题的基本过程为( )
①调试运行程序
②分析问题
③设计算法
④问题解决
⑤编写程序
A. ①②③④⑤ B. ②④③⑤①
C. ④②③⑤① D. ②③⑤①④
练一练
D
计算机解决问题的一般过程
①分析问题(抽象与建模)
②设计算法
③编写程序
④调试运行程序
⑤问题解决
必修一:数据与计算
2、下列关于算法的特征描述不正确的是( )
A. 有穷性:算法必须在有限步之内结束
B. 确定性:算法的每一步必须有确切的含义
C. 输入:算法至少有一个输入
D. 输出:算法至少有一个输出
练一练
C
算法的特征
①有穷性
②可行性
③确定性
④0个或多个输入
⑤1个或多个输出
必修一:数据与计算
3、要输出整数 1到100之间所有的质数,最合适选用的算法是( )
A. 解析法
B. 穷举法
C. 二分查找法
D. 排序法
B
练一练
必修一:数据与计算
算法与问题解决
计算机编程解决问题的一般过程
抽象与建模
设计算法
编写程序
调试与运行
算法的含义
计算机解决问题的方法和步骤
算法的特征
有穷性
可行性
确定性
0个或多个输入
1个或多个输出
算法的三要素
数据(基础)
运算(核心)
控制转移(程序结构,赋值、输入、输出)
知识
复习
必修一:数据与计算
学好信息技术
拥抱未来生活
本节课到此结束
25
$