算法分析(2)_2016

合集下载

《高等计算机算法-博士研究生》课程教学大纲

《高等计算机算法-博士研究生》课程教学大纲
1.算法研究引论(2学时):课程的学习心、分治、动态规划)。
3.NP完全理论(6学时):NP完全理论及其在实际问题中的应用。
4.算法专题研究(10学时):3—5个小的前沿领域的算法专题研讨,包括每个领域的基本问题、算法及变型。
5.课程设计(2学时):设计并分析一个难度适当的算法。
2.3计算复杂性导论,堵丁柱、葛可一、王洁,高等教育出版社,2002
预修课程:离散数学,数据结构,算法分析
学科点意见:
学科点负责人签名:
年月日
注:1、类别指公共课、专业课。2、教学内容要强调理论性与应用性课程的有机结合,突出案例分析和实践研究;教学过程要重视运用团队学习、案例分析、现场研究、模拟训练等方法;要注重培养学生研究实践问题的意识和能力。3、编制者一般为该课程主讲教师。
研究生课程教学大纲
课程名称
中文
高等计算机算法
课程编号
0006100038
英文
AdvancedComputerAlgorithms
开课单位
网络空间先进技术研究院
考核方式
考查
学时
32
学分
2
类别
专业课
编制者
课程简介:
高级算法设计与分析是计算机科学与技术及相关专业一门重要的专业基础课。本课程是本科和硕士的算法课程的延续和提升。主要介绍算法的基本设计技巧及高级算法理论在前沿问题和实际问题中的应用。加深学生的算法研究能力,提高学生设计算法来解决实际问题的能力。
教学目标与基本要求:
本课程的目标是使学生通过对高等计算机算法基础的进阶学习以及前沿算法的专题研究,提升学生独立设计算法解决现实问题的能力。其基本要求为:
1.能够使用基本技巧设计算法。
2.理解NP完全理论,并能够应用于解决实际问题。

(陈慧南 第3版)算法设计与分析——第6章课后习题答案

(陈慧南 第3版)算法设计与分析——第6章课后习题答案

⑥ 选择作业 1,则 X 6, 2,3,5,1 。将其按照期限 di 非减次序排列可
得:
ID
di
5
1
6
2
3
3
1
3
2
4
作业5
作业3 作业2
-1
0
1
2
3
4
作业6 作业1(冲突)
该集合无可行排序,因此 X 6, 2,3,5,1 不可行, X 6, 2,3,5 ;
3
⑦ 选择作业 0,则 X 6, 2,3,5, 0 。将其按照期限 di 非减次序排列
可得:
ID
di
5
1
0
1
6
2
3
3
2
4
作业5
作业3 作业2
-1
0
1
2
3
4
作业0(冲突)作业6
该集合无可行排序,因此 X 6, 2,3,5, 0 不可行,X 6, 2,3,5 ;
⑧ 选择作业 4,则 X 6, 2,3,5, 4 。将其按照期限 di 非减次序排列
可得:
ID
Hale Waihona Puke di516
12,5,8,32, 7,5,18, 26, 4,3,11,10, 6 。请给出最优存储方案。
解析:首先将这 13 个程序按照程序长度非降序排列,得:
程序 ID
9 8 1 5 12 4 2 11 10 0 6 7 3
程序长度 ai 3 4 5 5 6 7 8 10 11 12 18 26 32
根据定理可知,按照程序编号存放方案如下:
解析:已知 Prim 算法时间复杂度为 O n2 ,受顶点 n 影响;
Kruskal 算法时间复杂度为 O m logm ,受边数 m 影响;

算法设计与分析课程的“百钱买百鸡问题”趣用

算法设计与分析课程的“百钱买百鸡问题”趣用

143计算机教育Computer Education第 3 期2016 年 3 月 10 日中图分类号:G6420 引 言算法设计与分析课程是高等学校计算机科学与技术及其相关专业的核心课程,如计算机科学与技术专业、软件工程专业、信息安全专业、信息与计算科学专业、管理信息系统专业、通信工程专业等。

该课程旨在培养学生使用计算机分析问题、解决问题的能力,并掌握算法设计的基本方法。

由于算法分析与设计涉及的专业广、学生的层次多,因此,探索算法分析与设计的教学模式与方法正日益引起广大教育者的重视[1]。

当前算法设计与分析课程的教学,普遍存在以下问题:①学生缺乏学习算法的自觉性和积极性;②学生比较厌烦算法的教学内容,对课程的重视程度不够;③教学方法过于简单陈旧;④传统的教学侧重于知识的传授,对学生的学习兴趣等因素重视不够[2]。

这些问题严重影响了算法设计与分析课程教学的效果与质量。

笔者多年从事算法设计与分析课程的教学,不但在教学方法、教学手段上进行了多次有效的改革,同时特别重视第一堂课的引导教学,通过设计“百钱买百鸡问题”教学案例,充分培养学生的学习兴趣,为该课程的学习打下较好的兴趣基础。

