计算科学导论备课笔记Word下载.docx
- 文档编号:19058941
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:31
- 大小:51.07KB
计算科学导论备课笔记Word下载.docx
《计算科学导论备课笔记Word下载.docx》由会员分享,可在线阅读,更多相关《计算科学导论备课笔记Word下载.docx(31页珍藏版)》请在冰豆网上搜索。
图林机的基本概念:
图林机由一条可无限延长的带子、一个读写头和一个控制读写头工作的控制器组成:
每个图林机有一个状态集Q(包括开始、结束状态)和一个符号集S(0、1)。
图林机从开始状态启动,每次动作由控制器根据图林机所处的当前状态和读写头所对准的单元内的符号决定下一步的动作(或操作)。
一旦是结束状态,图林机就停机,此时带子上的内容就是计算结果。
其中每一步操作包含3件事:
1,把某个符号写到读写头当前对准的格子内,取代原来的符号;
2,读写头左、右移,或不移;
3,根据控制器的命令用某个状态(可以是原状态)取代当前的状态,使图林机进入下一个新状态。
控制器的命令可表示成:
(状态,符号)→(写符号,移动,状态)
1.1.2二进制
1、1
二进制与十进制、八进制之间的转换
1.2存储程序式计算机的基本结构与工作原理
图林机是一种数学自动机器,就其思想和原理而言,包含了存贮程序的重要思想。
图林机为现代计算机的出现提供了重要的思想:
带子―――存贮设备
命令―――相当于一组预先设计、存贮好的程序
控制器――决定读写头的每一步操作
程序:
动作序列的预先规划
计算机程序:
能在计算机系统中运行的程序
程序技术:
计算机程序的设计、描述、构造、分析、测试、验证等技术,统称为程序技术。
程序理论的研究内容:
对程序的各种性质、规律的研究。
冯•诺依曼:
在图林机产生后的十年不到,经过不断努力,确定了现代存储程序式电子数字计算机的基本结构和工作原理;
主要由5部分组成:
存储器、运算器、控制器、输入设备、输出设备。
硬件裸机:
在学科的发展历程中,把不带有软件系统的存储程序式电子数字计算机系统称为硬件裸机。
硬件:
硬件裸机、构成硬件裸机的各类部件及其研究范畴统称为硬件。
1.3数字逻辑与集成电路
数字逻辑:
是数字电路逻辑设计的简称。
数字逻辑的内容:
利用应用数字电路进行数字系统的逻辑设计。
电子计算机:
由具有各种逻辑功能的逻辑部件组成。
逻辑部件:
按结构分为组合逻辑电路和时序逻辑电路。
组合逻辑电路:
由门、或门和非门等电路组合而成的逻辑电路。
时序逻辑电路:
由触发器和门电路组成的具有记忆能力的逻辑电路
有了组合逻辑电路和时序逻辑电路:
进行合理的设计和按排,可以表示和实现布尔代数的基本运算(布尔代数只使用0和1两个数)
二进制的加法、乘法等运算与布尔代数的运算建立对应关系
就可以用逻辑部件来实现二进制的加法和乘法等运算。
计算机相当复杂,有许多功能部件。
一台计算机有许多指令,指令的执行通过电路实现,就涉及用数字电路进行数字系统的逻辑设计。
早期:
数字系统的设计用分离元件的某种组合来实现―――体积大、速度慢
中期:
用硅片作主要材料的半导体集成电路技术―――体积小、速度较快
近期:
大规模集成电路技术、超大规模集成电路
从图林机和计算理论可知:
一台抽象的计算机只需要很少几条基本运算指令就可以具有强大的计算能力,其它一些指令只是从使用方便的角度提出的(并不能增强机器的计算能力)。
至于这种能力用什么技术来表现,则取决于成本和效率这两个基本因素。
存贮程序式计算机可以用机械技术制造,也可以用电子技术制造。
一个计算过程既可以用程序来实现,也可以用电路实现。
即:
电子技术和程序技术只是计算科学的两种基本的技术形式。
构成计算科学的真正的、基本的、核心的内容是围绕计算而展开的大量带有规律性的知识,而不是具体的实现技术。
1.4机器指令与汇编语言
利用计算机求解问题,必须事先编制程序,程序由指令组成。
机器指令系统:
每台计算机设计时规定的一组指令集合。
机器指令格式:
操作码:
指出运算的类别
地址:
指出参与运算的数据的地址或寄存器
机器指令均以二进制代码表示。
不同的机器,指令系统有所不同。
汇编语言:
由一组较易理解和阅读的汇编指令构成,每条汇编指令对应一条或多条机器指令。
汇编指令的操作符是西文字符串的缩写。
1.5算法、过程与程序
为什么求解同一个可计算或可解的问题,不同的人往往编写出不同的、但都是正确的程序?
因为存在:
与计算方法密切相关的算法问题,和程序设计的技术问题。
不同的求解方法会产生不同的算法。
对不同的计算方法过程的抽象描述就产生出相应的不同的算法。
不同的算法将设计出不同的程序,而相同的算法由不同的人编写,会设计出差别很大的程序。
因此,决定程序功能的本质是计算方法及其算法。
如何确保算法和程序的正确性,怎么判断算法和程序的好坏…
算法、程序与数学之间存在着密切的联系。
计算科学研究中存在的一条规律:
一个问题,当它的描述及其求解方法或求解过程可以用构造性数学描述,而且该问题所涉及的论域为有穷,或无穷但存在有穷表示时,则该问题一定能用计算机来求解;
反过来,凡是能用计算机求解的问题,也一定能对该问题的求解过程数学化,而且,这种数学化是构造性(以离散数学为代表的构造性数学)的。
这是由于构造性数学的构造特征保证了计算方法的能行性,两者之间是相容的。
计算复杂性研究(时间、空间复杂性):
例,“三个中国人”算法(童话):
数48770428644836899的真因子是223092871(数的长度n=17)
P类:
一个算法如果存在图林机可计算的多项式时间计算复杂性算法,就把该算法归入P类。
NP类:
如果存在非确定性图林机可计算的多项式时间计算复杂性算法,就将其归入NP类。
大多数实际问题,要找到一个解可能很难,但验证一个解往往比较容易,所以大多数属于NP类。
P=NP?
P≠NP:
“求解一个问题总比验证一个问题的解难”的公式表示
NP完全问题:
NP类中的某个问题被证明不存在多项式计算复杂性算法,则就等于证明了P≠NP,就把这类问题称为NP完全问题。
算法的定义:
(不断地有新的定义)
定义1:
给定问题和设备,一个算法是用该设备可理解的语言表示的、解决这个问题的一种方法的精确刻划。
定义2:
一个算法就是一个有穷规则的集合,其中规则确定了一个解决某一特定类型问题的运算序列。
算法的规则序列必须满足如下5个重要条件(特性):
1.有穷性:
算法必须总是在执行有穷步之后结束
2.确定性:
算法的每一个步骤必须是确切地定义的
3.输入:
算法有0个或多个输入
4.输出:
算法有一个或多个输出,即输出与输入有特定关系的量
5.能行性:
算法中有待执行的运算和操作必须是相当基本的。
即,原则上它们都是能够精
确地进行的,而且用笔和纸做无穷次就可以完成的。
有穷性和无穷性是算法的两个重要特性。
算法和过程(不是高级程序语言设计中的子程序)都满足能行性和确定性,其唯一的本质区别是:
算法的执行必须终止,而过程可以永不停止。
程序的定义:
程序=算法+数据结构+程序设计方法+语言工具+环境
一般,对任何一个问题,如果有了解决该问题的算法,就可以编制相应的程序
1.6高级语言与程序设计技术和方法
高级语言:
高级程序设计语言的简称,是用于描述计算机程序的类自然语言。
高级语言是程序设计发展的必然产物。
相同的算法由不同的人编写,会设计出差别很大的程序:
是因为存在一个程序设计方法和技术的问题。
程序设计是一门技术科学,在计算科学中已经发展了许多程序设计方法和技术,例如自顶向下、自底向上的程序设计方法、面向对象的程序设计技术、程序验证技术、并发程序设计技术等。
作为一门学科,高级语言和程序设计对计算科学的发展产生了巨大的影响,从理论、硬件、软件到计算机应用技术等多方面深刻影响了计算科学的发展,因此,人们把对高级语言和程序设计的学习和训练看成是计算科学专业的基本功之一。
1.7系统软件与应用软件
软件:
对预先编制好的具有特殊功能和用途的程序系统及其说明文件的统称。
是计算机程序、方法、规范及其相应的文稿以及在计算机上运行时所必须的数据。
软件包括:
系统软件和应用软件
系统软件:
构成计算机系统、提供给用户使用、用于扩展计算机硬件功能、维护整个计算机硬件和软件系统的软件。
例如,操作系统、汇编语言、编译系统、数据库管理系统(也有的认为是应用软件)、软硬件故障诊断程序、各种软件开发工具和软件包及其文件等。
应用软件:
由用户开发的各种应用程序及其说明文件或应用软件系统。
1.8计算机组织与体系结构
计算机体系结构:
是使得用机器语言编写程序的用户可看到一个机器的抽象结构。
这一结构的硬件组成属于计算机组成原理研究的范畴。
硬件的互联结构和软件结构及相互关系形成的计算机系统的总体结构,支持这种结构的基本算法、和以总体结构为基础的面向用户的程序设计语言等内容构成了计算机体系结构的技术范畴。
可见,计算机体系结构既不单纯属于硬件范畴,也不只属于软件范畴,而是一个软硬件兼而有之的综合研究方向。
1.9计算机网络与通信
计算机网络:
使用通信设备和通信线路将一组地理上分布的计算机、终端及其附属设备按照某种方式互联起来的计算机硬件系统。
计算机网络系统:
能、达到软硬件资源共享(通过通信)的计算机网络。
第2章计算科学意义、内容、方法
科学:
是关于自然、社会和思维的发展与变化规律的知识体系。
技术:
是泛指根据生产实践经验和科学原理而发展形成的各种工艺操作方法、技能和技巧。
工程:
指将科学原理应用到生产实践中而形成的各门学科的总称。
计算机科学、计算机技术、计算机工程
2.1什么是计算科学
前面已经讲到:
计算不等于数学,数学起源于对计算的研究,计算的渊源可以深入扩展到数学和工程。
数学为计算提供了理论、方法和技术
工程为实际计算和应用提供了可以自动计算的设备,并为有效地完成计算和应用任务提供了工程方法和技术。
美国计算器协会(ACM)和国际电气、电子工程师学会计算机学会(IEEE/CS)联合小组的二十几名专家从1985年起用了5年时间进行调查、研究和分析,结论:
计算机科学和计算机工程之间在本质上没有区别。
本学科的科学、技术、工程的方法论的主要理论基础―――以离散数学为代表的构造性数学与能行性形成了天然的一致。
由于这一原因,代表计算机科学的各分支学科的理论、技术理论(包含方法)和代表计算机工程的各分支学科的工程(含开发方法)和工程技术(含技艺和技巧)常常既有理论特征、又有技术特征,甚至还具有工程特征,三者相互之间的界限往往不很清楚。
但本质上它们大都是从不同的角度和层面对各种问题的能行性及其求解方法和过程的描述,是通过对各种问题反映其能行性的内在规律的描述折射出求解方法和求解过程的描述。
因此认为:
涵盖、并称谓计算机科学和计算机工程
有各种各样的协会、学会、杂志、学术刊物、年会等等。
2.2计算科学发展主线
计算科学的学科内容按照基础理论、基本开发技术、应用以及它们与硬件设备联系的紧密程度分成三个层面:
第一层面:
计算科学的应用层,包括人工智能应用与系统、信息、管理与决策系统、计算可视化、科学计算等计算机应用的各个方向。
其中人工智能应用与系统涵盖人工智能、机器人、神经元计算、知识工程、自然语言处理与机器翻译、自动推理等方向。
信息、管理与决策系统涵盖数据库设计与数据管理技术、数据表示与存储(包括多媒体技术)、数据与信息检索、管理信息系统、计算机辅助系统、决策系统等方向。
计算可视化涵盖计算机图形学、计算几何、模式识别与图像处理等方向。
第二层面:
计算科学的专业基础层,是为应用层提供技术和环境的一个层面。
包括软件开发方法学、计算机网络与通信技术、程序设计科学、计算机体系结构、电子计算机系统基础。
其中软件开发方法学涵盖顺序、并行与分布式软件开发方法学,例如软件工程技术、软件开发工具和环境等方向。
计算机网络与通信技术涵盖计算机网络互联技术、数据通信技术、以及信息保密与安全技术等方向。
程序设计科学涵盖数据结构技术、数值与符号计算、算法设计与分析(包括并行与分布式算法设计与分析)、程序设计语言、程序设计语言的文法与语义(指程序设计语言的文法与语义描述)、程序设计方法学、程序理论等方向。
电子计算机系统基础涵盖数字逻辑技术、计算机组成原理、故障诊断与器件测试技术、操作系统、编译技术、数据库系统实现技术、容错技术等、
第三层面:
计算科学的基础层,包括计算的数学理论、高等逻辑等内容。
其中计算的数学理论涵盖可计算性(递归论)、计算复杂性理论、形式语言与自动机理论、形式语义学(主要指代数语义、公理语义等)、高等逻辑涵盖模型论、各种非经典逻辑与公理集合论等方向。
支撑这3个层面的是计算科学学科的理工科基础科目:
物理学(主要是电子技术科学)、基础数学(包括离散数学)等。
2.2.1计算模型与计算机
算盘―――最早的计算工具。
中国人发明的珠算盘是当时最先进的计算工具。
欧洲文艺复兴时期,人文主义思想家和科学家对宗教统治进行挑战,哥白尼的新学说使天文学的发展进入了一个新时期,科学研究中的各种计算、特别是天文学中的大量繁重的计算工作,使得许多科学家进行新计算机器的研究。
钟表业的生产和发展,特别是齿轮传动装置技术的发展为机械传动装置计算机的产生提供了重要的技术基础。
1623年,威尔海姆.什卡尔特(Wilhelm.Schkard)最先提出了一台计算机的构思设想,它主要由加法器、乘法器和记录中间结果的机构等三部分组成。
但是,样机尚未完成就被火焚烧,其思想也很少为后人所知。
法国人巴斯卡尔(B.Pascal):
在1642年基于齿轮技术制造了一台能够进行加法和减法运算的计算器。
它的设计思想比较符合人类的思维习惯,其原理成为后来广泛使用的手摇计算机的基本原理。
为纪念巴斯卡尔,由语言大师沃斯设计的一种高级程序设计语言取名为Pascal。
德国人莱布尼兹(G.W.Leibniz):
在1672提出了不用连续相加进行机械乘法的思想,并于次年在巴黎科学院表演样机成功。
莱布尼兹最重要的成就是改进了计算机的设计思想,为手摇计算机的发展奠定了理论基础。
莱布尼兹对计算科学的另一个重要贡献是系统地建立了二进制的算术运算法则,指出了二进制在某些理论研究中的优点,为现代计算机的发展作了部分理论准备。
在上述的成功下,不少人开始从事计算机的改进工作,但由于当时技术的发展落后于计算机设计思想和理论的发展,研制的样机性能不稳定,限制了计算机的发展。
使得比较实用的计算机直到一百多年后才由法国人托马斯(C.Thomas)研制成功并建厂批量生产。
巴斯卡尔和莱布尼兹这类计算机根本的缺陷是只能做简单的四则运算,没有程序控制的机构。
英国数学家巴贝治(C.Babbage):
是提出用程序控制计算的第一人。
在第一台电子计算机诞生一百多年前就设计并制造成功差分机―――几乎是完整的通用数字计算机的设计方案,非常接近于现在的计算机。
由于得不到政府的经费支持,研制工作不能进行到底。
为纪念他,1977年美国的明尼苏达大学建立了巴贝治信息处理史研究所。
图林(A.M.Turing)
:
1936年,图林从一种简单的数学机器(理想计算机)出发来研究计算的概念。
图林的理论在当时看来不过更新奇更简洁一些,但过了十年,当存储程序式计算机诞生后,人们才逐渐发现图林的理论存在巨大的优越性,是计算科学理论的基础。
德国工程师朱斯(K.Zuse):
是世界上第一台通用程序控制计算机的设计者。
从1934年起致力于计算机的研制,在研制机械计算机的经验基础上,他第一个采用电器元件来制造一种二进制的程序控制计算机,于1941年取得成功。
在1944年,艾肯(H.Aiken)在IBM公司支持下,研制成功了一台通用程序控制计算机。
上述两台计算机均采用继电器作为部件,为机电式的计算机,运算速度受到极大限制。
但为后来的电子计算机的诞生积累了重要的经验。
第一台采用电子线路技术研制成功的通用电子数字计算机:
于1945年年底,由美国宾夕法尼亚大学的莫而学院的莫克利(J.W.Mauchly)和艾克特(W.J.Eckert)等人设计制造的、名为ENIAC。
这台计算机后来被运往阿伯丁弹道实验室,为美国军方所用。
该机虽然使用了当时先进的电子技术,但在基本结构上与机电式计算机没有本质上的差别。
第一台存储程序式通用电子计算机:
1944年夏天,已成名的冯.诺依曼(VonNeumann)在阿伯丁弹道实验室参加进新型计算机的研制工作中,并参与了ENIAC机完成前的改进工作。
在冯.诺依曼到后不久,经过对ENIAC机的补足之处的认真分析和讨论,研究小组又考虑并承担了新型计算机EDVAC的研究任务。
1945年3月,在冯.诺依曼的主持下,根据图林提出的存储程序式计算机的思想,研究小组完成了ENIAC设计方案的报告初稿。
在1945年6月,第一台全新的存储程序式通用电子计算机的设计方案―――ENIAC诞生了,并于1952年完成建造工作。
ENIAC方案的主要内容是确定了计算机由运算器、控制器、存储器、输入、输出五部分组成,明确地反映了现代电子数字计算机的存储程序控制工作原理和基本结构,对以后的计算机发展产生了深远的影响。
现在,人们把具有这一工作原理和基本结构的计算机统称为冯.诺依曼型计算机。
计算语言学:
是计算科学与语言学的一个交叉学科,主要是运用数学和计算科学的理论与技术研究语言学的基本规律。
其的一个直接应用是开发自然语言理解系统和机器翻译软件。
2.2.2计算模型、语言与软件开发方法学
语言是人与机器沟通的一种最基本的媒介。
1952年:
第一个程序设计语言ShortCode出现。
1954年:
FortranⅠ(面向科学计算的高级出现设计语言)出现。
1959年:
COBOL(面向商业)语言。
60年代:
Algol60、Basic(用于计算机普及性教育)、LISP(面向符号处理与人工智能)、APL(用于算法设计)、PL/1(支持构件式程序设计的语言)、Algol68、…
其中Algol60语言的诞生是计算机语言的研究成为一门科学的标志,是第一个用严格的语法规则(巴科斯范式或巴科斯-瑙尔范式:
BNF)定义语言文法的高级语言。
语言:
有词法、文法、语义、语用四方面的内容。
其中词法和文法构成了语言的语法。
语义学主要研究语言和语言所指对象之间的关系,即语言的含义。
语用学主要主要讨论语言的语义与语言的使用者和使用范围之间的关系。
计算机程序设计语言也是一种语言,因而也具有一般语言所具有的语言的词法、文法、语义和语用的内容。
程序设计方法学:
结构化程序设计方法、并发程序设计、逻辑程序设计、面向对象程序设计等
计算模型、语言和软件开发方法学构成了计算科学发展的一条主线。
2.2.3应用数学与计算机应用:
计算机应用:
凡是与计算机使用相关联的领域都可以纳入计算机应用的范畴。
计算机应用主线各方向上的研究都与应用数学有密切的联系。
理论上:
凡是可以用计算机来处理的问题及其处理过程,都可以用应用数学来描述;
凡是可以用以离散数学为代表的构造性数学描述的问题及其处理过程,只要涉及的论域是有穷的、或虽为无穷但存在有穷表示,也一定可以用计算机来实现。
2.3计算科学的分类与分支学科简介
2.3.1构造性数学基础(数理逻辑、代数系统、图论、集合论等)
数学发展史上:
如下3项重要发现对数学科学的发展产生深远影响:
解析几何、微积分、群论。
逻辑主义学派代表罗素等认为:
数学可以从逻辑推导出来,因而是逻辑的一种扩展;
数学与逻辑之间没有分界线。
构造性数学:
从最直观的概念看,概念的构造性定义和从数学定理证明的构造性方法出发,所发展起来的数学就形成了所谓的构造性数学。
数理逻辑:
是研究推理的科学。
数理逻辑与哲学有着密切的联系,其哲学方面是形式逻辑,而形式逻辑的数学化方面构成了数理逻辑的研究内容。
代数:
是对字母和由字母构成的结构的计算。
近世代数:
即抽象代数,是关于运算的学问,是关于计算规则的学说。
图论:
是数学的一个古老的分支。
许多现实问题常常可以用图表示,抽象成为图论的一个问题。
集合论:
人们常常需要考虑各种各样事物的集合,于是产生了集合论。
即不研究构成集合的事物的特性而仅仅研究集合的一般性质。
2.3.2计算的数学理论(计算理论、高等逻辑、形式语言与自动机、形式语义学等)
计算的数学理论:
指一切关于能行性问题的数学理论的总和,即指一切关于计算与计算模型问题的数学理论的总和。
计算理论:
主要研究在各种抽象的计算模型上的算法的设计方法和算法复杂性分析。
有算法理论、可计算理论、计算复杂性理论。
高等逻辑:
主要由模型论和各种非经典逻辑组成。
模型论:
是研究形式语言及其解释之间的关系的理论。
非经典的逻辑的内容主要包括:
时序逻辑、模态逻辑、概率逻辑、归纳逻辑、模糊逻辑等。
形式语言理论:
指用数学的方法研究语言的语法(词法和文法),研究语言的构造性结构的学问。
自动机理论:
主要研究各种能自动处理符号的数学机器,即自动机。
形式语义学:
用数学的方法研究语言的语义或语言的含义。
在计算机学科范围内主要指用数学的方法研究计算机程序设计语言的语义问题。
2.3.3计算机组成原理、器件与体系结构(计算机原理与设计、体系结构等)
计算机组成原理与设计:
是计算机发展的一个主流方向,主要任务是研究计算机的组织结构、根据各种计算模型研究计算机的工作原理,并按照器件、设备和工艺条件设计、制造具体的计算机。
是一个既包含硬件内容又包含软件内容的研究方向。
计算机各部件怎么组织、之间怎么互联、软件设计提出什么样的要求和思想、怎样提高计算机的性能价格比等等都是属于此范畴。
2.3.4计算机应用基础(算法基础、程序设计、数据结构、数据库基础、微机原理接口技术等)
算法基础:
主要研究数值算法和非数值算法的基本设计方法。
从给的问题出发,通过研究该问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 科学 导论 备课 笔记