算法分析与设计1-数据结构基础.ppt
《算法分析与设计1-数据结构基础.ppt》由会员分享,可在线阅读,更多相关《算法分析与设计1-数据结构基础.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析算法设计与分析课程名称:DesignandAnalysisofAlgorithms主讲人:段友祥主讲人:段友祥石油大学计算机与通信工程学院石油大学计算机与通信工程学院引言计算机科学与技术学科的研究内容计算机科学与技术学科的研究内容简单说,计算机简单说,计算机学科学科是研究机器进行信息表示和信息处理的是研究机器进行信息表示和信息处理的科学。科学。信息表示:信息表示:(1)数字化)数字化:(2)可视化)可视化:(3)效率)效率信息处理:信息处理:(1)方法)方法(2)效率)效率想想看:是不是计算机所有想想看:是不是计算机所有的硬件和软件技术都属于这的硬件和软件技术都属于这两个范畴?两
2、个范畴?引言算法在计算机科学中的地位算法在计算机科学中的地位(1)算法是计算机科学基础的重要主题)算法是计算机科学基础的重要主题70年代后,算法作为计算机科学的核心推动了计算机年代后,算法作为计算机科学的核心推动了计算机科学技术的飞速发展科学技术的飞速发展70年代前,计算机科学基础的主题没有被清楚地认清。年代前,计算机科学基础的主题没有被清楚地认清。70年代,年代,Knuth出版了出版了TheArtofComputerProgramming(三卷)三卷),以各种算法研究为主线,确以各种算法研究为主线,确立了算法为计算机科学基础的重要主题,立了算法为计算机科学基础的重要主题,1974年获得图年获
3、得图灵奖。灵奖。引言算法在计算机科学中的地位算法在计算机科学中的地位(2)计算机科学的体系)计算机科学的体系解决一个计算问题的过程:解决一个计算问题的过程:可计算否可计算否能行可计算否能行可计算否算法设计与分析算法设计与分析用计用计算机语言实现算法算机语言实现算法软件系统软件系统可计算理论可计算理论:计算模型计算模型可计算问题可计算问题/不可计算问题不可计算问题计算模型的等价性计算模型的等价性-图灵图灵/Church命题命题什么是计算?计算机科学的本质:什么是计算?计算机科学的本质:直观地看,计算一般是指运用事先规定的规则,直观地看,计算一般是指运用事先规定的规则,将一组数值变换为另一将一组数
4、值变换为另一(所需的所需的)数值的过程。数值的过程。什么能被自动地有效执行。什么能被自动地有效执行。引言算法在计算机科学中的地位算法在计算机科学中的地位(2)计算机科学的体系)计算机科学的体系计算复杂性理论(能行否)计算复杂性理论(能行否)在给定的计算模型下研究问题的复杂性在给定的计算模型下研究问题的复杂性上界上界下界下界平均平均固有复杂性固有复杂性复杂性问题的非类复杂性问题的非类:P=NP?抽象复杂性研究抽象复杂性研究算法设计和分析算法设计和分析可计算问题的算法的设计与分析可计算问题的算法的设计与分析设计算法的理论、方法和技术设计算法的理论、方法和技术分析算法的理论、方法和技术分析算法的理论
5、、方法和技术引言算法在计算机科学中的地位算法在计算机科学中的地位(3)算法设计与分析的意义)算法设计与分析的意义计算机各领域的核心计算机各领域的核心计算机工程特别是计算机软件工程的基础计算机工程特别是计算机软件工程的基础“一个受过良好的计算机科学知识训练的人知道如何处理一个受过良好的计算机科学知识训练的人知道如何处理算法,即构造算法、操纵算法、理解算法和分析算法。算法的算法,即构造算法、操纵算法、理解算法和分析算法。算法的知识远不是为了编写好的计算程序,它是一种具有一般意义的知识远不是为了编写好的计算程序,它是一种具有一般意义的智能工具,必定有助于对其他学科的理解,不论化学、语言学智能工具,必
6、定有助于对其他学科的理解,不论化学、语言学或者是音乐等或者是音乐等”D.E.Knuth(美国著名计算机科学家美国著名计算机科学家)“算法不仅是计算机学科的一个分支,它更是计算机科学算法不仅是计算机学科的一个分支,它更是计算机科学的核心,而且可以毫不夸张地说,它和绝大多数科学、商业和的核心,而且可以毫不夸张地说,它和绝大多数科学、商业和技术都是相关的。技术都是相关的。”算法学算法学计算机的灵魂计算机的灵魂DavidHarel引言计算机离不开软件,软件简单说就是程序,而程序的核计算机离不开软件,软件简单说就是程序,而程序的核心是算法。心是算法。什么是算法?什么是算法?什么是程序?什么是程序?它们之
7、间的关系?它们之间的关系?算法问题是计算机科学研究的核心问题之一!算法问题是计算机科学研究的核心问题之一!很多科学家在算法及其相关领域取得了创造性的成果很多科学家在算法及其相关领域取得了创造性的成果图灵奖(从图灵奖(从1966年开始已经有年开始已经有50多位科学家获得了这一多位科学家获得了这一殊荣。其中有殊荣。其中有1/3的获奖人是因为在算法和数据结构及其相关的获奖人是因为在算法和数据结构及其相关领域做出了杰出贡献而获奖的)领域做出了杰出贡献而获奖的)了解一下这些了解一下这些“牛牛”人,看看他们的经历和突出成人,看看他们的经历和突出成绩:绩:1930,5,112002,8,6。荷兰计算机科学家
8、,毕业就职于荷兰荷兰计算机科学家,毕业就职于荷兰Leiden大学,早大学,早年钻研物理及数学,而后转为计算学。在年钻研物理及数学,而后转为计算学。在1972年获得年获得图灵奖,图灵奖,之后,他还获得过之后,他还获得过1974年年AFIPSHarryGoodeMemorialAward、1989年年ACMSIGCSE计算计算机科学教育教学杰出贡献奖、以及机科学教育教学杰出贡献奖、以及2002年年ACMPODC最具影响力论文奖。最具影响力论文奖。1972年,年,EdsgerW.Dijkstra因在编程语言方面的出众表现因在编程语言方面的出众表现而获奖。而获奖。这个这个Dijkstra,就是那个提出
9、,就是那个提出“goto有害论有害论”的的Dijkstra,就是那个提出信,就是那个提出信号量和号量和PV原语,解决了有趣的原语,解决了有趣的“哲学家聚餐哲学家聚餐”问题的问题的Dijkstra,那个,那个Dijkstra最短路径算法的创造者,第一个最短路径算法的创造者,第一个Algol60编译器的设计者和实现者,编译器的设计者和实现者,THE操作系统的设计者和开发者,那个与操作系统的设计者和开发者,那个与D.E.Knuth并称为我们这个时并称为我们这个时代最伟大的计算机科学家的人。代最伟大的计算机科学家的人。晚年疯狂的迷恋晚年疯狂的迷恋C+EdsgerDijkstra经典言论:经典言论:1.
10、编程的艺术就是处理复杂性的艺术。编程的艺术就是处理复杂性的艺术。2.优秀的程序员很清楚自己的能力是有限的,所以他对待编程任务的态优秀的程序员很清楚自己的能力是有限的,所以他对待编程任务的态度是完全谦卑的,特别是,他们会象逃避瘟疫那样逃避度是完全谦卑的,特别是,他们会象逃避瘟疫那样逃避“聪明的技巧聪明的技巧”。1972年图灵奖演讲。年图灵奖演讲。3.计算机科学是应用数学最难的一个分支,所以如果你是一个蹩脚的数计算机科学是应用数学最难的一个分支,所以如果你是一个蹩脚的数学家,最好留在原地,继续当你的数学家。学家,最好留在原地,继续当你的数学家。4.我们所使用的工具深刻地影响我们的思考习惯,从而也影
11、响了我们的我们所使用的工具深刻地影响我们的思考习惯,从而也影响了我们的思考能力。思考能力。5.实际上如果一个程序员先学了实际上如果一个程序员先学了BASIC,那就很难教会他好的编程技术,那就很难教会他好的编程技术了:作为一个可能的程序员,他们的神经已经错乱了,而且无法康复。了:作为一个可能的程序员,他们的神经已经错乱了,而且无法康复。6.就语言的使用问题:根本不可能用一把钝斧子削好铅笔,而换成十把就语言的使用问题:根本不可能用一把钝斧子削好铅笔,而换成十把钝斧子会使事情变成大灾难。钝斧子会使事情变成大灾难。7.简单是可靠的先决条件。简单是可靠的先决条件。Dijkstra在在1968年发表的短文
12、:年发表的短文:GoToStatementConsideredHarmful1938年年12月月7日,日,DonaldE.Knuth出生于美国威斯康出生于美国威斯康星州密尔沃基市。让人眩目的履历:星州密尔沃基市。让人眩目的履历:1974年,年,DonaldE.Knuth因在算法分析和编程语言设计方面因在算法分析和编程语言设计方面的突出贡献设计和完成的突出贡献设计和完成TEX(一种创新的具有很高排版质量的一种创新的具有很高排版质量的文档制作工具文档制作工具)而被授予图灵奖而被授予图灵奖。1956年进入俄亥俄州克利夫兰的凯斯理工学院(现并年进入俄亥俄州克利夫兰的凯斯理工学院(现并入凯斯西储大学),
13、学习入凯斯西储大学),学习物理物理。1957年大学一年级暑假在学校打工,接触到当时很先年大学一年级暑假在学校打工,接触到当时很先进的进的IBM650计算机,对其产生浓厚的兴趣。计算机,对其产生浓厚的兴趣。1958年改学年改学数学数学,并从此与计算机结缘。,并从此与计算机结缘。1960年毕业,因为成绩过于出色,校方打破惯例,年毕业,因为成绩过于出色,校方打破惯例,Knuth被同时授予学士和硕士学位。随后进入加州理被同时授予学士和硕士学位。随后进入加州理工学院数学系。工学院数学系。1963年取得博士学位,并留校任助理教授。年取得博士学位,并留校任助理教授。1964-1967年,兼任美国计算机协会刊
14、物年,兼任美国计算机协会刊物程序设计语言程序设计语言编辑。编辑。1966年升为副教授。年升为副教授。1968年任教于斯坦福大学计算机科学系,正教授。同年,开始撰写著名的年任教于斯坦福大学计算机科学系,正教授。同年,开始撰写著名的计算机程序设计艺术计算机程序设计艺术一书。一书。1968年年计算机程序设计艺术计算机程序设计艺术第一卷第一卷基本算法基本算法出版。出版。1969年,第二卷年,第二卷半数字化算法半数字化算法出版。出版。1971年获首届美国计算机协会格蕾丝年获首届美国计算机协会格蕾丝赫柏奖。赫柏奖。1973年,第三卷年,第三卷排序与搜索排序与搜索出版。同年还出版了第一卷的第二版。出版。同年
15、还出版了第一卷的第二版。1974年,荣获图灵奖,是历史上最年轻的获奖者。年,荣获图灵奖,是历史上最年轻的获奖者。1975年当选为美国国家科学院院士。年当选为美国国家科学院院士。1976年出版第二卷第二版时采用了计算机排版技术。但是,当时的计算机年出版第二卷第二版时采用了计算机排版技术。但是,当时的计算机排版与活字排版效果相差甚远,而且前后两卷的字体、版式和文本格式等排版与活字排版效果相差甚远,而且前后两卷的字体、版式和文本格式等都不一致。非常失望的都不一致。非常失望的Knuth暂停了第二卷第二版的出版,决心自己设暂停了第二卷第二版的出版,决心自己设计一个比活字排版更加优美和适用的排版软件,这就
16、是后来的计一个比活字排版更加优美和适用的排版软件,这就是后来的TeX。1977年年5月开始构造后来被称为月开始构造后来被称为TeX的文字处理系统,他研究了古今的排的文字处理系统,他研究了古今的排版技术,把其中最优越的部分引入版技术,把其中最优越的部分引入TeX中,连中,连TeX中的字体中的字体(METAFONT)全部都是他自行设计的。)全部都是他自行设计的。同年,访问中国三周,行前姚储枫给他起了个中文名字:高德纳。(姚储同年,访问中国三周,行前姚储枫给他起了个中文名字:高德纳。(姚储枫,姚期智的夫人枫,姚期智的夫人)1978-1979年研究计算机排版软件,并荣获美国总统卡特授予的科学金奖年研究
17、计算机排版软件,并荣获美国总统卡特授予的科学金奖。1980年获国际电子电气工程师协会计算机学会麦可道尔奖。同年,成为英年获国际电子电气工程师协会计算机学会麦可道尔奖。同年,成为英国计算机学会会员。国计算机学会会员。1981年当选为美国工程院院士。年当选为美国工程院院士。1982年使用自己设计的年使用自己设计的TeX软件和字体,软件和字体,Knuth如愿出版了如愿出版了计算机程序计算机程序设计艺术设计艺术的第二卷第二版。之后,的第二卷第二版。之后,Knuth还不遗余力地改进还不遗余力地改进TeX,并在,并在TeX的稳定性上下了很大功夫。在基本式样没有改变的情况下,的稳定性上下了很大功夫。在基本式
18、样没有改变的情况下,TeX第第3版版又追加了很多功能。又追加了很多功能。9月,公布了月,公布了DVI驱动程序。同年,成为国际电子电驱动程序。同年,成为国际电子电气工程师协会荣誉会员,并获计算机先锋奖。气工程师协会荣誉会员,并获计算机先锋奖。1984年,艾迪生年,艾迪生-韦斯利公司出版韦斯利公司出版Knuth教授的教授的TheTeXbook,该书成,该书成为最权威的为最权威的TeX参考书。参考书。1985年,将年,将TeX的默认字体由美国现代改为计算机现代的默认字体由美国现代改为计算机现代。1986年荣获美国数学学会的斯蒂尔奖。年荣获美国数学学会的斯蒂尔奖。1987年获纽约科学研究会奖。年获纽约
19、科学研究会奖。1988年获富兰克林奖。年获富兰克林奖。1989年,因其对软件理论的贡献获年,因其对软件理论的贡献获J.D.Warnier奖。奖。1990年,斯坦福大学授予他计算机科学艺术教授的称号。年,斯坦福大学授予他计算机科学艺术教授的称号。1991年,年,3:16圣经文本阐释圣经文本阐释一书出版,他试图用分层随机抽样的方法一书出版,他试图用分层随机抽样的方法对圣经进行分析。对圣经进行分析。1992年退休,但还是斯坦福大学和牛津大学的客座教授。他这么早退休的原年退休,但还是斯坦福大学和牛津大学的客座教授。他这么早退休的原因,就是因为研究开发因,就是因为研究开发TeX系统延误了编写出版系统延误
20、了编写出版计算机程序设计技巧计算机程序设计技巧这这部书,他估计还要花部书,他估计还要花20年来完成。目前此书前三卷已出版,第四卷正在出版。年来完成。目前此书前三卷已出版,第四卷正在出版。预计要出到第七卷。预计要出到第七卷。1993年宣布不再对年宣布不再对TeX和和METAFONT进行更新。进行更新。1994年获瑞典皇家科学院克努特奖。年获瑞典皇家科学院克努特奖。1995年获国际电子电气工程师协会的纽曼奖和以色列的科学与艺术哈维奖。年获国际电子电气工程师协会的纽曼奖和以色列的科学与艺术哈维奖。1996年年11月,由于发明先进的排版技术荣获京都先进技术奖(日本最高终身月,由于发明先进的排版技术荣获
21、京都先进技术奖(日本最高终身成就奖,奖金约成就奖,奖金约46万美元,被称为日本的诺贝尔奖)。万美元,被称为日本的诺贝尔奖)。1997年对年对计算机程序设计技巧计算机程序设计技巧前三卷作了修订。前三卷作了修订。2001年国际天文学联合会把两年前发现的第年国际天文学联合会把两年前发现的第21656号小行星命名为号小行星命名为“Knuth”。2003年当选英国皇家学会的外籍院士。年当选英国皇家学会的外籍院士。2004年年计算机程序设计技巧计算机程序设计技巧前三卷再版发行。前三卷再版发行。2005年年11月月19日,从瑞士联邦苏黎士高等理工学院校长手中接过荣誉博士证日,从瑞士联邦苏黎士高等理工学院校长
22、手中接过荣誉博士证书。书。现在,正在编写现在,正在编写计算机程序设计技巧计算机程序设计技巧其余几卷。其余几卷。Knuth教授是法国、挪威和德国科学院的外籍院士;还是牛津大学等十几所教授是法国、挪威和德国科学院的外籍院士;还是牛津大学等十几所大学的荣誉博士。大学的荣誉博士。1、著作、著作计算机程序设计艺术计算机程序设计艺术是与牛顿的是与牛顿的自然哲学的数学原理自然哲学的数学原理等书一起,被评为等书一起,被评为“世界历史上最伟大的十种科学著作世界历史上最伟大的十种科学著作”之之一。一。突出贡献突出贡献:比尔比尔.盖茨曾说,盖茨曾说,“如果你认为你是一名真正优秀的程序员,就去读第如果你认为你是一名真
23、正优秀的程序员,就去读第一卷,确定可以解决其中所有的问题。一卷,确定可以解决其中所有的问题。”“如果你能读懂整套书的话,请给我发一份你的简历。如果你能读懂整套书的话,请给我发一份你的简历。”依依Knuth本人所讲,本人所讲,计算机程序设计艺术计算机程序设计艺术是他毕生最重要的事业,是他毕生最重要的事业,其目的是其目的是“组织和总结所知道的计算机方法的相关知识,并打下坚实的数学、组织和总结所知道的计算机方法的相关知识,并打下坚实的数学、历史基础历史基础”。Knuth撰写的前三卷被翻译成多种语言,到撰写的前三卷被翻译成多种语言,到1976年为止,已卖年为止,已卖出超过一百万册。他目前正全神贯注地编
24、写第四卷,他期望第四卷的篇幅约出超过一百万册。他目前正全神贯注地编写第四卷,他期望第四卷的篇幅约为为2000页,并分为三个独立的章节。为了完成丛书的其余部分,页,并分为三个独立的章节。为了完成丛书的其余部分,Knuth现在现在进入了一种引退的状态,全身心地投入这项工作。进入了一种引退的状态,全身心地投入这项工作。Knuth说,一般说来,他说,一般说来,他更喜欢在一段时间内集中精神完成一项工作,正像他自己在书中提出的:按更喜欢在一段时间内集中精神完成一项工作,正像他自己在书中提出的:按“一批一批”的模式。的模式。2、编译程序、编译程序编译程序能够实现高级语言和二进制机器语言之间的翻译。编译程序能
25、够实现高级语言和二进制机器语言之间的翻译。二十世纪六十年代初期,二十世纪六十年代初期,Knuth教授致力于这方面的研究,虽教授致力于这方面的研究,虽然现代的软件已经可以使其变的简单一些,但编写编译程序仍然现代的软件已经可以使其变的简单一些,但编写编译程序仍被认为是一项极为困难的工作。被认为是一项极为困难的工作。Knuth教授在这方面最著名的教授在这方面最著名的成就是成就是LR(k)分析分析的研究,那是一个能使确定一串字符文法规则的研究,那是一个能使确定一串字符文法规则的过程更加顺畅的值得注目的方法。的过程更加顺畅的值得注目的方法。突出贡献突出贡献:3、属性文法、属性文法在编译程序的工作之后,在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 数据结构 基础
限制150内