“百钱买百鸡问题”教学案例的具体设计方法首先要求学生根据自己所学的知识完成程序设计,然后在分析时间复杂度的基础上,结合初中数学问题引导学生不断进行算法优化,最终从1 000 000次运算优化到4次运算。

在教学过程中,教师加强引导,注重交流,给合数学问题进行算法设计与分析。

学生不但理解了算法优化的重要性,而且认识到在解决问题的过程中结合数学问题进行算法设计的必要性,进一步激发了其学习兴趣,为该课程的学习打下了较好的基础。

1 百钱买百鸡问题描述“百钱买百鸡问题”记载于中国古代约5~6世纪成书的《张邱建算经》中,是原书卷下第38题,也是全书的最后一题。

该问题的描述为:今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。

凡百钱买鸡百只,问鸡翁、母、雏各几何[3]?翻译与现代汉语的意思是:公鸡每只值5文钱,母鸡每只值3文钱,而3只小鸡值1文钱。

(陈慧南 第3版)算法设计与分析——第2章课后习题答案

(陈慧南 第3版)算法设计与分析——第2章课后习题答案
5 n 下面进一步判断: a f (n b) 5 c c n , c f (n) c c n 2 ,因此可取 4 16
2
c
5 , 当 n 足够大时,a f (n b) c f (n) 恒成立。 所以符合主定理的情况 3 , 16
a1 n a0
m a1 nm1 a0 nm n
am am1 n am am1 nt 0 am
m 1
a
0
a1 ntm1 a0 ntm n m 0 0 a1 ntm1 a0 ntm
1 ,当 2
n 足 够 大 时 , a f (n b) c f (n) 恒 成 立 。 所 以 符 合 主 定 理 的 情 况 3 , 因 此
T (n) (n)
(2) a 5, b 4, f n cn 2
解析: nlogb a nlog4 5 n1.161 ,则 f (n) c n2 (nlogb a ) ,其中可取 =0.9 。
n0 3, c 1 ,当 n n0 时, f n g n ,所以 f n = g n
(5) f (n) n 2n g (n) 3n 当 n 1 时 , 有 f (n) n 2n 3n g (n) , 因 此 可 取 n0 1, c 1 , 当 n n0 时 ,
f1 (n) f 2 (n) c1 g1 (n) c2 g 2 (n) cg1 (n) cg 2 ( n) c g1 ( n) g 2 ( n) 2c max{g1 ( n), g 2 ( n)}
因 此 , 可 选 取 n0 max n1 , n2 , c 2c 2 max c1 , c2 , 当 n n0 时 ,

华中科技大学计算机学院离散数学(二) 2016 A 卷 with 答案

华中科技大学计算机学院离散数学(二) 2016 A 卷 with 答案

一. 单项选择(每小题3分,总共15分)( A ) 1、在如下的有向图中,从V 1到V 4长度为3 的道路有( A )条。

A . 1;B .2;C .3;D .4 。

( B ) 2、假设S 、T 是两个有限集合。

那么下面正确的是:A. |S ∪T| = |S| + |T|B. |S ∪T| = |S| + |T| - |S ∩T|C. |S ×T|= |S| × |T| - |S ∩T|D. |S-T|= |S| - |T|( B )3、假定递归算法把一个规模为n 的问题分解为a 个子问题,每个子问题规模为n /b . 再假定把子问题的解组合成原来问题的解的算法处理中,需要总量为g (n )的运算数. 用f (n )表示求解规模为n 的问题所需的运算数,则得出运算数f (n )的递推关系为:A .f (n ) = b f (n /a) + g (n );B .f (n ) = af (n /b ) + g (n );C .f (n ) = f (n /b ) +a g (n );D .f (n ) = ag (n /b ) + f(n );( D ) 4、如果两个图H 与G 同构,且结点数大于1,则下面不正确的是:A .如果H 有一个子图是非平面图,则G 是非平面图B .如果H 是连通图,则G 没有孤立点。

C .H 是偶图则G 也是偶图,反之也成立D .f 是H 的结点集到G 的结点集的双射,则H 的任一结点h 的度数等于G 中结点f(h)的度数。

( D ) 5、下面说法不正确的是:A :不同算法求出的两个不同结点的最短通路的长度是一样的。

B: 不同算法求得的两个不同结点的最短通路可能不一样。

C: 连通有权图的任两个不同结点的最短通路一定是存在的。

D :最短通路未必就是简单路。

二. 填空(每小题3分,总共15分)1、连通无向图有欧拉开路(非回路)的充要条件是2、 83个不同的盒子中,5、三. 解答题(总共40分,每小题5分)1、一个(n,m)简单无向图是2-色图(m>0),那么它上面的所有回路是否都是偶数长?为什么?解答:简单无向图是2-色图(m>0) 就必然是偶图。

长江大学2016数据结构复习要点 (1)

长江大学2016数据结构复习要点 (1)

