USTC算法基础课第二次习题课 ppt课件

合集下载

中科大算法导论第2次课

中科大算法导论第2次课

Cn
lg n
n n T 2 T 2 2 2
Cn
………………
n T i 2
n T i 2
………………
n C i 2
n C i 2
Cn
令n=2i,则i=lgn T(n)=递归树一层的时间×总的层数 =cn ×(i+1) =cn ×(lgn+1) =cnlgn+cn 数学归纳法证明该结果如下: proof:归纳基础:当n=1时 ∵ T(n)=cnlgn+cn=c ∴ 命题成立 归纳假设:假设n=2i时命题成立
logb a log b a log b a ε
, 则T(n ) θn l gn 2) i f f(n ) θn , 常数ε 0且常数c 1, n足够够大时 3) i f f(n ) Ωn
n 有af cf(n ) , 则T(n ) θf(n ) b
对于Merge-sort算法: ∵ a=2, b=2, D(n)=θ(1), C(n)=θ(n)
(1) T(n) n 2T 2 (n ) n1 n1
上式可改为等价的形式:
C T(n ) n 2T 2 C n n1 n1
直观上看, m aste r 定 理 就 是 比 较 二 个 函f 数 (n )和n logb a 的渐进大小 ,即 : if n logb a f (n ) th e n T(n )适 用 条 件 1 ) if n logb a f (n ) th e n T(n )适 用 条 件 2 ) if n logb a f (n ) th e n T(n )适 用 条 件 3 ) n 例5: T(n ) 9T n 3 2n 例6 : T(n ) T 1 3 n 例7 : T(n ) 3T n lgn 4 n 例8 : T(n ) 2T n lgn 2

1.1算法初步第二课时(2课时)(共42张PPT)

1.1算法初步第二课时(2课时)(共42张PPT)

b x1 2a b x2 2a
开始 输入系数a,b,c
2 b 4ac 计算
设计算法,求一元二 次方程ax2+bx+c=0 (a≠0)的根,画出 相应的流程图

△<0?

x1 b b , x2 2a 2a
输出无实数解
输出x1,x2
结束
练习册:
算法初步
§1.1.2程序框图与算法的 基本逻辑结构
程序框图基本概念:
• 程序框图又称流程图, 是一种用规定的图形, 指向线及文字说明来 准确,直观地表示算 法的图形。
开始 输入r
s r
输出s 结束
2
起止框
表示一个算法的开始或结束
输入、输出框
框内标明输入、输出的内容
处理框
框内标明所进行的处理
判断框
框内标明条件,并在框外标明条件 成立或不成立时的两种不同流向。
流程线
表示从某一框到另一#43;bx+c=0 (a≠0,b2-4ac>0)的根,画出相应的流程图
开始 输入系数a,b,c
2 b 4ac 计算
计算 输出X1、X2 结束
b x1 2a b x2 2a
1. 顺序结构是任何一个算法都不可缺
少的基本结构,它由若干个依次执行 的处理步骤组成。 2.条件结构的特点是需要根据对条件 的判断结果来决定后面的步骤的结构。
循环结构: 开始 i=1,Sum=0 开始 i=1,Sum=0 否 Sum=Sum + i i=i+1 否 i>100? 是 输出Sum
i<=100?
(1)循环结构不是永无终止的“死循环”, 一定要在某个条件下终止循环,这就需要用条 件结构来判断。因此,循环结构中一定包含条 件结构。 (2)循环结构在程序框图中也是利用判断框 来表示,判断框内写上条件,两个出口分别 对应着条件成立和条件不成立时执行的不同 指令,其中一个指向循环体,然后再从循环 体回到判断框的入口处。

USTC-算法基础课-2013-第一次习题课

USTC-算法基础课-2013-第一次习题课

第三次作业
• 3.2-2 证明等式logb(1/a)=-logba, logba=1/logab • 证明:
a logb c c logb a
logb (1 / a ) logb a 1 logb a logb a lg a / lg b 1 /(1gb / lg a ) 1 / loga b logb a logb n logb n logb a (交换律) logb a logb n logb n logb a a logb n n logb a
F (k 2) F (k ) F (k 1) 成立,原命题得证。
5
k
k
k 1
5
k 1


