每节一经典 用系统的观点观察问题 总体设计,逐步求精 计算机科学学院 王小明 (博士/教授/博士生导师)

Slides:



Advertisements
Similar presentations
第一讲:导论 The Introduction  哲学与中国哲学  哲学与哲学史  中国哲学史的历史.
Advertisements

小紅帽 仁愛國小 三年一班 黃馨慧 從前有個可愛的小姑娘,誰見了都喜歡,但 最喜歡她的是她的奶奶,簡直是她要什麼就 給她什麼。一次,奶奶送給小姑娘一頂用絲 絨做的小紅帽,戴在她的頭上正好合適。從 此,姑娘再也不願意戴任何別的帽子,於是 大家便叫她 “ 小紅帽 ” 。
第三单元明清帝国的繁荣与近代前夜的危机 第19课明清抗击外国侵略的英勇斗争.
河內塔(Hanoi)問題.
觀舌知健康 第三課 蒲公英學會 蒲公英學會.
第三章 蒙太奇与长镜头 20世纪20年代,前苏联电影理论家谢尔盖·爱森斯坦以感性思维和理性思维的辩证法为依据,提出了系统研究电影特性的美学理论和实践原则,即蒙太奇理论,这一理论后来也泛指有关剪辑和分镜头的理论。 爱森斯坦之外,库里肖夫、普多夫金、维尔托夫等人对蒙太奇理论做出了重要贡献。前苏联蒙太奇学说体系中,以爱森斯坦的“冲突论”和普多夫金的“组合论”最具纲领性。
感觉器.
感谢各位家长在百忙之中抽出时间参加本次家长会 !
项目六 电动机基本知识 任务一:变压器的拆装.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
課程設計者:新北市育林國中 林憶辰老師 分享者:林慧娟
认识常见的寄生虫和病原微生物 浙江省疾病预防控制中心 传防所.
计算学科的基本问题 本章首先介绍一个对问题进行抽象的典型实例——哥尼斯堡七桥问题。然后,通过“梵天塔”问题和“停机问题”分别介绍学科中的可计算问题和不可计算问题。从“梵天塔”问题再引出算法复杂性中的难解性问题、P类问题和NP类问题,证比求易算法,P=NP是否成立的问题。
第五組 組員:廖俊明、田景文、陳坤利、鄭可萱、張東銘、劉俊麟、廖佩茹、張家誠
消防安全伴我行! 济宁市兖州区第九中学 刘新成.
液压舵机的工作原理和基本组成 一、泵控型液压舵机 二、阀控型液压舵机.
轻扣诗歌的大门.
开题报告.
Next 三個士兵,拖著腳步,走在陌生鄉下的路上。他們剛打完仗從戰場走路回家。他們很累,肚子又餓。實際上,他們已經兩天沒有吃東西了。
研 究 背 景 現在若談到木屐時,世界上最知名國家就屬 日本,是日本服飾文化的一個標誌。據記載,日
交通事故處置 當事人責任與損害賠償 屏東縣政府警察局交通隊.
第十一章 真理与价值 主讲人:阎华荣.
我国的宗教政策 第七课第三框.
南投縣永昌國小 自衛消防編組訓練.
科學月刊 第一期 由科學學會製作.
职业责任保险 郝豫华
中国企业社会责任探讨 2010思政四组
第七章 固 定 资 产.
阅读领航 春天景致类诗歌 徐扬 小组 组员:徐成 周闻欣 洪骋宇 胡浦欣 (排名不分先后).
第三节 预付账款.
《基础会计》 财务会计报告的编制——利润表
100學年度 教師教學媒體製作觀摩 氣壓丙級檢定術科教材之一 機械系 副教授 王俊斌 日期:
上海交通大学 概率论第一、二章测验题 大学数学教研室 童品苗.
第六节 脑和脊髓的传导通路.
学籍异动学生选课辅导 学年第1学期.
第三组 组长:欧阳俊斌 组员:卓小华 谢三艳 邱旭燕 吴美莲 邓建红.
第四章 计算科学教学计划与课程体系 4.1 计算科学(专业)的培养规格和目标
什么是京剧? 它是一门音乐、舞蹈、艺术和杂技的综 合艺术。是中国最有影响、最有代表性的戏剧。
手术部位感染目标性监测存在的问题及对策探讨
我 读 书 我 快 乐 五(2)中队读书活动主题班会.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
洛阳师范学院思想政治教育省级教学团队网络课程 中国哲学史 孟子
第5章 函数与模块化设计 学习目的与要求: 掌握函数的定义及调用方法 理解并掌握参数的传递方法 理解函数的嵌套与递归调用
第 12 章 交流電源 …………………………………………………………… 12-1 單相電源 12-2 單相三線式 ※ 12-3 三相電源.
第八章 函数.
書名 Java於資料結構與演算法之實習應用
6 使用者函數 6.1 函數定義 宣告函數 呼叫函數 呼叫多個函數 6-6
第二章 程序的灵魂--算法.
第二部分 免疫系统与免疫活性分子 第二章 免疫系统 第三章 免疫球蛋白 第二 部分 第五章 细胞因子 第四章 补体系统.
综合实践一题多解试题 第四题 七(五)班 吴飞潼.
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
第二节 极限 一、数列极限 定义:.
粵劇服裝 組長:鄧凱文(14) 組員姓名:蔡慧虹(2) 李祖兒(9) 楊紫盈(19).
C语言大学实用教程 第5章 函数与程序结构 西南财经大学经济信息工程学院 刘家芬
偶發事件處理 偶發事件的類型很多,有在校內的,也有在校外的,但是都是我們做為一個班級的經營者所需要注意的事情。 報告組員
五十年前英国伦敦的情况与我国当前 何其相似乃尔
第10讲 构造函数和析构函数 构造函数 析构函数 This 指针.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
第5章 函 数.
資料結構與C++程式設計進階 遞迴(Recursion) 講師:林業峻 CSIE, NTU 6/ 17, 2010.
第7章 程序的结构 四、生存期与存储属性 五、extern关键字与外部连接属性 六、static关键字与内部连接属性.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
遞迴 Recursion.
「Love症候群」身心靈無痛治療法.
梅竹賽 第二次公聽會
南昌大学研究生数学建模竞赛教学案例(库)
第四章 线性方程组 4.1 消元法 4.2 矩阵的秩 线性方程组可解的判别法 4.3 线性方程组的公式解 4.4 结式和判别式.
数据库使用指南 超星电子图书和读秀学术搜索.
函数与导数 临猗中学 陶建厂.
Presentation transcript:

每节一经典 用系统的观点观察问题 总体设计,逐步求精 计算机科学学院 王小明 (博士/教授/博士生导师) sss 每节一经典 用系统的观点观察问题 总体设计,逐步求精 计算机科学学院 王小明 (博士/教授/博士生导师) Email: wangxm@snnu.edu.cn 1

第3讲 算法工具与优化技巧 √算法设计7部曲 问题定义—问题分析—数学模型—计算模型-算法设计—算法分析—算法优化 重复操作是复杂算法的重要特征,解决办法有:循环结构,递归结构。 (1)循环结构设计要注重效率(时间、空间) 问题:例如,求1/1!-1/3!+1/5!-1/7!+…+(-1)n+1/(2n-1)! 分析:此问题需要先进行累乘(求阶乘),再把累乘的结果的符号倒数进行累加. 数学建模:Sn=Sn-1+(-1)n+1/(2n-1)! 计算机建模(计算模型):S=S+(-1)n+1/(2n-1)!,(这个式子称为循环不变式). 算法设计1: 2重循环实现,效率低。

第3讲 算法工具与优化技巧 注:(1)中问题算法设计 与算法分析: 1)算法正确。因为算法能实现解决问题的目标。 2)算法可终止。当输入确定的n值后,内、外循环的 次数都是有限的,其他语句各执行一次,语句个数也是有限的,所以算法执行有限次后必然终止。 3)算法时间复杂度是O(n2). 缺陷:算法效率低(时间复杂度仍然高O(n2))。 原因:(1)每一个数的阶乘都需要计算:1*2*3*…*m, (2)每一次循环需要重复计算sign=sign*(-1), 共n*(n-1)/2次,这是没有必要的。 改进:从数学模型入手 Sn=Sn-1+(-1)n+1An ; An=An-1*1/((2*n-2)*(2*n-1)). 计算模型: S=S+(-1)n+1/A; A=A*(2*i-2)*(2*i-1); 再优化: (-1)n+1用sign=-sign实现。 Main() {int i,n,j,sign=1; float s,t=1; input(n); s=1; for(i=2;i<=n;i=i+1) {t=1; for(j=1;j<=2*i-1;j=j+1) t=t*j; sign=1; for(j=1;j<=i+1;j=j+1) sign=sign*(-1); s=s+sign/t; } print(“sum”,s);

第3讲 算法工具与优化技巧 Main() {int i,n,j,sign=1; 算法分析: float s,t=1; input(n); s=1; sign=1; for(i=2;i<=n;i=i+1) {sign=-sign; A=A*(2*i-2)*(2*i-1) S=S+sign/A } print(“sum”,s); 算法分析: 1)算法正确。因为算法能实现解决问题的目 标。 2)算法可终止。当输入确定的n值后,循环的 次数是有限的,其他语句各执行一次,语 句个数也是有限的,所以算法执行有限次后 必然终止。 3)算法时间复杂度是O(n).