数据结构复习要点1.选择题(12小题,24分)2.填空题(8小题,16分)3.解答题(5小题,44分)4.算法设计题(2小题,16分)第一章绪论数据结构、数据类型逻辑结构、物理结构逻辑地址、物理地址线性结构、非线性结构(树、图)算法、算法分析(时间复杂度、空间复杂度)第二章线性表线性表、线性关系(前驱、后继)顺序表(插入、删除、查找)链表(插入、删除、查找)*第三章栈和队列栈特点(先进后出)栈的基本操作(入栈、出栈、取栈顶元素)顺序栈的实现(Init/Push/Pop/GetTop)队列特点(先进先出)队列的基本操作(入列、出列)第四章串字符串、空串、空格串串的长度、串相等的条件串的基本操作(SUBSTR/INDEX/CONCA T)第五章数组和广义表二维数组存储(行优先、列优先)二维数组任意元素aij的地址计算稀疏矩阵的压缩存储(三元组、十字链表)广义表特点(层次)广义表的表头、表尾、长度、深度广义表的实现(Head/Tail)第六章树二叉树的概念(完全二叉树、满二叉树、与度为2的树的区别)二叉树的性质(5个)及应用二叉树的遍历(先序、中序、后序)及应用算法*线索二叉树(线索化)最优二叉树(Huffman)的构造及WPL计算*第七章图图(有向图、无向图、有向网、无向网)完全图(有向完全图、无向完全图)图的存储(邻接表、邻接矩阵)*图的遍历(深度、广度)*最小生成树(普里姆、克鲁斯卡尔)* 最短路径关键路径第八章查找顺序查找、折半查找二叉排序树哈希表的构造和平均查找长度的计算* 第九章排序冒泡排序*快速排序*注:有星号标记的表示有大题。

(陈慧南 第3版)算法设计与分析——第1章课后习题答案

(陈慧南 第3版)算法设计与分析——第1章课后习题答案
此时i1即在本次循环中先执行swapa0a1将第二个元素与第一个元素互换下面执行perma1n根据假设可知该语句产生以a1为第一个元素余下k1个元素的全排列
第一章课后习题
姓名:赵文浩 学号:16111204082 班级:2016 级计算机科学与技术
1-4 证明等式 gcd(m,n)=gcd(n mod m, m) 对每对正整数 m 和 n,m>0 都成立。
1-13 写一个递归算法和一个迭代算法计算二项式系数:
#include<stdio.h> int Coef_recursive(int n,int m);//递归算法 int Coef_iteration(int n,int m);//迭代算法 int Factorial(int n);//计算 n 的阶乘 int main() { int n,m;
1-12 试用归纳法证明程序 1-7 的排列产生器算法的正确性。
证明:主函数中,程序调用 perm(a,0,n),实现排列产生器。 ① 当 n=1 时,即数组 a 中仅包含一个元素。函数内 k=0,与(n-1)=0 相等,因此函 数内仅执行 if(k==n-1)下的 for 语句块,且只执行一次。即将 a 数组中的一个元 素输出,实现了对一个元素的全排列。因此当 n=1 时,程序是显然正确的; ② 我们假设程序对于 n=k-1 仍能够满足条件, 将 k-1 个元素的全排列产生并输出; ③ 当 n=k 时,程序执行 else 下语句块的内容。首先执行 swap(a[0],a[0]),然后执 行 Perm(a,1,n),根据假设②可知,该语句能够产生以 a[0]为第一个元素,余下 (k-1)个元素的全排列; 然后再次执行 swap(a[0],a[0]), 并进行下一次循环。 此时 i=1, 即在本次循环中, 先执行 swap(a[0],a[1]), 将第二个元素与第一个元素互换, 下面执行 Perm(a,1,n), 根据假设②可知, 该语句产生以 a[1]为第一个元素, 余下(k-1)个元素的全排列; 以此类推,该循环每一次将各个元素调到首位,通过执行语句 Perm(a,1,n)以及 基于假设②,能够实现产生 k 个元素的全排列。 因此 n=k 时,程序仍满足条件。 ④ 综上所述,该排列器产生算法是正确的,证毕。

专题04 算法、推理与数学文化-高考中的数学文化试题 (解析版)

专题04 算法、推理与数学文化-高考中的数学文化试题 (解析版)

专题04 算法、推理与数学文化纵观近几年高考,算法、推理部分以数学文化为背景的问题,层出不穷,让人耳目一新。

同时它也使考生们受困于背景陌生,阅读受阻,使思路无法打开。

本专题通过对典型高考问题的剖析、数学文化的介绍、及精选模拟题的求解,让考生提升审题能力,增加对数学文化的认识,进而加深对数学文理解,发展数学核心素养。

