1、我 所 了 解 的 离 散 数 学 的 应 用经过一个学期的对离散数学的学习,首先,由于离散数学是一门数学课,且是由几个数学分支综合在一起的,内容繁多,非常抽象,因此对我们学生学起来会倍感困难。作为一门理论抽象,内容广泛,结构严谨的计算机专业基础可它不仅与计算机专业基础课(数据结构、操作系统、数据库原理、人工智能、编译原理、网络理论等)有紧密联系,而且对培养学生的抽象思维能力与逻辑推理能力有着重要作用,为我们今后在是计算机科学的研究与技术的卡法提供了重要的工具。鉴于离散数学在计算科学中的重要性,这是一门必须牢牢掌握的课程。既然如此,在学习离散数学时,我们最应该注意学习过程是一个扎扎实实积累的过
2、程,不能打马虎眼。离散数学是理论性较强的学科,学习离散数学的关键是对离散数学集合论、数理逻辑和图论有关基本概念的准确掌握,对基本原理及基本运算的运用,并要多做练习。1、什么是离散数学离散数学(Discrete mathematics)是研究离散量的结构及其相互关系的数学学科,是现代数学的一个重要分支。它在各学科领域,特别在计算机科学与技术领域有着广泛的应用,同时离散数学也是计算机专业的许多专业课程,如程序设计语言、数据结构、操作系统、编译技术、人工智能、数据库、算法设计与分析、理论计算机科学基础等必不可少的先行课程。通过离散数学的学习,不但可以掌握处理离散结构的描述工具和方法,为后续课程的学习
3、创造条件,而且可以提高抽象思维和严格的逻辑推理能力,为将来参与创新性的研究和开发工作打下坚实的基础。离散数学是传统的逻辑学,集合论(包括函数) ,数论基础,算法设计,组合分析,离散概率,关系理论,图论与树,抽象代数(包括代数系统,群、环、域等) ,布尔代数,计算模型(语言与自动机)等汇集起来的一门综合学科。离散数学的应用遍及现代科学技术的诸多领域。离散数学课程主要介绍离散数学的各个分支的基本概念、基本理论和基本方法。这些概念、理论以及方法大量地应用在数字电路、编译原理、数据结构、操作系统、数据库系统、算法的分析与设计、人工智能、计算机网络等专业课程中;同时,该课程所提供的训练十分有益于学生概括
4、抽象能力、逻辑思维能力、归纳构造能力的提高,十分有益于学生严谨、完整、规范的科学态度的培养。离散数学课程的教学目的,不但作为计算机科学与技术及相关专业的理论基础及核心主干课,对后续课程提供必需的理论支持。更重要的是旨在“通过加强数学推理,组合分析,离散结构,算法构思与设计,构建模型等方面专门与反复的研究、训练及应用,培养提高学生的数学思维能力和对实际问题的求解能力。”离散数学通常研究的领域包括:数理逻辑、集合论、代数结构、关系论、函数论、图论、组合学、数论等。它是高校计算机及相关专业的重要基础课程之一。二、离散数学在计算机学科中的应用 1、数理逻辑在人工智能中的应用 人工智能是计算机学科中一个
5、非常重要的方向,离散数学在人工智能中的应用主要是数理逻辑部分在人工智能中的应用。数理逻辑包括命题逻辑和谓词逻辑,命题逻辑就是研究以命题为单位进行前提与结论之间的推理,而谓词逻辑就是研究句子内在的联系。大家都知道,人工智能共有两个流派,连接主义流派和符号主义流派。其中在符号主义流派里,他们认为现实世界的各种事物可以用符号的形式表示出来,其中最主要的就是人类的自然语言可以用符号进行表示。语言的符号化就是数理逻辑研究的基本内容,计算机智能化的前提就是将人类的语言符号化成机器可以识别的符号,这样计算机才能进行推理,才能具有智能。由此可见数理逻辑中重要的思想、方法及内容贯穿到人工智能的整个学科。 2、图
6、论在数据结构中的应用 离散数学在数据结构中的应用主要是图论部分在数据结构中的应用,树在图论中占着重要的地位。树是一种非线性数据结构,在现实生活中可以用树来表示某一家族的家谱或某公司的组织结构,也可以用它来表示计算机中文件的组织结构,树中二叉树在计算机科学中有着重要的应用。二叉树共有三种遍历方法:前序遍历法、中序遍历法和后序遍历法。 通过访问不同的遍历序列,可以得到不同的节点序列,通常在计算机中利用不同的遍历方法读出代数表达式,以便在计算机中对代数表达式进行操作。 3、集合论在数据库系统理论中的应用 集合论是离散数学中极其重要的一部分,它在数据库中有着广泛的应用。我们可以利用关系理论使数据库从网
7、络型、层次型转变成关系型,这样使数据库中的数据容易表示,并且易于存储和处理,使逻辑结构简单、数据独立性强、数据共享、数据冗余可控和操作简单。当数据库中记录较多时,集合中的笛卡儿积方便了记录的查询、插入、删除和修改。 4、代数系统在通信方面的应用 代数系统在计算机中的应用广泛,例如有限机,开关线路的计数等方面。但最常用的是在纠错码方面的应用。在计算机和数据通信中,经常需要将二进制数字信号进行传递,这种传递常常距离很远,所以难免会出现错误。通常采用纠错码来避免这种错误的发生,而设计的这种纠错码的数学基础就是代数系统。纠错码中的一致校验矩阵就是根据代数系统中的群概念来进行设计的,另外在群码的校正中,
8、也用到了代数系统中的陪集。5、 离散数学在生物信息学中的应用 生物信息学是现代计算机科学中一个崭新的分支,它是计算机科学与生物学相结合的产物。目前,在美国有一个国家实验室 Sandia 国家实验室,主要进行组合编码理论和密码学的研究,该机构在美国和国际学术界有很高的地位。另外,由于 DNA 是离散数学中的序列结构,美国科学院院士,近代离散数学的奠基人 Rota 教授预言,生物学中的组合问题将成为离散数学的一个前沿领域。而且,IBM 公司也将成立一个生物信息学研究中心。在 1994 年美国计算机科学家阿德勒曼公布了 DNA 计算机的理论,并成功地运用 DNA 计算机解决了一个有向哈密尔顿路径问题
9、,这一成果迅速在国际产生了巨大的反响,同时也引起了国内学者的关注。DNA 计算机的基本思想是:以 DNA 碱基序列作为信息编码的载体,利用现代分子生物学技术,在试管内控制酶作用下的 DNA序列反应,作为实现运算的过程;这样,以反应前 DNA 序列作为输入的数据,反应后的 DNA 序列作为运算的结果,DNA 计算机几乎能够解决所有的 NP 完全问题。3、在学习过程中,我总结出离散数学的以下几项特点:1、定义和定理多离散数学是建立在大量定义、定理之上的逻辑推理学科,因此对概念的理解是学习这门课程的核心。在学习这些概念的基础上,要特别注意概念之间的联系,而描述这些联系的实体则是大量的定理和性质。在考
10、试中有一部分内容是考查对定义和定理的识记、理解和运用,因此要真正理解离散数学中所给出的每个基本概念的真正的含义。比如,命题的定义、五个基本联结词、公式的主析取范式和主合取范式、三个推理规则以及反证法;集合的五种运算的定义;关系的定义和关系的四个性质;函数(映射)和几种特殊函数(映射)的定义;图、完全图、简单图、子图、补图的定义;图中简单路、基本路的定义以及两个图同构的定义;树与最小生成树的定义。掌握和理解这些概念对于学好离散数学是至关重要的。2、方法性强在离散数学的学习过程中,一定要注重和掌握离散数学处理问题的方法,在做题时,找到一个合适的解题思路和方法是极为重要的。如果知道了一道题用怎样的方
11、法去做或证明,就能很容易地做或证出来。反之,则事倍功半。在离散数学中,虽然各种各样的题种类繁多,但每类题的解法均有规律可循。所以在听课和平时的复习中,要善于总结和归纳具有规律性的内容。在平时的讲课和复习中,老师会总结各类解题思路和方法。作为学生,首先应该熟悉并且会用这些方法,同时,还要勤于思考,对于一道题,进可能地多探讨几种解法。3、抽象性强离散数学的特点是知识点集中,对抽象思维能力的要求较高。由于这些定义的抽象性,使初学者往往不能在脑海中直接建立起它们与现实世界中客观事物的联系。不管是哪本离散数学教材,都会在每一章中首先列出若干个定义和定理,接着就是这些定义和定理的直接应用,如果没有较好的抽
12、象思维能力,学习离散数学确实具有一定的困难。因此,在离散数学的学习中,要注重抽象思维能力、逻辑推理能力的培养和训练,这种能力的培养对今后从事各种工作都是极其重要的。在学习离散数学中所遇到的这些困难,可以通过多学、多看、认真分析讲课中所给出的典型例题的解题过程,再加上多练,从而逐步得到解决。在此特别强调一点:深入地理解和掌握离散数学的基本概念、基本定理和结论,是学好离散数学的重要前提之一。所以,同学们要准确、全面、完整地记忆和理解所有这些基本定义4、内在联系性离散数学的三大体系虽然来自于不同的学科,但是这三大体系前后贯通,形成一个有机的整体。通过认真的分析可寻找出三大部分之间知识的内在联系性和规
13、律性。如:集合论、函数、关系和图论,其解题思路和证明方法均有相同或相似之处。四、结论 刚开始学习离散数学时并不知道学习它有什么用,但在学习过程中渐渐感到它的意义,我是学习计算机的,学习计算机不学习离散数学,那么我们对计算机的了解只能停留在表面上,重于结构方面去学习离散数学的基本内容,更重要的是学习离散数学的最基本的思维方法。学习离散数学,是以学习离散数学的内容来掌握关于计算机科学的最基本的思维方法。学科的思维特点是由学科的本体论、认识论、方法论和表达语言所决定的。我们不去讨论这些概念的精确定义和在计算机科学中的含义,但在计算机科学中,任何的思维都应该问题的求解在计算机上实现。在计算机科学的表达
14、语言(至少在符号处理层面和在逻辑层面)上,求解问题如何操作,也就是说任何称得上适合于计算机科学的思维都应该是可操作的。所以在数学中的存在性和唯一性问题,在计算机科学中是可构造性和构造的复杂性问题。另外,目前人们让计算机解题,不仅要(用程序的方式)告诉计算机做什么,而且还要(用程序的方式)告诉计算机如何做,因此在结构化问题描述的基础上,还要指出问题求解的整个构造过程。在计算机科学的整个解决实际问题的思维过程中,非常注重解题的可操作性和操作的过程。离散数学的整个思维训练就是这种构造性思维的训练。在离散数学的整个学习过程中不仅要注重解题(或论证)的结果,而更重要是注重解题(或论证)过程的可构造性,以及可构造过程的复杂性。从数学的角度来看,离散数学的内容并不复杂,但从计算机科学的角度来看离散数学引导了人们进入计算机科学的思维领域,在通用层面上表现了计算机科学的学科特点。总之离散数学对我们学习计算机的学生非常重要,学好离散数学才能跟深入地学习计算机。所以,应努力学习离散数学,推动离散数学的研究,使它在计算机中有着更为广泛的应用。