ch04

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)以n除m,并令所得余数为r(r必小于n); 并令所得余数为r 必小于n 算法结束,输出结果n 否则, (2) 若 r=0, 算法结束 , 输出结果 n; 否则 , 继续 步骤( 步骤(3); 置换为m 置换为n 并返回步骤( ( 3 ) 将 n 置换为 m,r 置换为 n, 并返回步骤 ( 1 ) 继续进行. 继续进行.
当用来描述算法的语言并没有被准确定义或者 没有给予足够信息的时候, 没有给予足够信息的时候,交流就会产生问题
原语
通过建立一个可以描述算法的意义明确的基本 原语)集合, 块(原语)集合,计算机科学即就可以解决上 述的勾通问题 原语描述算法需要建立一个统一的细节描述级 别,原语连同一组表达了原语如何表达复杂的 想法的规定组成了一种程序设计语言 组成
3.算法的形式化定义 算法是一个四元组, 算法是一个四元组,即(Q,I, ,F). 其中: 其中: 是一个包含子集I 的集合, (1)Q是一个包含子集I和 的集合,它表示计算 的状态; 的状态; 表示计算的输入集合; (2)I表示计算的输入集合; 表示计算的输出集合; (3) 表示计算的输出集合; 表示计算的规则,它是一个由Q (4)F表示计算的规则,它是一个由Q到它自身 的函数,且具有自反性, 的函数,且具有自反性,即对于任何一个元素 q∈Q,有F(q)=q. )=q
例4.2 问:方程2x+4y=15有无整数解? 方程2 +4y=15有无整数解 有无整数解?
答:2和4的最大公因子是2,2不能整除15,故该 的最大公因子是2 不能整除15, 方程无整数解. 方程无整数解.
两个未知数的线性丢番图方程 的解:欧几里德算法 的解:
给定两个正整数m 给定两个正整数 m 和 n, 求它们的最大公因子 , 求它们的最大公因子, 即能同时整除m 的最大正整数. 即能同时整除m和n的最大正整数. 步骤如下: 步骤如下:
例4.5 求解调和级数
1 1 1 1 H n = + + + + 1 2 3 n 设变量X表示累加和,变量I表示循环的次数, 设变量X表示累加和,变量I表示循环的次数,自 然语言描述算法如下: 然语言描述算法如下: 赋值给X (1)将0赋值给X; 赋值给I (2)将1赋值给I; 相加,然后把结果存入X (3)将X与1/I相加,然后把结果存入X; ( 4 ) 将 I加 1 ; 大于等于N 算法结束,结果为X (5)若I大于等于N,算法结束,结果为X;否 则转到步骤( 继续执行. 则转到步骤(3)继续执行.
(1)求解例4.4的算法流程图 求解例4.4的算法流程图


X =1
Y =2
X =X +Y
Y =Y +1
N
Y >100 Y 结 束
(2)求解例4.5的算法流程图 求解例4.5的算法流程图


X=0
I= 1
X = X + 1 /I
I= I+ 1
N
I> = N Yຫໍສະໝຸດ 结 束(3)求解例4.6的算法流程图 求解例4.6的算法流程图
例4.3 设m=56,n=32,求m,n的最大公因子 =56, =32,
算法如下: 算法如下: 32除56余数为 ; 余数为24 (1)32除56余数为24; 24除32余数为 余数为8 (2)24除32余数为8; 24余数为 算法结束,输出结果8 余数为0 (3)8除24余数为0,算法结束,输出结果8. 的最大公因子为8 答:m,n的最大公因子为8. 欧几里德算法既表述了一个数的求解过程, 欧几里德算法既表述了一个数的求解过程,
第4章 计算学科中的核心概念 4.1 算法
算法的历史简介
公元825年 公元825年,阿拉伯数学家阿科瓦里茨米 AlKhowarizmi)写了著名的《波斯教科书》 (AlKhowarizmi)写了著名的《波斯教科书》 Textbook), ),书中概括了进行四则算 (Persian Textbook),书中概括了进行四则算 术运算的法则. 术运算的法则.
2.算法的重要特性
有穷性:一个算法在执行有穷步之后必须结束. 有穷性:一个算法在执行有穷步之后必须结束. 确定性:算法的每一个步骤必须要确切地定义. 确定性:算法的每一个步骤必须要确切地定义. 即算法中所有有待执行的动作必须严格而不含 混地进行规定,不能有歧义性. 混地进行规定,不能有歧义性. 输入:算法有零个或多个的输入,即在算法开 输入:算法有零个或多个的输入, 始之前,对算法最初给出的量. 始之前,对算法最初给出的量. 输出:算法有一个或多个的输出, 输出:算法有一个或多个的输出,即与输入有 某个特定关系的量, 某个特定关系的量,简单地说就是算法的最终 结果. 结果. 能行性:算法中有待执行的运算和操作必须是 能行性: 相当基本的, 相当基本的,