【例1】(2016•新课标Ⅱ)中国古代有计算多项式值的秦九韶算法,如图是实现该算法的程序框图.执行该程序框图,若输入的x=2,n=2,依次输入的a为2,2,5,则输出的s=()A.7 B.12 C.17 D.34【答案】C【解析】∵输入的x=2,n=2,当输入的a为2时,S=2,k=1,不满足退出循环的条件;当再次输入的a为2时,S=6,k=2,不满足退出循环的条件;当输入的a为5时,S=17,k=3,满足退出循环的条件;故输出的S值为17,故选:C.【试题赏析】本题以秦九韶算法为文化背景,考查程序框图,当循环次数不多,或有规律可循时,可采用模拟程序法进行解答.【例2】(2015·全国卷Ⅱ) 下边程序框图的算法思路源于我国古代数学名著《九章算术》中的“更相减损术”.执行该程序框图,若输入的a,b分别为14,18,则输出的a=()A.0 B.2 C.4 D.14【答案】B【解析】(方法一)逐次运行程序,直至程序结束得出a值.输入a=14,b=18.第一次循环,14≠18且14<18,b=18-14=4;第二次循环,14≠4且14>4,a=14-4=10;第三次循环,10≠4且10>4,a=10-4=6;第四次循环,6≠4且6>4,a=6-4=2;第五次循环,2≠4且2<4,b=4-2=2;第六次循环,a=b=2,跳出循环,输出的a=2,故选B.(方法二)此程序的功能是求18,14的最大公约数,因为18,14的最大公约数为2,所以输出的a=2,选B. 【试题赏析】此题源于《九章算术·方田》,后人称之为“更相减损术”.“更相减损术”实质上是用来求两数的最大公约数,国外的欧几里得算法也可以解决这个问题.此题以“更相减损术”为载体,考查程序框图的应用,这样的设计,不仅可以让学生了解数学文化,形成理性思维,同时也能使学生感受我国古代数学的成就,增强民族自豪感.【例3】(2019课标Ⅱ文)在“一带一路”知识测验后,甲、乙、丙三人对成绩进行预测.甲:我的成绩比乙高.乙:丙的成绩比我和甲的都高.丙:我的成绩比乙高.成绩公布后,三人成绩互不相同且只有一个人预测正确,那么三人按成绩由高到低的次序为()A.甲、乙、丙B.乙、甲、丙C.丙、乙、甲D.甲、丙、乙【答案】A【解析】由题意,可把三人的预测简写如下:甲:甲>乙.乙:丙>乙且丙>甲.丙:丙>乙.∵只有一个人预测正确,∴分析三人的预测,可知:乙、丙的预测不正确.如果乙预测正确,则丙预测正确,不符合题意.如果丙预测正确,假设甲、乙预测不正确,则有丙>乙,乙>甲,∵乙预测不正确,而丙>乙正确,∴只有丙>甲不正确,∴甲>丙,这与丙>乙,乙>甲矛盾.不符合题意.∴只有甲预测正确,乙、丙预测不正确,甲>乙,乙>丙.故选:A.【试题赏析】本题以“一带一路”为文化背景,考查合情推理,因为只有一个人预测正确,所以本题关键是要找到互相关联的两个预测入手就可找出矛盾.从而得出正确结果.【例4】(2014•陕西)观察分析下表中的数据:多面体面数(F)顶点数(V)棱数(E)三棱柱 5 6 9五棱锥 6 6 10立方体 6 8 12猜想一般凸多面体中F,V,E所满足的等式是.【解析】凸多面体的面数为F、顶点数为V和棱数为E,①正方体:F=6,V=8,E=12,得F+V﹣E=8+6﹣12=2;②三棱柱:F=5,V=6,E=9,得F+V﹣E=5+6﹣9=2;③三棱锥:F=4,V=4,E=6,得F+V﹣E=4+4﹣6=2.根据以上几个例子,猜想:凸多面体的面数F、顶点数V和棱数E满足如下关系:F+V﹣E=2再通过举四棱锥、六棱柱、…等等,发现上述公式都成立.因此归纳出一般结论:F+V﹣E=2,故答案为:F+V﹣E=2【试题赏析】本题以欧拉公式为文化背景,考试通过观察它们的顶点数、面数和棱数,归纳出一般结论,得到欧拉公式,着重考查了归纳推理和凸多面体的性质等知识.1.《孙子算经》《孙子算经》是中国古代重要的数学著作.成书大约在四、五世纪,也就是大约一千五百年前.全书共分三卷:上卷详细地讨论了度量衡的单位和筹算的制度和方法.中卷主要是关于分数的应用题,包括面积、体积、等比数列等计算题.下卷对后世的影响最为深远,如下卷第31题即著名的“鸡兔同笼”问题,后传至日本,被改为“鹤龟算”.2.《数书九章》《数书九章》成书于1247年,是南宋数学家秦九韶唯一的数学著作,在长期艰苦的环境中写成的.全书共十八卷,分“大衍”“天时”“田域”“测望”“赋役”“钱谷”“营建”“军旅”“市物”等九类,每类九个问题,共81题.《数书九章》是一部划时代的巨著,内容丰富,精湛绝伦.秦九韶在《数书九章》中所发明的“大衍求—术”,即现代数论中一次同余式组解法,是中世纪世界数学的最高成就,比西方数学家高斯建立的同余理论早500多年,被西方称为“中国剩余定理”.此外,秦九韶还创拟了正负开方术,即任意高次方程的数值解法,也是中世纪世界数学的最高成就,秦九韶所发明的此项成果比1819年英国人霍纳的同样解法早500多年.1. (2019洛阳模拟) 秦九韶是我国南宋时期的数学家,普州(现四川省安岳县)人,他在所著的《数书九章》中提出的多项式求值的秦九韶算法,至今仍是比较先进的算法.如图所示的程序框图给出了利用秦九韶算法求某多项式值的一个实例.若输入n,x的值分别为4,3,则输出v的值为()A.20 B.61 C.183 D.548【答案】C【解析】由程序框图知,初始值:n=4,x=3,v=1,i=3,第一次循环:v=6,i=2;第二次循环:v=20,i=1;第三次循环:v=61,i=0;第四次循环:v=183,i=1.结束循环,输出当前v的值183.2.(2019青岛联考)如图所示的程序框图的算法数学思想源于数学名著《几何原本》中的“辗转相除法”,执行该程序框图(图中“m MOD n”表示m除以n的余数),若输入的m,n分别为495,135,则输出的m=()A.0 B.5 C.45 D.90【答案】C【解析】该程序框图是求495与135的最大公约数,由495=135×3+90,135=90×1+45,90=45×2,所以495与135的最大公约数是45,所以输出的结果是45.3.(2019四川模拟)我国古代数学名著《孙子算经》有鸡兔同笼问题,根据问题的条件绘制如图的程序框图,则输出的x,y分别是()A.12,23 B.23,12 C.13,22 D.22,13【答案】B【解析】由程序框图,得:x=1,y=34,S=138;x=3,y=32,S=134;x=5,y=30,S=130;x=7,y=28,S=126;……,x=23,y=12,S=94.输出x=23,y=12.故选:B.4.(2019黄石二模)公元263年左右,我国古代数学家刘徽用圆内接正多边形的面积去逼近圆的面积求圆周率π.他从圆内接正六边形算起,令边数一倍一倍地增加,逐个算出正六边形,正十二边形,正二十四边形,……的面积,这些数值逐步地逼近圆的面积,刘徽一直计算到正3072边形,得到了圆周率π的近似值3.1416.刘徽称这个方法为“割圆术”,并且把“割圆术”的特点概括为“割之弥细,所失弥少,割之又割,以至于不可割,则与圆周合体而无所失矣”.刘徽这种想法的可贵之处在于用已知的、可求的来逼近未知的、要求的,用有限来逼近无限.这种思想极其重要,对后世产生了巨大影响.如图是利用刘徽的“割圆术”思想设计的一个程序框图.若运行该程序(参考数据:3≈1.732,sin 15°≈0.2588,sin 7.5°≈0.1305),则输出的n 的值为( )A .48B .36C .30D .24【答案】D【解析】输入n 的值为6;第一次循环,S =3sin 60°=332<3.10,n =12; 第二次循环,S =6sin 30°=3<3.10,n =24;第三次循环,S =12sin 15°≈3.1056>3.10,退出循环,则输出的n 的值为24.5.(2019汉中联考)1927年德国汉堡大学的学生考拉兹提出一个猜想:对于任意一个正整数,如果它是奇数,对它乘3加1,如果它是偶数,对它除以2,这样循环,最终结果都能得到1.有的数学家认为“该猜想任何程度的解决都是现代数学的一大进步,将开辟全新的领域”.如图是根据考拉兹猜想设计的一个程序框图,则输出i 的值为( )A .8B .7C .6D .5【答案】A【解析】3a =,1a =不满足,a 是奇数满足,10a =,2i =,10a =,1a =不满足,a 是奇数不满足,5a =,3i =,5a =,1a =不满足,a 是奇数满足,16a =,4i =,16a =,1a =不满足,a 是奇数不满足,8a =,5i =,8a =,1a =不满足,a 是奇数不满足,4a =,6i =,4a =,1a =不满足,a . 是奇数不满足,2a =,7i =,2a =,1a =不满足,a 是奇数不满足,1a =,8i =,1a =,1a =满足,输出8i =,故选A .6. (2019深圳模拟)中国古代数学著作《算学启蒙》中有关于“松竹并生”的问题:松长五尺,竹长两尺,松日自半,竹日自倍,松竹何日而等长.意思是现有松树高5尺,竹子高2尺,松树每天长自己高度的一半,竹子每天长自己高度的一倍,问在第几天会出现松树和竹子一样高?如图是源于其思路的一个程序框图,若输入的x =5,y =2,输出的n 为4,则程序框图中判断框中应填入( )A .y ≤x?B .x ≤y?C .y <x?D .x =y?【答案】B【解析】根据程序框图,输入x =5,y =2,n =1.第一次循环,x =5+52=152,y =4,此时y <x ;第二次循环,n =2,x =152+154=454,y =8,此时y <x ; 第三次循环,n =3,x =454+458=1358,y =16,此时y <x ;第四次循环,n =4,x =1358+13516=40516,y =32,此时y ≥x ,输出n 的值4.由此可知,应填的条件是x ≤y ?.7. (2019包头模拟)我国古代的劳动人民曾创造了灿烂的中华文化,戍边的官兵通过在烽火台上举火向国内报告,烽火台上点火表示数字1,不点火表示数字0.这蕴含了进位制的思想.如图所示的程序框图的算法思路就源于我国古代戍边官兵的“烽火传信”.执行该程序框图,若输入a=110011,k=2,n=6,则输出b的值为()A.19 B.31 C.51 D.63【答案】C【解析】(方法一)输入a=110011,k=2,n=6,输入b=0,i=1.第一次循环,输入t=1,b=0+1×20=1,i=2,2>6不成立;第二次循环,输入t=1,b=1+1×21=3,i=3,3>6不成立;第三次循环,输入t=0,b=3+0×22=3,i=4,4>6不成立;第四次循环,输入t=0,b=3+0×23=3,i=5,5>6不成立;第五次循环,输入t=1,b=3+1×24=19,i=6,6>6不成立;第六次循环,输入t=1,b=19+1×25=51,i=7,7>6成立,退出循环,输出b的值为51.(方法二)将二进制数化为十进制数,a=110011(2)=1×25+1×24+0×23+0×22+1×21+1×20=51.故b的值为51.8.(2019长沙模拟)如图,一块黄铜板上插着三根宝石针,在其中一根针上从下到上穿好由大到小的若干金片.若按照下面的法则移动这些金片:每次只能移动一片金片;每次移动的金片必须套在某根针上;大片不能叠在小片上面.设移完片金片总共需要的次数为,可推得.求移动次数的程序框图模型如图所示,则输出的结果是()A.1022 B.1023 C.1024 D.1025【答案】B【解析】记个金属片从号针移动到号针最少需要次;则据算法思想有:;第一次循环,;第二次循环,;第三次循环,,…,第九次循环,,输出,故选B.9.(2019•九江三模)2018年9月24日,阿贝尔奖和菲尔兹奖双料得主、英国著名数学家阿蒂亚爵士宣布自己证明了黎曼猜想,这一事件引起了数学界的震动,在1859年,德国数学家黎曼向科学院提交了题目为《论小于某值的素数个数》的论文并提出了一个命题,也就是著名的黎曼猜想.在此之前,著名数学家欧拉也曾研究过这个问题,并得到小于数字x的素数个数大约可以表示为n(x)的结论(素数即质数,lge≈0.43429).根据欧拉得出的结论,如下流程图中若输入n的值为100,则输出k的值应属于区间()A.(15,20] B.(20,25] C.(25,30] D.(30,35]【答案】B【解析】该流程图是统计100以内素数的个数,由题可知小于数字x的素数个数大约可以表示为n(x)≈;则100以内的素数个数为:n(100)≈===50lge≈22.故选:B.10.(2019银川二模)原始社会时期,人们通过在绳子上打结来计算数量,即“结绳计数”,当时有位父亲,为了准确记录孩子的成长天数,在粗细不同的绳子上打结,由细到粗,满七进一,那么孩子已经出生多少天?()A.1 326 B.510 C.429 D.336【答案】B【解析】由题意满七进一,可得该图示为七进制数,化为十进制数为1×73+3×72+2×7+6=510. 11.(2019•天河区校级三模)将杨辉三角中的奇数换成1,偶数换成0,得到如右图所示的0﹣1三角数表.从上往下数,第1次全行的数都为1的是第1行,第2次全行的数都为1的是第3行,…,第n次全行的数都为1的是第2n﹣1行;则第61行中1的个数是()A.31 B.32 C.33 D.34【答案】B【解析】由已知图中的数据第1行 1 1第2行 1 0 1第3行 1 1 1 1第4行 1 0 0 0 1第5行 1 1 0 0 1 1…∵全行都为1的是第2n﹣1行;∵n=6时,26﹣1=63,故第63行共有64个1,逆推知第62行共有32个1,第61行共有32个1.故y=32,故选:B.12.(2019•成都模拟)“幻方’’最早记载于我国公元前500年的春秋时期《大戴礼》中.“n阶幻方(n≥3,n∈N*)”是由前,n2个正整数组成的﹣个n阶方阵,其各行各列及两条对角线所含的n个数之和(简称幻和)相等,例如“3阶幻方”的幻和为15(如表所示).则“5阶幻方”的幻和为()8 1 63 5 74 9 2A.75 B.65 C.55 D.45【答案】B【解析】由1,2,3,4…24,25的和为=325,又由“n阶幻方(n≥3,n∈N*)”的定义可得:“5阶幻方”的幻和为=65,故选:B.13.(2019•龙泉驿区模拟)如图所示,正方形上连接着等腰直角三角形,等腰直角三角形腰上再连接正方形,…,如此继续下去得到一个树形图形,称为“勾股树”.若某勾股树含有255个正方形,且其最大的正方形的边长为,则其最小正方形的边长为()A.B.C.D.【答案】A【解析】由题意,正方形的边长构成以为首项,以为公比的等比数列,现已知共得到255个正方形,则有1+2+…+2n﹣1=255,∴n=8,∴最小正方形的边长为×()7=.故选:A.14.(2019•拉萨三模)英国统计学家E.H.辛普森1951年提出了著名的辛普森悖论,下面这个案例可以让我们感受到这个悖论.有甲乙两名法官,他们都在民事庭和行政庭主持审理案件,他们审理的部分案件被提出上诉.记录这些被上述案件的终审结果如表所示(单位:件):记甲法官在民事庭、行政庭以及所有审理的案件被维持原判的比率分别为x1,x2和x,记乙法官在民事庭、行政庭以及所有审理的案件被维持原判的比率分别为y1,y2和y,则下面说法正确的是()A.x1<y1,x2<y2,x>y B.x1<y1,x2<y2,x<yC.x1 >y1,x2 >y2,x>y D.x1 >y1,x2>y2,x<y【答案】D【解析】由图表可知:x1==0,90625,y1==0,9,即x1>y1,x2=≈0.85,y2==0.8,即x2>y2,x==0.86,y==0.88,即x<y,即x1>y1,x2>y2,x<y,故选:D.15.(2019株洲二模)高铁是一种快捷的交通工具,为我们的出行提供了极大的方便。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