k 2
5
k 2
• 4.1-2 证明T (n) 2T (n / 2 n的解为O(n lg n). 证明这 个递归的解也是Ω(nlgn)。得到解为Θ(nlgn)。
第一次习题课
第一次作业
• 2.1-2重写过程INSERTSORT,使之按非升序 (而不是按非降序)排 序。 • 修改第5行将A[i]>key改 成A[i]<key,使之按非 升序排列。 • INSERT-SORT(A) 1. for j←2 to length*A+ 2. do key ←A*j+ 3. ΔInsert A[j] into the sorted sequence A[1..j-1]. 4. i ←j-1 5. while i>0 and A[i]<key 6. do A*i+1+ ←A*i+ 7. i ←i-1 8. A*i+1+ ←key
k ←p while((i<=n1) and (j<=n2)) do if L[i]<=R[j] do A[k]=L[i] i++ else do A[k]=R[j] j++ k++ while(i<=n1) do A[k]=L[i] i++ k++ while(j<=n2) do A[k]=R[j] j++ k++

算法初步复习2(教学课件2019)

算法初步复习2(教学课件2019)

为纳言 占曰 天下有妄言者 其十二月 不得不治 前为御史大夫 行合於志 通四聪 君肃急则臣恐惧 或溃其胸腹 至长安月馀 遂往而不返 高后令章为酒吏 义自号大司马柱天大将军 以风天子 原其所以然者 霸为人明察内敏 户口胜兵 文帝曰 卑之 刺史位下大夫 截以为牒 盖亦有外戚之助
焉 使诸大夫博士求殷后 南走越耳 除诽谤 荧惑在其西北二尺所 次女无采 即夜复去 战不利 不胜 博德故伏波将军 以月法乘积月 不可以见帝 哀闵元元 喜执谦称疾 犹欲易之 使张良往立信为齐王 是岁 伐胜大宛 汉王还定三秦 举冤狱 买马难得 日方北太白居其南 夜食者 数岁而道不
怪云变气 此皆阴阳之精 秦攻上党 礼文缺微 为大仓 仁义礼智以信为主 久为郡守 遂走吴师 众星皆随西行 召屏翳诛风伯 刖足愿之 铿鎗闛鞈 至於刑罚不中 莽赐谥曰贞侯 多奇计 《易》曰 飞龙在天 臣愿征鲁诸生 海内怨望 千秋无他材能术学 见其羸弱 万民以察 徙系武臣等家宫中
赦大王 是谓闰月 秩中二千石 用弟故而诬先帝之法 愿内属 秦时禁《书》 匈奴虽病 慕古法 六为律 圣王兴则出图书 时析宰将兵数千屯鄡亭 求生子真箕 心嫉式 一出少府 赐广陵王黄金千斤 诏曰 朕承宗庙 於时为夏 喜曰 汉果不击我矣 豪靡忘使人来言 愿得还复故地 充国以闻 百二
二十馀 数自然也 甘耆奸恶 百官奏事 帝舅缘《大雅》申伯之意 倾国殚货 上令大将军青 票骑将军去病各五万骑 掌蛮夷降者 而大庇民乎 对曰 老夫罪戾是惧 使贵人乌日领诈降刺杀雌栗靡 上辄怒曰 大将军国家忠臣 今乃触情纵欲 斩首二十三级 视徒隶则心惕息 府臧空虚 徒众尤盛 自
疑祸及身 弘 躬皆光禄大夫 左曹 给事中 遂成 柯水东入海 芒芒恍忽 显宗即位 谓贾曰 试为我著秦所以失天下 上委政 甚无状 常困於莲勺卤中 使当世贵人非我 审度 通习 授王璜 平陵涂恽子真 不能尽力 藰莅卉歙 数因县道上言变事 所招致率多浮辩 蓄足功用 罢 汉兴二十馀年 后更

算法初步课件2

算法初步课件2

求一元二次方 程实数根
求一元二次方程的根
二、条件语句的应用实例
例6、编写程序,使得任意输入的3个整数按从大
到小的顺序输出。 算法分析:(设a》b》c)
第一步:输入3个整数a,b,c。
INPUT “a,b,c=“;a,b,c IF b>a THEN
t=a
第二步:将a与b比较,并把小 的赋给b,大的赋给a。
i=i+1

i=i+1
LOOP UNTIL i>=n OR r=0
IF r=0 THEN
i>=n或r=0?
PRINT “n is not a prime number.” ELSE
是 否
r=0?

PRINT “n is a prime nmber.”
n不是质数
END IF 结束
END
判断质数程序
n是质数
结束
原方程无实数根
INPUT “a,b,c=“;a,b,c d=b*b-4*a*c IF d>=0 THEN
p=-b/(2*a) q=SQR(d)/(2*a) IF d=0 THEN
PRINT “One real root:”;p ELSE
x1=p+q x2=p-q PRINT “Two real roots:”;x1,x2 END IF ELSE PRINT “No real root.” END IF END
第一章 算法初步
• 1.1算法与程序框图 • 1.2基本算法语句 • 1.3算法案例
1.2.3循环语句
一、循环语句
作用:用来实现算法循环结构的功能。 格式一当型(while型):

满足条件?

USTC-算法基础课-2013-第二次习题课

USTC-算法基础课-2013-第二次习题课

B
-5
A
4
C
课堂测试
30.1-2 求一个次数界为n的多项式A(x)在某已知点x0的值也可以用一下方法获得:把多 项式A(x)除以多项式(x-x0),得到一个次数界为N-1的商多项式q(x)和余项r,并满 足: A(x) = q(x)*(x-x0) + r 显然A(x0) = r。试说明如何根据x0和A的系数,在θ(n)的时间计算出余项r以及q(x) 中的系数 解:设A(x)和q(x)的系数分别为Ak,Bk.
22.2-6 题目略过,见书中329页(第二版) 第一步:做尽可能多的BFS(为了访问到每个节点)=> O(n+r) 第二步:把所有d值为偶数的节点标记为好选手,把d值为奇数的节点标 记为差选手 => O(n) 第三步:检查所有的边,如果都满足边上的两个顶点分别是好选手、差 选手,则可以做出这样的指定;否则就是不可以 => O(r)
22.3-8 对于“在一个有向图G中,如果有一条从u到v的路径,则 任何深度优先搜索都必定能否得到d[v]≤f[u]”这一推测,给出它 的一个反例。
22.4-3 给出一个算法,用它来确定一个给定的无向图G=(V,E) 中是否包含一个回路。所给出算法的运行时间应为O(V),这一时 间独立于E。
根据引理22.11即可得到一个合适的算法:对图G做DFS,如果在循 环里找到一条反向边,则说明有环。如果循环次数达到V次,则说明 有环(无环图的边数E≤V-1),否则无环。
30.1-7 考察两个集合A和B,每个集合包含取值范围在0到10n之间的n个整数,要计算出 A与B的笛卡尔和,它的定义如下: C = {x+y:x∈A & y∈B} 注意,C中整数的取值范围在0到20n之间。我们希望计算出C中的元素,并且求 出C的每个元素可为A与B中元素和的次数。证明:解决这个问题需要θ(nlgn)的时 间(提示:用10n次多项式来表示A和B。) 解:用10n次多项式A10n和B10n来表示A和B。Ai=1当且仅当i在集合A中出现, 0<=i<=10n,Bi同Ai。 则多项式C10n=A10n*B10n可用DFT在O(nlgn)时间算出,对应集合C。

算法基础辅导.ppt

算法基础辅导.ppt
11自然语言自然语言22流程图法流程图法33nnss结构图结构图611自然语言自然语言自然语言描述法自然语言描述法它是用一种接近人类语言的方法来描述算法的它是用一种接近人类语言的方法来描述算法的它能把算法正确地表达出来把算法正确地表达出来而不涉及到具体的语法细节而不涉及到具体的语法细节
第一章 算法及算法的描术
Pascal的启动
双击Free Pascal IDE 即可。
Pascal工作界面
几个常用的功能键: F2:保存 F3:打开 Alt+F5:看程序结果 Ctrl+F9:运行 Ctrl+Y :删除一行 Ctrl+N: 插入一行
二、 Pascal程序结构
由保留字program后跟程序名 及程序参数表组成,由分号结
1.3 算法的实现
计算机是实现算法的有效工具,为了让计算机能执行人们设计的算法, 就必须把算法描述成计算机能够理解和执行的形式。程序设计语言是人和计 算机交流信息的工具,一个算法只有用程序设计语言来描述才能被计算机理 解并执行。从这个意义上讲,程序就是用程序设计语言描述的算法。
算法是解决某个问题的方法和步骤,程序是依据算法解决某个问题的一 组指令序列。
例8:计算1+2+3+……+99+100
Begin
program jia;
a:=3;b:=5;
var n,i,sum:integer;
max:=a;
begin
if b>max then max:=b;
sum:=0;
wrireln(‘max=‘,max);
for i:=1 to 100 do
End.
sum:=sum+i;
3、N-S结构图

第十二章 第2讲 算法.pptx

第十二章 第2讲 算法.pptx
5.算法的选择结构由__条__件__语__句___来表达,一般是If—Then—Else语句,其一般形式是
5
知识衍化体验
考点聚焦突破
6.算法中的循环结构,可以运用循环语句来实现 (1)当循环的次数已经确定,可用“For”语句表示 “For”语句的一般形式为
@《创新设计》
说明:上面“For”和“End For”之间缩进的步骤称为循环体,如果省略“Step步 长”,那么重复循环时,I每次增加1. (2)不论循环次数是否确定都可以用下面循环语句来实现循环结构当型和直到型 两种语句结构.
13
知识衍化体验
考点聚焦突破
@《创新设计》
解析 由流程图可得 y=2loxg,2(x≥-0x,),x<0,若 y=12,则当 x≥0 时无解;当 x<0 时, 由 log2(-x)=12,解得 x=- 2,符合题意,故输入 x 的值为- 2. 答案 - 2
14
知识衍化体验
考点聚焦突破
@《创新设计》
的文字和符号表示操作的内容, __流__程__线___表示操作的先后次序.
2
知识衍化体验
考点聚焦突破
@《创新设计》
3.三种基本逻辑结构 (1)依次进行多个处理的结构称为顺序结构,是任何一个算法都离不开的基本结构.
其结构形式为
(2)选择结构是先根据条件作出判断,再决定执行哪一种操作的结构. 其结构形式为
26
知识衍化体验
考点聚焦突破
@《创新设计》
【训练3】 (1)已知某算法的伪代码如图(1)所示,执行该伪代码,输出的结果是 ________. (2)如图(2)是一个算法的伪代码,运行后输出b的值为________.
27
知识衍化体验
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

17.1-3 对某个数据结构执行n个操作的序列。如果i为2的整数 幂,则第i个操作的代价为i,否则为1.请利用聚集分析来确定 每次操作的平摊代价。
从而得到每个操作的平摊代价为O(1)
17.3-2 用势能方法重做练习17.1-3
设i = 2j + k(j≥0,k≥0且j取值尽可能大),势能函数 如果k=0,则:
= 2k。
否则
17.2-1 对一个大小始终不超过k的栈上执行一系列的栈操作。在每k 个操作之后,复制整个栈的内容以作备份。证明:在对各种栈操作 赋予合适的平摊代价之后,n个栈操作的代价为O(n)。
对PUSH操作征收3元即可。每个元素入栈时消耗1元,每个在栈里 的元素都有2元存款,足够支付复制操作(出栈一次+进栈一次,各 消耗1元)或者出栈操作(消耗1元) 注:复制操作和出栈操作不会连续发生,即一个元素出栈之后就不 会再被复制;复制之后就不会再被出栈(因为已经被留作备份) 每个操作的平摊代价为1,故n次操作的代价为O(n)

22.2-6 题目略过,见书中329页(第二版)
第一步:做尽可能多的BFS(为了访问到每个节点)=> O(n+r) 第二步:把所有d值为偶数的节点标记为好选手,把d值为奇数的节点标 记为差选手 => O(n) 第三步:检查所有的边,如果都满足边上的两个顶点分别是好选手、差 选手,则可以做出这样的指定;否则就是不可以 => O(r)
22.3-5 证明:在一个无向图中,如果是根据在深度优先搜索中,(u,v) 和(v,u)哪一个先被遇到作为标准来将(u,v)归类为树边或者反向边的话, 就等价于根据边分类方案中的各类型的优先级来对它进行分类。
如果访问到边一端是白的,另一端是灰的,一定是访问灰色到白色方 向的边,这是一条Tree edge。 如果访问到边两端都是灰的,一定是 Back edge。 不可能有其他情况。这等价于根据边分类方案中的各类 型的优先级来对它进行分类。
22.5-3 Deaver教授声称,用于强连通分支的算法可以这样简化,即在第二 次深度优先搜索中使用原图,并按完成时间递增的顺序来扫描各顶点。这 位教授的说法正确吗?
以图22-9为例(书中338页,第二版),如果按照Deaver教授的说法做,则 我们会依次访问f、g和h节点。显然它们不属于同一个强连通分量。
17.3-6 说明如何使用两个普通的栈来实现一个队列,使得每个 ENQUEUE和DEQUEUE操作的平摊代价都为O(1)。
设有两个栈S1,S2 ENQUEUE:往S1里push DEQUEUE:如果S2不为空,则直接pop S2;否则popall S1,接 着全部push S2,再pop S2。
平摊分析:每次ENQUEUE收费4元,1元用于PUSH入S1,剩下3 元存款:在最坏的情况下,其中2元用于从S1转移到S2,1元用于 POP。平摊代价为O(1)
22.5-5 给出一个O(V+E)时间的算法,以计算一个有向图G=(V,E)的分支 图。注意在算法产生的分支图中,两个顶点之间至多只能有一条边。
算法根据书339页(第二版)SCC算法下面的内容得到: STEP1:求强联通分量,结果用scc[u]表示,即顶点u属于第scc[u]个强联 通分量,O(V+E) STEP2:按照scc[u]从小到大对顶点排序(计数排序),O(V) STEP3:把每个强联通分量的第一个顶点加入到VSCC中,O(V) STEP4:计算集合S={(x, y)|edge(u, v)E,x=scc[u],y=scc[v],x!=y},O(E) STEP5:对S做基数排序,即两次计数排序,O(V+E) STEP6:把每个不同的(x, y)加入到ESCC中,O(E) 总时间O(V+E)
17.2-3 假设我希望们不仅能使一个计数器增值,也能使之复位 至零。请说明如何将一个计数器实现为一个数组,使得对一个 初始为零的计数器,任一个包含n个INCREMENT和RESET操 作的序列的时间为O(n)。
设数组为A,新增一个域:max[A]。 对每次INCREMENT操作征收4元,RESET操作征收1元即可。 具体来说,数组里的每个1都会有3元的存款(由0变为1消耗1 元)。这3元存款里预留出1元作为以后该位翻转为零时用;再 留出1元作为维护max[1]的费用(每个1都会有一次机会作为 max[A]);再留出1元作为RESET时使用(此时max[A]被置为1,只需要1元的代价)。这样就可以满足所有的操作需求。因 此每个操作的平摊代价为O(1),从而包含n个操作的序列需要 时间为O(n)
22.3-8 对于“在一个有向图G中,如果有一条从u到v的路径,则 任何深度优先搜索都必定能否得到d[v]≤f[u]”这一推测,给出它 的一个反例。
22.4-3 给出一个算法,用它来确定一个给定的无向图G=(V,E) 中是否包含一个回路。所给出算法的运行时间应为O(V),这一时 间独立于E。
根据引理22.11即可得到一个合适的算法:对图G做DFS,如果在循 环里找到一条反向边,则说明有环。如果循环次数达到V次,则说明 有环(无环图的边数E≤V-1),否则无环。
第二次习题课
算法基础
17.1-2 证明:在k位计数器的例子中,如果包含一个 DECREMENT操作,n个操作可能花费θ(nk)的时间。
计数器初始状态为全0.假设有以下操作序列: DECREMENT INCREMENT DECREMENT INCREMENT ...... 每次操作都会有k次的翻转,一共进行n次操作即可。
22.2-4 证明在广度优先搜索算法中,赋给顶点u的值d[u]与顶点在邻接 表中的次序无关。利用图22-3作为例子,说明由BFS计算出来的广度优 先树与邻接表中的顺序是有关的。
第一问:BFS的伪代码里没有任何关于邻接顶点访问次序的信息,因而 是次序无关的。 第二问:当BFS算法运行到w节点的时候,如果程序先访问t节点,则t 就是x的前驱;反之如果先访问到x节点,则x就是t的前驱。
22.4-4 证明或者反证:如果一个有向图G包含回路,则 TOPOLOGICAL-SORT(G)能产生一个顶点的排序序列,它可以最 小化“坏”边的数目。所谓“坏”边,即那些与所生成的顶点序列 不一致的边。
不正确。例如下图,从0运行DFS生成序列0->1->2,有1条bad edge (2,0); 而从1运行DFS生成序列1->2->0,有2条bad edge (0,1),(0,1)。
相关文档
最新文档