算法
算法实例
例4.4 求1+2+3+……+100 1+2+3+……+100 设变量X表示加数, 表示被加数, 设变量X表示加数,Y表示被加数,用自然语言将 算法描述如下: 算法描述如下: 赋值给X (1)将1赋值给X; 赋值给Y (2)将2赋值给Y; 相加,结果存放在X (3)将X与Y相加,结果存放在X中; 结果存放在Y (4)将Y加1,结果存放在Y中; 小于或等于100,转到步骤( (5)若Y小于或等于100,转到步骤(3)继续执 否则,算法结束,结果为X 行;否则,算法结束,结果为X.
2.流程图
它采用美国国家标准化协会ANSI( 它采用美国国家标准化协会 ANSI(American National Standard Institute)规定的一组图形 Institute) 符号来表示算法. 符号来表示算法.
流程图可以很方便地表示顺序, 选择和循环结构, 流程图可以很方便地表示顺序 , 选择和循环结构 , 而任何程序的逻辑结构都可以用顺序, 而任何程序的逻辑结构都可以用顺序 , 选择和循 环结构来表示, 环结构来表示, 流程图可以表示任何程序的逻辑结构. 流程图可以表示任何程序的逻辑结构. 用流程图表示的算法不依赖于任何具体的计算机 和计算机程序设计语言, 和计算机程序设计语言,
"算法"(Algorithm)一词就来源于这位数学家 算法" Algorithm) 的名字. 的名字.
后来,《韦氏新世界词典》将其定义为"解某 后来,《韦氏新世界词典》将其定义为" ,《韦氏新世界词典 种问题的任何专门的方法" 种问题的任何专门的方法". 而据考古学家发现,古巴比伦人在求解代数方 而据考古学家发现,古巴比伦人在求解代数方 就已经采用了"算法"的思想. 程时,就已经采用了"算法"的思想.
在序列( 在序列 ( 1 ) 中 , 每个数都是它的前两个数之 表示这个序列的第n 个数, 和 , Fn 表示这个序列的第 n 个数 , 该序列可以 形式化的定义为: 形式化的定义为:
F0=0,F1=1,Fn+2=Fn+1+Fn,n≥0
斐波那契数列还是一个关于加法算法的典型实 例.
设变量X表示前一个数的值,即定义中的F 设变量X表示前一个数的值,即定义中的Fn, 变量Y表示当前数的值,即定义中的F 变量Y表示当前数的值,即定义中的Fn+1,变 表示后一个数的值,即定义中的F 量Z表示后一个数的值,即定义中的Fn+2.那 么求解问题的自然语言描述如下: 么求解问题的自然语言描述如下:
(1)如果=0,那么将0赋值给Y,并输出Y,转步骤(11) 如果= 那么将0赋值给Y 并输出Y 转步骤(11) 继续执行; 继续执行; 赋给X 赋值给Y (2)将0赋给X,将1赋值给Y; 输出X (3)输出X,Y; 赋值给I (4)将1赋值给I; 如果I 大于则转到步骤( 11 ) 否则继续执行; (5) 如果 I 大于 - 1 , 则转到步骤 ( 11), 否则继续执行 ; 的和赋值给Z (6)将X和Y的和赋值给Z; 赋值给X (7)将Y赋值给X; 赋值给Y (8)将Z赋值给Y; 输出; (9)将Y输出; (10)将I加1,转步骤(5)继续执行; 10) 转步骤( 继续执行; 11)算法结束. (11)算法结束.
两个未知数的线性丢番图方程 的解
ax+by=c,先求出a和b的最大公因子d,若d能 ax+by= 先求出a 的最大公因子d 整除c 则该方程有解(整数解). 整除c,则该方程有解(整数解). 方程13x+26y=52有无整数解 有无整数解? 问:方程13x+26y=52有无整数解?
答:13和26的最大公因子是13,13又可整除52, 13和26的最大公因子是 ,13又可整除 , 的最大公因子是13 又可整除52 故该方程有整数解( =2, =1即方程的解 即方程的解). 故该方程有整数解(如x=2,y=1即方程的解).
例4.6 求解斐波那契数
0,1,1,2,3,5,8,13,21,34,… (1) 13,21,34, 来源于1202年意大利数学家斐波那契 Fibonacci) ( L.P.Fibonacci) 在 其 《 珠 算 之 书 》 ( Liber Abaci)中提出的一个"兔子问题" Abaci)中提出的一个"兔子问题":
丢番图方程的可解性问题
古希腊数学家丢番图(Diophantus):代数学 古希腊数学家丢番图(Diophantus) 之父
在《算术》(Arithmetica)一书中提出了有关两 算术》( 》(Arithmetica)一书中提出了有关两 个或多个变量整数系数方程的有理数解问题 的有理数解问题. 个或多个变量整数系数方程的有理数解问题. 对于具有整数系数的不定方程 如果只考虑其整 整数系数的不定方程, 对于具有整数系数的不定方程,如果只考虑其整 数解,这类方程就叫做丢番图方程. 数解,这类方程就叫做丢番图方程.
语法:原语的符号表示 语法: 语义: 语义:表达了原语的意义
1.自然语言
缺点
由于自然语言的歧义性, 由于自然语言的歧义性 , 容易导致算法执行的不 确定性; 确定性; 自然语言的语句一般太长, 自然语言的语句一般太长 , 从而导致了用自然语 言描述的算法太长; 言描述的算法太长; 由于自然语言表示的串行性, 因此, 由于自然语言表示的串行性 , 因此 , 当一个算法 中循环和分支较多时就很难清晰地表示出来; 中循环和分支较多时就很难清晰地表示出来; 自然语言表示的算法不便翻译成计算机程序设计 语言理解的语言. 语言理解的语言.
又表述了一个判定过程,该过程可以判定" 又表述了一个判定过程 , 该过程可以判定 " m和 n 是互质的" 即除1以外, 没有公因子) 是互质的"(即除1以外,m和n没有公因子)这个 命题的真假. 命题的真假.
算法
算法的定义和特征
1.算法的非形式化定义 一个算法,就是一个有穷规则的集合, 一个算法,就是一个有穷规则的集合,其中之 规则规定了一个解决某一特定类型问题的运算 序列. 序列.
"丢番图方程可解性问题"的实质为:能否写 丢番图方程可解性问题"的实质为: 出一个可以判定任意丢番图方程是否可解 任意丢番图方程是否可解的算 出一个可以判定任意丢番图方程是否可解的算 法?
一个未知数的线性丢番图方程的解
ax=b,只要a能整除b,就可判定其有整数解, ax= 只要a能整除b 就可判定其有整数解, 该整数解即b 该整数解即b/a.
算法
算法的表示方法
原语
一个算法的表达需要使用一些语言形式
自然语言" 自然语言"Visiting grandchildren can be nerve-racking" nerve-racking",可能即意味着孙子孙女导致了 很多问题, 很多问题,也表示去看他们可能会有问题 图形语言: 图形语言:很少人能够根据折纸图给出的步骤成 功地叠出一只鸟来, 功地叠出一只鸟来,但一个专门学习过折纸的学 生可以轻松完成
假设一对刚出生的兔子一个月后就能长大, 假设一对刚出生的兔子一个月后就能长大 , 再过 一个月就能生下一对兔子, 一个月就能生下一对兔子 , 并且此后每个月都能 生一对兔子, 生一对兔子 , 且新生的兔子在第二个月后也是每 个月生一对兔子. 个月生一对兔子. 一对兔子一年内可繁殖成多少对兔子? 问:一对兔子一年内可繁殖成多少对兔子?
相关文档
最新文档