递归树
解 T(n) = 2T(n/2) + cn, 其中 c > 0 是常数
递归树
递归树等价于迭代展开
T(n)=4T(n/2)+n =4(4T(n/22)+n/2)+n =42T(n/22)+n+2n =43T(n/23)+n+2n+22n =4hT(n/2h)+n(1+2+┅+2h-1) =n2T(1)+n(2h-1) =Θ(n2) 很多递归式用递归树解不出来,但递归树能提供直 觉,帮助我们用归纳法求解(Guess 归纳假设).
替代法
解递归方程最一般的方法: 1. Guess the form of the solution. 2. Verify by induction. 3. Solve for constants.
例1
T (n) = 4T (n/2) + n (n=2h) [Assume that T (1)=Θ(1).] Guess O(n3) :归纳假定为T (n)≤cn3. c是待定常 数. 应用假定有:T (k) ≤ck3 for k < n . 归纳证明: T (n) ≤ cn3 并确定常数c.
较一般的递归式
较一般的递归:T(n)=aT(n/b)+cn, a,b是大于1的 整数,递归树方法仍可使用. 首先考虑n=bh情形: T(n)=ahT(1)+cn(1+(a/b)+┅+(a/b)h-1) = ahT(1)+cbh(1+(a/b)+┅+(a/b)h-1) 当bh≤n<bh+1 , 仍有: h=Θ(logbn) 换底公式: logbn=log2n/log2b => h=Θ(logn)
补充例题
例题1:展开递归树:T(n)=T(1)+T(n–1)+cn, 并做渐近分析
例题2:展开T(n)=T(0.1n)+T(0.9n)+Θ(n)的 递归树并计算递归树的深度和T(n)的渐近值.
裴波那契(Fibonacci)序列
序列F0=F1=1,Fi=Fi-1+Fi-2 (i>1)称为Fibonacci 序列. 以下算法计算第n个Fibonacci数: proc F(n) if n≤1 return(1) else return( F(n-1)+F(n-2)); end proc 令t(n)为算法执行的加法次数,有: t(n)=0 for n=0,1 t(n)=t(n-1)+t(n-2)+1 特别t(2)=1,t(3)=2
Examples 1
T(n)=4T(n/2)+n a=4, b=2⇒nloga=n2; f(n)=n. 情形1: f(n)=O(n2–ε) for ε=1. ∴ T(n) =Θ(n2).
Examples 2
T(n)=4T(n/2)+n2 a=4, b=2⇒nloga=n2; f (n)=n2. 情形 2: f(n)=Θ(n2lg0n), k = 0. T(n)=Θ(n2lgn).
The Master Method:情形3
情形3 f(n)=Ω(nloga +ε) ε>0为一常数. f(n)多项式地快于nloga (by an nε factor), f(n) 满足以下规则性条件: af(n/b)≤cf(n), 0<c<1 为常数. Solution: T(n) =Θ(f(n)) .
插入排序实例
插入排序分析
最坏情形:输入数据已按倒序排列
T (n) ( j ) (n 2 )
j 2 n
平均情形:输入数据为所有可能的排列
T (n) ( j / 2) (n 2 )
j 2 n
插入排序是否是最快的排序算法? 当n很小时,结论肯定 当n很大时,不一定
归并排序
合并已排序的子序列
归并排序时间复杂度分析
Should be 假定n=2h ,h≥0,上式变为2T(n/2)
归并排序时间复杂度:递归方程
隐含假定n=2h. 以cn代替Θ (n),不影响渐近分析的结果. “If n=1”,更一般的是“if n<n0, T(n)=Θ(1)”: 指:可找到足够大常数c1,使得 T(n)<c1 if n<n0.
算法分析(2)
Pseudocode (伪代码) Solving Recurrences(解递归)
While-循环最坏情形Θ(j). While-循环平均情形Θ(j/2),当插入位置有相同概率时.
伪代码-插入排序
“←”表示”赋值“(assignment). 忽略数据类型、变量的说明等与算法无关的 部分. 允许使用自然语言表示一些相关步骤 伪代码突出了程序使用的算法.
例(续)
T(n)=4T(n/2)+n ≤4c(n/2)3+n =(c/2)n3+n =cn3-((c/2)n3-n) ≤cn3 取 c≥2 and n≥1,不等式(c/2)n3–n≥0成 立,
例(续)
还要检验初始条件是否满足归纳假设. 初始条件为: T(n)=Θ(1),当 n<n0 ,n0为常数. 因为有常数(n0-1)个T的值:T(1),┅,T(n0-1) 所以可取c足够大,使得T(n)≤cn3, 对n<n0 成立. 该上界不是紧上界(tight bound)!
递归树
解T(n) = 2T(n/2) + cn, 其中 c > 0 为常数. 递归展开到T(n0),然后再从前n0个T(n)的值确定渐 近分析的常数. 展开到T(n0),有时会导致推导的麻烦,所以展开到 T(1).
递归树
解T(n) = 2T(n/2) + cn, 其中 c > 0 是常数.
当n≠2h
2h≤n<2h+1=> n=Θ(2h), h=Θ(logn) T(2h)≤ T(n) ≤ T(2h+1). 所以,Θ(h2h)≤T(n)≤Θ((h+1)2h+1) Θ((h+1)2h+1)=Θ(h2h+1+2h+1) =Θ(h2h+1)=Θ(h2h) 所以T(n)=Θ(h2h)=Θ(nlogn)
最优二叉树(optimized binary tree)
for m ←2 to n Θ(1) do {for i ←0 to n-m Θ(1) do{ j←i+m Θ(1) w(i, j) ←w(i, j-1) + P(i) + Q(j) Θ(1) c(i, j)←mini<lj { c(i, l-1) + c (l, j) } + w(i, j) } } W(n,n),P(n),Q(n),c(n,n) 是算法使用的数组,假定已初始化.
例(续)
We shall prove that T(n)=O(n2). Assume that T(k)≤ck2 for k<n: T(n)=4T(n/2)+n ≤4c(n/2)2+n =cn2+n 归纳不能往下进行!
替代法(续)
IDEA: Strengthen the inductive hypothesis. Subtract a low-order term. Inductive hypothesis: T(k)≤c1k2– c2k for k<n. T(n)=4T(n/2)+n ≤4[c1(n/2)2-c2(n/2)]+n =c1n2-c2n-(c2n-n) ≤c1n2-c2n if c2>1
The Master Method:情形1
情形1. f(n)=O(nloga–ε), ε>0,为某一常数 f(n)的增长渐近地慢于nloga (慢 nε 倍). Solution: T(n)=Θ(nloga) .
The Master Method:情形2
情形2: f(n)=Θ(nloga lgkn) k≥0 为某一常数. f(n) 和 nloga 几乎有相同的渐近增长率. Solution: T(n)=Θ(nloga lgk+1n) .
Case 3
反复应用规则性条件有: akf(n/bk)≤ckf(n) 所以: ∑akf(n/bk) ≤∑ckf(n) T(n)=ahT(1)+∑akf(n/bk)≤ahT(1)+f(n)∑ck≤ahT( 1)+f(n)(1-c)-1 因为, f(n)=Ω(nloga +ε),量级高于ah , 所以 T(n)=O(f(n)). 又,T(n)>f(n).所以,T(n)=Θ(f(n))
结论
Θ(n lg n)比Θ(n2)增长的慢. merge sort 渐近(asymptotically)优于插入排序. 实际上, merge sort 优于 insertion sort 仅当 n > 30 or so. 1000*nlogn算法当n比较小时未必比n2算法要 快. n足够大时前者才能看出优势.
Proof (Case 1)
n=bh, nloga=ah,nε=bεh.因f(n)=O(nloga–ε),所以 f(n)≤cnloga-ε=cah/bεh =>f(bh)≤c(ah/bεh) 取充分大的c,使f(bi)≤c(ai/bεi) 对所有i成立. T(n)=ahT(1)+∑akf(bh-k),(∑: k=0,…,h-1) T(n)≤ahT(1)+c∑ak(ah-k/bε(h-k)) =ahT(1)+cah∑(1/bε(h-k)) ≤ ahT(1)+cah∑1≤k<∞(1/bεk) ≤c’ah (因b>1,ε>0,无穷和收敛) 所以T(n)=O(nloga); 显然, T(n)=Ω(nloga)
相关文档
最新文档