第3讲 算法工具与优化技巧 设计原则:自顶向下,逐步求精 (程序设计课程已讲) (3)特殊问题,具体分析 设计打印下列图形的算法: 1 (2)自顶向下设计(从总体到细节) 设计原则:自顶向下,逐步求精 (程序设计课程已讲) (3)特殊问题,具体分析 设计打印下列图形的算法: 1 5 2 8 6 3 10 9 7 4 (课堂练习)

第3讲 算法工具与优化技巧 (2)递归(recursion)设计要点 什么是递归? 一个函数或过程在其定义或说明中又直接或间接调 用自身的方法 例: 递归函数F可定义如下 Function F(x) Begin If x=1 Return(1) Else y=F(x-1) End

第3讲 算法工具与优化技巧 递归算法设计:把一个复杂的大问题层层转化为一个与原问题相 似的较小问题,再逐步求解小问题,然后回过头 来求得大问题的解。 问题从大到小逐步化小 答案从小到大构造 解决最小问题(简单问题)

第3讲 算法工具与优化技巧 递归算法特点:优点:1)算法简洁(语句(代码)少)。 2)易分析。 缺点:执行效率低(时间多、占用存贮空间多)。 算法设计步骤:1)构造递归关系:逐步使问题变小的规律(数学 公式); 2)找出递归停止条件:最小问题的解,如1!=1; 3)设计计算模型:根据1)设计计算模型. 例如: 求:1+2+3+…+100 的和。 数学模型是:S= 1+2+3+…+100 计算模型是:S=S+i

第3讲 算法工具与优化技巧 日子不好打法?你想消磨时光? 请君玩汉诺塔游戏!----- 一个递归问题的实例 也许它会使你成为超人天才!获得重大发现! A C B

第3讲 算法工具与优化技巧 递归算法设计 例3.1 汉诺塔问题:从一个古老的传说谈起。 C A B 第3讲 算法工具与优化技巧 递归算法设计 例3.1 汉诺塔问题:从一个古老的传说谈起。 古代有一个梵塔,塔内有三个基座A,B,C,最初A上有64个 大小不等的圆盘,大盘在下,小盘在上。有一个老和尚 想把64个盘从A移到B,但每次只能移动一个盘,并且在移动过程 中,3个基座上的盘都保持大盘在下,小盘在上。移动过程中利用 C做辅助。 问题1:需要多长时间? 问题2:如何设计计算机算法实现上述目标?

第3讲 算法工具与优化技巧 递归算法设计:汉诺塔问题---世界末日问题 很不幸! 每秒移动一次,无任何多余的移动步骤,完成64个盘子的移动任务需要约5800亿年! B A C

第3讲 算法工具与优化技巧 例3.2 只有3个盘子的世界末日问题 A C B 1 2 3 最终目标 4

第3讲 算法工具与优化技巧 例3.2 只有3个盘子的世界末日问题(续) A C B 5 6 7 共7步

第3讲 算法工具与优化技巧 演示: A C B

第3讲 算法工具与优化技巧 初始状态:A(1,2) Step 1: A( ,2) B( ) C(1) 从简单问题入手:2个盘子的世界末日 问题解决思路。 初始状态:A(1,2) Step 1: A( ,2) B( ) C(1) Step 2: A( , ) B(2) C(1) Step 3: A( , ) B(1,2) C( ) 猜想1:步数=22-1=3 ? 猜想2:步数=2n-1 ? ? 目标 A C B 1 2 A B C 1 2 A C B 2 1 A B 1 C 2

第3讲 算法工具与优化技巧 从简单问题扩展:n个盘子的世界末日问题解决思路。 基本思想: 2)再把编号(n-1)的盘子与编号为n的盘子一起看作2 个盘子,进行移动。

