黄 震
(惠州学院 计算机科学系,广东 惠州 516007)
《离散数学》课程在计算机学科中的作用及其应用
黄 震
(惠州学院 计算机科学系,广东 惠州 516007)
离散数学是计算机科学的核心基础理论课,为后续课程提供必须的理论基础.分析了离散数学在计算机学科中与其他课程之间的关系,阐述了离散数学在计算机领域的实际应用.
离散数学;计算机;应用
离散数学是计算机学科的专业基础课,不但为后续课程提供必须的理论基础,而且可以培养学生的抽象思维能力和解决问题的能力.
离散数学的教学内容与计算机硬件和软件都有着密切的关系,具有鲜明的基础特点,不仅是数据结构、数据库原理、数字逻辑、编译原理、人工智能、信息安全等课程的前续课程,同时以计算机导论和程序设计基础作为离散数学的先导课程[1].
离散数学是计算机应用的必不可少的工具.例如数理逻辑在数据模型、计算机语义、人工智能等方面的应用,集合论在数据库技术中的应用,代数系统在信息安全中的密码学方面的应用,图论在信息检索、网络布线、指令系统优化等方面的应用.
离散数学与数据结构的关系非常紧密,数据结构课程描述的的对象有四种,分别是线形结构、集合、树形结构和图结构,这些对象都是离散数学研究的内容.线形结构中的线形表、栈、队列等都是根据数据元素之间关系的不同而建立的对象,离散数学中的关系这一章就是研究有关元素之间的不同关系的内容;数据结构中的集合对象以及集合的各种运算都是离散数学中集合论研究的内容;离散数学中的树和图论的内容为数据结构中的树形结构对象和图结构对象的研究提供了很好的知识基础.
目前数据库原理主要研究的数据库类型是关系数据库.关系数据库中的关系演算和关系模型需要用到离散数学中的谓词逻辑的知识;关系数据库的逻辑结构是由行和列构成的二维表,表之间的连接操作需要用到离散数学中的笛卡儿积的知识,表数据的查询、插入、删除和修改等操作都需要用到离散数学中的关系代数理论和数理逻辑中的知识.
数字逻辑为计算机硬件中的电路设计提供了重要理论,而离散数学中的数理逻辑部分为数字逻辑提供了重要的数学基础.在离散数学中命题逻辑中的联结词运算可以解决电路设计中的由高低电平表示的各信号之间的运算以及二进制数的位运算等问题.
编译原理和技术是软件工程技术人员很重要的基础知识,编译程序是非常复杂的系统程序,包括词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成、依赖机器的代码优化7个阶段.离散数学中的计算模型[2]这一章的语言和文法、有限状态机、语言的识别和图灵机等知识点为编译程序中的词法分析和语法分析提供了基础.
离散数学中数学推理和布尔代数章节中的知识为早期的人工智能研究领域打下了良好的数学基础.谓词逻辑演算为人工智能学科提供了一种重要的知识表示方法和推理方法.另外,模糊逻辑的概念也可以用于人工智能.
信息安全应用方面与离散数学也关系密切,离散数学中的代数系统和初等数论为密码学提供了重要的数学基础,例如凯撒密码的本质就是使用了代数系统中的群的知识,初等数论中的欧拉定理和费马小定理为著名的RSA公钥密码体系提供了最直接的数学基础.
表1 离散数学与后续课程的相关知识点
离散数学除了与以上课程关系密切,与其他课程也有着非常重要的关系,这里以表格的形式列出离散数学与后续课程相关联的知识点,如表1所示.
离散数学课程包括数理逻辑、集合论、代数系统和图论几个部分,下面分别介绍一下这几个部分在计算机各方面的应用.
数理逻辑是用数学方法研究思维规律的一门学科,包括命题逻辑、谓词逻辑和推理理论等知识点.
命题逻辑中的联结词广泛应用在大量信息的检索、逻辑运算和位运算中,例如目前大部分网页检索引擎都支持布尔检索,使用NOT、AND、OR等联结词进行检索有助于快速找到特定主题的网页;信息在计算机内都表示为0或1构成的位串,通过对位串的运算可以对信息进行处理,计算机字位的运算与逻辑中的联结词的运算规则是一致的,掌握了联结词的运算为计算机信息的处理提供了很好的知识基础.在计算机硬件设计中,使用了联结词完备集中的与非和或非,使用与非门和或非门设计逻辑线路,替代了之前的非门、与门和或门的组合,优化了逻辑线路.
谓词逻辑可以表示关系模型中的关系操作[4],用谓词逻辑表示关系操作的关系演算形式是:{s[<属性表>]│R(s)},其中R(s)指的是s用该满足的谓词,例如要查询不及格的女同学的名字,关系演算的表达式为:{s
推理理论可以应用到计算机语义的理解中,在推理理论中验证某理论的逻辑正确性时首先需要将其形式化,这样在逻辑推理时就直接使用逻辑规则进行推理而不需要理会其具体含义了,在计算机语义中,也可以将其形式化,借助推理理论的方法进行计算机语义的理解.
集合是由各种不同元素构成的,并用统一的方法来处理的对象,集合论包括集合代数、关系和函数等知识点.
集合代数中的集合的性质和集合的运算主要是为其他学科提供数学基础,现实世界中的数字、符号、图像、语音、视频等各种信息都可以作为数据存放到计算机进行处理,这些数据就构成集合.
关系是一种特殊的集合,它反映了研究对象之间的联系与性质,例如关系数据库模型中,每个数据库都是一个关系,在计算机程序中输入和输出就构成一个二元关系.等价关系和偏序关系广泛的存在于实际应用中,例如利用偏序的知识可以解决调度中的最优调度问题;在软件工程的软件测试方法中有一种等价类划分的方法,即将所有待测试的数据构成的集合划分为符合软件需求规格和设计规定的有效等价类和不符合的无效等价类,因为每个等价类中只需要取一个数据代表其所在等价类的其他数据进行测试,所以大大提高了软件测试的效率.
函数的应用比较广泛,例如在密码学中的应用,公钥系统中的原理是基于单向陷门函数,单向陷门函数满足3个条件:(1)对于属于定义域的任意一个x,可以很容易算出F(x)=y,(2)对于几乎所有属于值域的任意一个y,则在计算上除非获得陷门,否则不可能求出x,使得x=F-1(y),(3)若有一额外数据z(称为陷门),则可以很容易的求出x=F-1(z).单向陷门函数与单向函数的差异在于可逆与不可逆.若单向陷门函数存在,则任何单向陷门函数均可用来设计公开密钥密码系统.同时,若单向函数满足交换性,则单向函数也可能用来设计公开密钥密码系统.
代数系统研究的是集合、该集合中元素的运算和一些特殊元素,其中群是一种特殊的代数系统,具有可结合、有单位元、每个元素都有逆元等性质.凯撒密码系统的原理是将字母表的字母右移n个位置,n即key,然后对字母表长度l作模运算,加密形式为:c=(m+n)mod l,解密形式为:m=(c-n)mod l,其实凯撒密码就是建立在26个字母之上,字母与key运算的剩余模群.椭圆曲线加密算法是利用椭圆曲线离散对数问题,椭圆曲线离散对数问题定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q的情况下求出小于p的正整数k,由于已知k和P计算Q比较容易,而由Q和P计算k则比较困难,至今没有有效的方法来解决这个问题,这正是该加密算法的原理所在.
图论在计算机领域的应用广泛,例如利用哈密顿图求最短路径问题和旅行商最优问题,利用哈夫曼算法对指令系统优化以及提高通信效率等问题[5].在计算机体系结构中,指令系统的优化非常重要,因为可以提高整个计算机系统的性能,指令系统的优化方法很多,其中一种就是对指令的格式进行优化,是指用最短的位数来表示指令的操作码和地址码,使程序中的指令的平均字长最短,可以使用哈夫曼算法对指令的格式进行优化,利用哈夫曼算法可以构造出最优二叉树,而二叉树的权是最小的,即可以实现指令的平均字长最短.同样的原理利用哈夫曼算法构造最优二叉树可以解决通信中传输二进制数最优效率的问题.
离散数学在计算机领域的作用非常重要,计算机科学中普遍采用离散数学中的一些基本概念、知识点和研究方法.离散数学课程不但为其他课程提供必要的理论基础,在计算机学科中有着广泛的应用,而且通过学习离散数学的思想和方法也提高了学生的逻辑思维能力和创造性思维能力.为了更好的学习计算机学科的后续课程以及解决计算机科学中遇到的实际问题必须学好离散数学课程.
〔1〕朱家义,苗国义,等.基于知识关系的离散数学教学内容设计[J].计算机教育,2010(18):98-100.
〔2〕Kenneth H.Rosen.离散数学及其应用[M].北京:机械工业出版社,2006.
〔3〕陈敏,李泽军.离散数学在计算机学科中的应用[J].电脑知识与技术,2009,5(1):251-252.
〔4〕龚静,王青川.数理逻辑在计算机科学中的应用浅析[J].青海科技,2004(6):53-54.
〔5〕屈婉玲,耿素云,等.离散数学[M].北京:高等教育出版社,2008.
G642
A
1673-260X(2011)05-0264-02
惠州学院教研教改项目《离散数学课程结合实践教学的教学模式研究》