算机科学的基本概念.ppt
《算机科学的基本概念.ppt》由会员分享,可在线阅读,更多相关《算机科学的基本概念.ppt(51页珍藏版)》请在三一办公上搜索。
1、第二章 计算机科学的基本概念和基本知识2.1 计算模型与二进制 数学不等于计算,但数学确实起源于对计算的研究。数学、计算模型(计算方法、数学机器)、形式化与形式化方法 我们说,形式是事物的内容存在的外在方式、形状和结构的总和。所谓形式化是将事物的内容与形式相分离,用事物的某种形式来表示事物。形式化方法是在对事物描述形式化的基础上,通过研究事物的形式变化规律来研究事物变化规律的全体方法的总称。1.1.1 计算模型与图灵机 所谓计算模型是刻划计算这一概念的一种抽象的形式系统或数学系统,而算法是对计算过程步骤(或状态的一种刻,划,是计算方法的一种能行实现方式。在计算机科学中,我们通常所说的计算模型,
2、并不是指在其静态或动态数学描述基础上建立求解某一(类)问题计算方法的数学模型,而是指具有状态转换特征,能够对所处理的对象的数据或信息进行表示、加工、变换、输出的数学机器。由于观察计算的角度不同,产生了各种不同的计算模型。递归函数、Turing机等(1)s(x)x1(后继函数)(2)o(x)0(零函数)(3)Uj(n)(x1,x2,xn)xj(射影函数)由初始函数和有限次使用算子可以构造各种复杂的递归函数,或者可计算函数。图灵机的示意图,控制器的命令可表示为:(状态,符号)(写符号,移动,状态);控制器 一旦图灵机在运行中进入了一个状态,而且这个状态是一个结束状态,那么,图灵机就停机,计算任务宣
3、告完成,此时带上的内容就是计算的输出结果。,例1 M的字母表A0,1,b,b表示空格。状态集Qq1,q2,q3,其中,指定q1是开始状态,q3是终止状态。M的程序(控制器的命令)如下:q1 0 1 R q1;q1 1 0 R q1;q1 b b R q2;q2 b b L q3;q2 0 0 H q1;q2 1 1 H q1;对图灵机的工作过程从不同的角度考察,可以给予不同的解释。第一,把图灵机看作识别器,即判断带子上最初的内,容能否被图灵机所接受。假定图灵机从左向右扫描完带子上的内容后停机则为接受,否则为不接受。例2 一台图灵机可以设计成识别下面的序列:1000110,10011101,01
4、0101011。第二,把图灵机看作生成器,对给定的输入集合,考察输出集合,并研究输入输出集合性质之间的关系,这就研究了图灵机的生成能力。例3 设一台图灵机的输入集合为In1n0nnN,可设计一台图灵机,对给定的输入集合In,得到输出集合Out0n1nnN。其中,N是全体自然数的集合。第三,把图灵机看作计算器,相当于一个函数。图灵机的输入是函数的自变量的值,图灵机的输出是函数的值。例4 图灵机可以计算下列函数:,(1)s(x)x1;(2)o(x)0;(3)A(0,y)y1,A(x1,0)A(x,1),A(x1,y1)A(x,A(x1,y)。第一和第二个函数读者不难从图灵机的定义出发感悟到它们是图
5、灵机可以计算的函数,而第三个函数就比较复杂,一时难于判断。顺便提一下,第三个函数叫做阿克曼函数,它是阿克曼(W.Ackermann)在研究原始递归函数和递归函数的关系时给出的。这个函数在计算理论中具有重要价值。事实上,图灵机还可以计算形式上比第三个函数更复杂的函数。沿着这样一种思路,图灵机被证明具有很强的计算能力,它与30年代发展的递归函数论(一种能行可计算性理,论)中一类最一般的可计算函数(部分递归函数或部分可计算函数)在计算表达能力上是等价的。然而,图灵机简洁的构造和运行原理隐含了存储程序的原始思想,深刻地揭示了现代通用电子数字计算机最核心的内容。图灵奖 2.1.2 二进制 也许是图灵机读
6、写带上只出现两个符号启发了研究者,在当时的技术条件下,从便于元器件的设计和制造考虑,计算机的研制很自然地选择了二进制。后来的实践也证明了这种选择具有极大的优点。十进制数的表示 例如,1997.630这个数可以写成:1997.6301103910291017100 610-1310-2010-3,一般地,任何一个十进制数S都可以表示为:Sknkn-1 k0.k-m kn10nkn-110n-1k0100k-m10-m-m ki10i in其中,10称为十进制的基数,ki0,1,2,3,4,5,6,7,8,9,m,n为正整数。小数点的位置不言自明。二进制和十进制一样,是一种数制,它用于表示数的符号
7、(数字)由于在书写中的位置不同而具有不同的值。二进制表示数的符号只有两个,即0和1,其数值与十进制中的0和1相同。此外,与十进制不同之处在于二进制数是逢二进一。,例如,十进制数与二进制数中的一些可作如下对应:十进制 二进制(0)(0)(1)(1)(2)(10)(3)(11)(4)(100)(5)(101)(9)(1001)(10)(1010)一般地,任何一个二进制数S都可以表示为:,Sknkn-1 k0.k-m kn2nkn-12n-1k020k-m2-m-m ki2i in 其中,2称为二进制的基数,ki0,1,m,n为正整数。进一步,读者可从十进制数和二进制数的一般表示公式得到启发,将这种
8、表示推广到更一般的任意进制,不同之处只是基数不一样。二进制的运算规则比十进制的运算规则简单得多。只要建立两种进制的数据之间的转换方法,那么,二进制将具有更多的优势。计算机的理论基础是逻辑和代数。当二进制与同样只使用“真”和“假”两个值的逻辑代数建立了联系后,这就为计算机的逻辑设计提供了便利的工具。,2.2 存储程序式计算机的基本结构与工作原理 图灵机的出现为现代计算机的发明提供了重要的思想。图灵机的带子可以看成是计算机的存储设备,数据可以存储在上面,也可以根据需要擦去。图灵机的命令相当于一组事先设计、存储好了的程序,它们在控制器安排下,决定读写头的每一步操作。这样一种数学机器,如果不考虑它的实
9、用性,就思想和原理而言,确实包含了存储程序的重要思想。程序与存储程序式计算机 图灵机诞生后不到十年,在以冯诺依曼为代表的一批科学家的努力下,现代存储程序式电子数字计算机的基本结构与工作原理被确定下来。它主要由如下的五部分组成(见P8图):存储器,运算器,控制器,输入设备,输出设备,在学科的发展历程中,习惯上,人们将不带有软件系统的存储程序式电子数字计算机系统称为硬件裸机,将硬件裸机,参与构成硬件裸机的各类部件及其研究范畴统称为硬件(方向)。2.3 数字逻辑与集成电路 数字逻辑是数字电路逻辑设计的简称,其内容是应用数字电路进行数字系统逻辑设计。电子数字计算机是由具有各种逻辑功能的逻辑部件组成的,
10、这些逻辑部件按其结构可分为组合逻辑电路和时序逻辑电路。组合逻辑电路是由与门、或门和非门等门电路组合形成的逻辑电路;时序逻辑电路是由触发器和门电路组成的具有记忆能力的逻辑电路。有了组合逻辑电路和时序逻辑电路,再进行合理的设计和安排,就可以表示和实现布尔代数的基本运算。而布尔代数只使用1(真)和0(假)两个数,这样,当二进,制的加法、乘法等运算与布尔代数的运算建立了对应关系后,就可以用逻辑部件来实现二进制数据的加法、乘法等各种运算。例5 基本的“与”、“或”、“非”门电路。“与”门电路一般有两个以上的输入和一个输出。图(a)表示了一个“与”门电路,其输出P和输入A、B、C之间的逻辑关系可用下面的式
11、子表示:PABC 电路设计中,用高电平信号表示1,低电平信号表示0,那么,“与”门电路只有当输入A、B、C同时为1时,输出P才为1,否则,P为0。“或”门电路可以用图(b)表示。一般地说,“或”门电路是一种具有逻辑加法功能的电路,它有两个以上的输入和,一个输出,其输出P和输入A、B、C之间的逻辑关系可用下面的式子表示:PABC 在具体的电路设计中,如果我们用高电平信号表示1,低电平信号表示0,那么,“或”门电路仅当输入A、B、C中有一个为1时,输出P就为1,否则,P为0。“非”门电路可以用图(c)表示。一般地说,“非”门电路是一种具有逻辑取反功能的电路,它只有一个输入和一个输出,其输出P和输入
12、A之间的逻辑关系可用下面的式子表示:PA 在具体的电路设计中,如果我们用高电平信号表示1,低电平信号表示0,那么,“非”门电路当输入A为0时,输出P就为1,否则,当输入A为1时,输出P为0。,“与”、“或”、“非”三种门电路示意图 P P P A B C A B C A(a)(b)(c)将布尔代数和前面谈到的二进制联系起来,我们可以看出,“与”、“或”、“非”门电路的作用与集合运算“交”、“并”、“补”是一致的。一旦门电路中仅使用两个电平信号0和1,引入二进制及其运算规则,那么,用门电路及其组,合就可以实现二进制的各种运算,而对复杂电路的计算,如电路的化简就有可能通过布尔代数的方法进行。事实上
13、也正是如此。由此可见,真正构成计算机科学基本的、核心的内容是围绕计算而展开的大量带有规律性的知识,而不是具体的实现技术。因为,在将来,我们完全可能发展一种能表示二进制数及其运算的新技术,它比今天的微电子技术精度更高、生产价格更便宜。如果真是那样,这种技术就可能取代微电子技术在计算科学中的地位。近年来科学研究的发展已显现出一些很有希望但尚不成熟的技术,如光电子技术,金属表面处理技术等。当然,程序技术在可预见的将来尚不太可能被别的技术所代替,原因是它与各种应用相联系,而且在形式上易于反映能行性这一本质的计算特征,在表达形式上与通常算法的描述较为接近,设计和生产的成本也比较低,又不存在工业污染的问题
14、,所以不,易被取代。因此,我们常说,从这个意义上讲,软件技术比微电子技术对计算科学更重要一些。2.4 机器指令与汇编语言 用计算机求解一个问题,必须事先编制好程序。程序是由指令组成的。每一台计算机都设计规定了一组指令集合,称为机器指令系统。机器指令的格式一般分为两部分,如下所示:指令格式:操作码 地址部分 其中,操作码指出运算的种类,如,跳转等,地址部分用来指示参与运算的数据保存在什么地方,如存储器的某个地址或某个寄存器等。操作码和地址部分都用二进制代码表示。,机器指令一般可根据其功能划分为以下几类:(1)控制指令;(2)算术运算指令;(3)逻辑运算指令;(4)移位操作指令;(5)传送操作指令
15、;(6)输入/输出指令。应当注意的是,不同的机器,其指令系统是不同的。指令系统的日渐增大虽然给用户的程序设计带来了方便,但也带来了硬件设计复杂性的增加和因译码、存储、寻址等开销的增大而使运算速度下降。研究发现,指令系统存在着改进的必要和可能。真正使研究人员对指令系统进行较大改进的原因是超大规模集成电路(VLSI)技术的发展和采用微程序技术实现体系结构设计思想的过程中硬件复杂性的不断增长带来的技术上的困难,使人们开始认识到在进行计算机系统设计时,应,公平对待硬件与软件的地位,使两者平衡负担整个系统的复杂性。这一认识的转变直接导致了精简指令系统计算机(RISC)的诞生。所谓RISC是根据指令系统中
16、各种指令应用的规律,将最常用的指令,以及一些控制较为简单的寄存器寄存器的操作与寄存器等一起直接做在VLSI芯片上,靠减少译码、存储、寻址方式和次数等开销而大大增加运算速度。实际上,RISC主要是一种体系结构设计的思想,而不只是一种计算机产品。RISC技术由于极大地提高了计算机的运算速度,因而它的问世被认为是计算机体系结构发展史上的一个里程碑。汇编语言 汇编语言实际上是由一组汇编指令构成的语言。每一条汇编指令用某个西文字符串的缩写来表示其所代表的操作,用符号来代表数据的二进制、八进制和十进制数字序列。大多数情况下,一条汇编指令对应一条机器指令,少数对应几,条机器指令。例如,下面是几条汇编指令的操
17、作符,右边中文是名称。add 加法 idiv 有符号除法 mul 无符号乘法neg 求补 xchg 交换 test 逻辑比较 jmp 无条件转移 有了汇编语言,就得编写和设计汇编语言翻译程序(简称汇编程序),专门负责把使用汇编语言书写的程序翻译成可直接执行的机器指令程序。一般说来,汇编程序被看成是系统软件的一部分。当然,汇编语言在可读性和编写程序时仍然是不能令人满意的,这导致进一步发展了高级程序设计语言。不过,由于高级语言在使用时通常还是要通过编译程序逐步将高级语言写的程序翻译成机器指令的程序,而这种翻译的结果往往不如机器指令或汇编语言写的程序效率高,所以,直到今天,不少工程师在系统软件的开发
18、中还在使用机器指令和汇编语言。,2.5 算法、过程与程序 求解一个给定的问题,不同的人常编写出不同的然而都是正确的程序,这是为什么呢?这里存在两个层面的问题,一个是与计算方法密切相关的算法问题,另一个是程序设计的技术问题。例6 给定两个整数,求它们的最大公因数。不失一般性,设有不全为0的整数x、y,记gcd(x,y)为它们的最大公因数,即同时能整除x、y的公因数中的最大者。显然,gcd(x,y)可表示为 gcd(x,y)maxz z|x,z|y 这个问题许多中学生都会解,最常见的有著名的欧几里德辗转相除计算方法。当然,还有许多种解法。我们首先从函数gcd(x,y)的性质出发来求解。函数gcd(
19、x,y)具有如下性质:(1)gcd(a,b)gcd(b,a),(2)gcd(a,b)gcd(a,b)(3)gcd(a,0)|a|(4)gcd(a,b)gcd(b,a mod b),0a mod bb(欧几里德辗转相除计算方法)根据以上性质,我们可以设计如下算法:算法A(计算函数gcd(x,y))A1.输入x,y;z是辅助变量;A2.重复执行如下操作步骤:(1)若y0,则输出|x|,算法停止(2)若y0,则zx mod y,xy,yz;有了计算函数gcd(x,y)的算法,用程序设计语言很容易写出可在计算机上执行的程序。算法A的核心是利用了函数gcd(x,y)的上述第四条性质。倘若我们使用的不是第
20、四,条性质,那么,算法就会发生改变。不难想象,不同的求解方法将产生出不同的算法,不同的算法将使我们设计出不同的程序,而决定这个程序功能的本质是计算方法及其算法。一般地说,对不同计算方法过程的抽象描述就产生了相应的不同算法,但同一算法由不同的人来写程序则完全可能设计出差别很大的程序。凭直觉想象给出的算法往往不是最好的算法。例7 用程序变换技术设计的计算函数gcd(x,y)的程序 利用一种叫做程序变换技术的程序设计方法,可以产生计算函数gcd(x,y)的如下递归过程性程序:Procedure gcd(x,y:int,var z:int);begin if x0 then z:y;xy&x0 the
21、n gcd(x,yx,z);,xy&x0 then gcd(y,x,z)endif end;显然,这个程序要一眼看出其功能是困难的。实际上,这个反映辗转相除计算方法程序经过程序变换,形式上已发生了很大变化。这两个例子进一步引发我们的一些思考:如何确保算法和程序的正确性?既然求解同一个问题可以有不同的方法,不同的算法,不同的程序,那么,怎么来判断算法和程序的好坏呢?程序变换是否改变算法呢?上面两个例子初步表明算法、程序与数学之间存在着密切的联系。要解决上面的问题,没有数学和计算科学理论的支持恐怕不行。多年来大学计算机科学本科教学的实践已反复证明,实际情况正是如此。在计算机科学研究中,事实上存在一
22、条规律:一个问,题,当它的描述及其求解方法或求解过程可以用构造性数学描述,而且该问题所涉及的论域为有穷,或虽为无穷但存在有穷表示时,那么,这个问题一定能用计算机来求解;反过来,凡是能用计算机求解的问题,也一定能对该问题的求解过程数学化,而且这种数学化是构造性的。当一个问题的求解获得了计算方法和算法时,并不等于万事大吉了。在许多情况下,找到求解一个问题的算法只是走完了第一步。至于现实是否可以计算,则取决于算法的存在性和计算的复杂性,即取决于该问题是否存在求解算法,算法所需要的时间和空间在数量级上能否被接受。要注意的是,有的问题虽然存在求解问题的计算方法,但是,不存在算法。原因有两种可能:一是计算
23、方法可能不是构造性的;二是虽为构造性的,但计算方法不能保证计算过程在任何初值的情况下都能结束。,算法复杂性 什么是算法的复杂性呢?使用计算机计算各种问题,需要存储空间、计算时间。不同的算法计算所需要的时间和空间是不同的。所谓算法的复杂性就是对算法计算所需要的时间和空间的一种度量。由于不同的计算机千差万别,运算速度和字长可以相差很大,因此,不可能用算法在某一台计算机上计算所需要的实际的时间和存储单元(空间)去衡量这个算法的复杂性。那么,怎样才能准确刻划算法的计算复杂性呢?引入渐近增长率的概念来刻划算法的计算复杂性。渐进增长率用复杂性度量函数表示,该函数表示了算法随问题规模大小变化引起的算法中抽象
24、的基本运算执行的次数或存储空间量的变化规律。如某个计算问题当输入规模分别为1,2,3,n时,经分析算法中抽象的基本运算次数分别为1,4,9,n2,那么,就可以用函数n2来刻划这个算法的时间复杂性,并称这个算法的时间复杂性度量为(n2)级。,有了复杂性度量函数,一旦选定具体计算机,可以根据这台计算机对某个n值的实际运算速度比较准确地估算出对其他的n值完成计算所需要的时间。于是,对各种算法的复杂性进行分析的关键是要设法去找出这样的函数,它涉及到与数学密切相关的算法的设计原理、思想和方法,算法分析是具有智力挑战性的研究课题。证比求易算法(本书上的三个中国人算法)在算法计算复杂性的研究中,一个算法如果
25、存在图灵机可计算的多项式时间计算复杂性算法,就将这个算法归入P类,如果存在非确定性图灵机可计算的多项式时间计算复杂性算法,就将其归入NP类。对大多数实际问题来说,找到一个解可能很难,检验一个解常常比较容易,所以都属于NP类。现在,计算科学研究中一个悬而未决的重要问题是:PNP?。,PNP?这个问题不仅具有理论上的价值,而且具有重大实用价值。因为到目前为止,已经发现了一批可计算但有相当难度的问题是属于NP类的,并且常通过证明一个问题与已知属于NP类中的某个问题(如可满足性问题,简称SAT问题)等价将其归入NP类。不过,该问题是否属于 P类,即是否能找到多项式时间计算复杂性算法求解该问题,或证明该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科学 基本概念
链接地址:https://www.31ppt.com/p-6191623.html