第3讲 算法工具与优化技巧 n个盘子的世界末日问题解决过程。 移动过程: 1)把上层编号为(n-1)盘子看成 一个整体,从A借助B移到C 2 A n-1 n C B 第3讲 算法工具与优化技巧 n个盘子的世界末日问题解决过程。 移动过程: 1)把上层编号为(n-1)盘子看成 一个整体,从A借助B移到C 2)然后把编号为n的盘子从A移到B 3) 再把C上的编号为(n-1)的 盘子借助A移到B.

1 2 A n-1 n C B

第3讲 算法工具与优化技巧 n个盘子的世界末日问题解决算法: 1)设计一个名为hanoi(n,a,b,c)的算法,其中n是圆盘层数, a,b,c是基座的功能标记,注意:a,b,c并不总是代表A,B,C. a:每次移动的起始基座; b:每次移动的目标基座;c:辅助基座 Step1:hanoi(n-1,a,c,b) Step2: 把最下面一个大盘从A移到B Step3: hanoi(n-1,c,b,a) 注意:hanoi(n-1,*,*,*)位置变量. a n-1 c a 第n个 b c n-1 b

第3讲 算法工具与优化技巧 Public static void hanoi(int n,int a,int b,int c) { if (n>0) hanoi(n-1,a,c,b) move(a,b) hanoi(n-1,c,b,a); }

第3讲 算法工具与优化技巧 定理 3.1 对n阶汉诺塔问题,共需2n-1次移动操作. 证明:用数学归纳法。 2*(21-1)+1=2*2-2+1=22-1=3,此时结论成立。 3)假设n=k时,结论成立(k>1),即k阶汉诺塔问题,共需2k-1次移动操作. 4) 当n=k+1时,把k个盘子看成一个整体(看成一个盘子),再把第k+1个盘子和 k个盘子构成的那个整体盘子一起看作2个盘子进行移动。由2)知,共需要移 动次数:2*(2k-1)+1= 2k+1-1. 综合1)、2)、3)、4),定理得证。 因此,上述算法的时间复杂度是:O(2n), 即指数复杂度的,也就是说它是NP问 题。

第3讲 算法工具与优化技巧 小结: 循环算法效率问题:尽可能降低循环嵌套,提高时间效率。 递归算法设计要点,步骤。 作业:1)试用手工操作,画出4或5阶汉诺塔求解过程。 2)设计汉诺塔求解算法,如有兴趣可在机器上运行 ,看看当n增大时,算法所用时间长短变化情况。 3)预习:P61-68,递归与循环比较

That’s all for today See you next time Good bye!

第3讲 算法工具与优化技巧 √递归与循环比较 递归是实现“重复操作”的一种机制,通过把大问题化小,小问题化到能解问 题为止,再由小到大把问题的解“累积”起来,从而得到最大问题(原问题) 的解,需要用到数据结构中的栈(stack)来暂时存贮中间结果。 重要结论: 定理3.2 每个迭代算法原则上总可以转换成与其功能等价的递归算法;反之不然,即并 不是每个递归算法都可以转换成与其功能等价的迭代算法。 证明:提示:后一部分结论证明只需举例汉诺塔问题作为反例即可证明。前半部分结论 需要程序变换知识,比较难(省略,有兴趣的同学可以试一试)。 注意: 有些递归程序转化为非递归程序需要栈(stack)辅助,有些则不需要栈(stack)辅助。

第3讲 算法工具与优化技巧 √递归与循环比较 递归算法优缺点: 优点: 1)更接近自然语言理解 2)算法简洁,设计难度小 3)正确性容易证明 4)复杂性容易分析 缺点: 1)时间效率低(执行速度慢:保存中间结果现场、返回时回收资源 需要时间) 2)空间效率低(用stack保存中间结果现场)

第3讲 算法工具与优化技巧 √递归与循环比较 迭代算法优缺点: 缺点: 1)不接近自然语言,难理解 2)有些算法较长 3)有些算法正确性不容易证明 4)有些算法复杂性不容易分析 5)适用范围小,设计难度大 优点: 1)时间效率高(一般不需要保存中间结果现) 2)空间效率高(一般不用stack保存中间结果现场)

第3讲 算法工具与优化技巧 √算法与数据结构(自己复习、看书总结) 算法+数据=程序 数据=数据元素+存贮结构 所以存贮结构影响算法,算法影响存贮结构。 作业:p75, 例15;p77,例17

第3讲 算法工具与优化技巧 √算法优化技巧(自己复习、看书总结) 作业:p114, 例40;p115,例41

第3讲 算法工具与优化技巧 √习题 作业:p118,(9,10,12,15,20,27)

That’s all for today See you next time Good bye!