计算机科学数学理论
- 格式:pdf
- 大小:209.54 KB
- 文档页数:5
计算机科学中的数学基础与应用案例计算机科学作为一门技术学科,紧密依赖于数学的基础理论和应用方法。
数学作为计算机科学的重要基础,为计算机算法、数据结构、编程语言等提供了支撑。
本文将介绍计算机科学中的数学基础,并结合实际应用案例加深对数学在计算机科学中的理解。
一、离散数学离散数学是计算机科学中最基础的数学学科之一。
它研究离散对象及其关系,如集合、关系、图论等,这些概念在计算机科学中具有重要应用。
以图论为例,图论是研究图的结构与性质的数学学科,它在计算机网络、数据结构、人工智能等领域中有广泛的应用。
在计算机网络中,使用图论的概念可以描述网络拓扑结构,寻找最短路径,进行路由优化等。
而在数据结构中,图的遍历、搜索等算法也是基于图论的原理设计而成。
另外,在人工智能领域,图神经网络是一种基于图模型的深度学习算法,它通过对图的节点和边进行学习,实现了对图数据的有效处理。
二、概率论与统计学概率论与统计学是计算机科学中另一个重要的数学基础。
在计算机科学中,概率论和统计学常常用于处理不确定性问题,如机器学习中的分类、聚类、回归等任务。
以机器学习中的分类为例,概率论提供了一种刻画不确定性的数学工具,通过对样本数据的概率分布进行建模,可以使用贝叶斯分类器等算法进行分类任务。
统计学则提供了一种从样本中学习模型参数的方法,如最大似然估计、最大后验概率估计等,以帮助机器学习算法对数据进行建模和预测。
三、线性代数线性代数是计算机科学中广泛应用的数学学科之一。
在计算机图形学中,线性代数为三维图形的建模、渲染和变换提供了数学工具。
例如,通过矩阵变换可以实现图形的旋转、缩放和平移等操作;而在计算机视觉中,线性代数也用于图像处理、图像分割和特征提取等任务。
此外,在机器学习中,线性代数也是必不可少的基础知识。
例如,线性回归、主成分分析等算法都是基于线性代数的理论和方法,通过矩阵运算实现对数据的降维和拟合。
四、离散数学、数值计算与计算几何离散数学、数值计算和计算几何是计算机科学中的另外三个重要数学基础。
计算机科学中的数学基础知识计算机科学与数学密切相关,数学为计算机科学提供了重要的基础知识和技能。
在计算机科学的各个领域,数学都发挥着关键作用。
本文将介绍计算机科学中的数学基础知识。
一、离散数学离散数学是计算机科学的基础,它研究离散对象及其关系,包括集合论、图论、逻辑等。
集合论是研究集合及其操作的数学分支,它在计算机科学中被广泛应用于数据结构和算法设计。
图论是研究图及其性质的数学分支,它在网络分析、图像处理等领域起着重要作用。
逻辑是研究推理和证明方法的数学分支,它是计算机科学中设计和分析算法的基础。
二、概率论与统计概率论与统计是计算机科学中用于处理不确定性的重要工具。
概率论研究随机现象的规律性,统计学研究数据的收集、分析和推断。
在机器学习、数据挖掘和人工智能等领域,概率论与统计提供了建立模型、分析数据和做出决策的方法。
例如,对于一个分类问题,我们可以使用概率论和统计学的方法来计算不同类别的概率,并根据概率做出分类决策。
三、线性代数线性代数是计算机图形学和机器学习等领域必备的数学工具。
它研究向量空间和线性变换等概念,提供了描述和解决多维数据和变换的工具。
在计算机图形学中,线性代数用于描述和处理三维图形的变换和投影。
在机器学习中,线性代数提供了处理高维数据和建立模型的基础。
四、微积分微积分是研究变化和极限的数学分支,它在计算机科学中广泛应用于优化、算法分析和模拟等领域。
在优化中,微积分提供了求解最优化问题的方法,如梯度下降和牛顿法等。
在算法分析中,微积分用于分析算法的时间复杂度和空间复杂度。
在模拟中,微积分用于描述和求解物理、生物和经济等系统的动态行为。
五、数论数论是研究整数和整数运算的数学分支,它在密码学和算法设计等领域起着重要作用。
在密码学中,数论提供了建立安全密码系统和解密密码系统的基础。
在算法设计中,数论用于设计高效的算法和数据结构。
六、离散概念与自动机离散概念与自动机是研究离散结构和自动计算的数学分支,它在编译器设计和计算理论等领域起着重要作用。
计算机数学基础pdf随着计算机技术的飞速发展,计算机数学基础作为计算机科学的重要基石,其重要性愈发凸显。
计算机数学基础涵盖了多个数学领域,这些领域为计算机科学提供了理论支持和实践指导。
本文将对计算机数学基础的主要内容进行简要介绍。
一、基础知识基础知识是计算机数学基础的第一步,主要包括实数、整数、矩阵、向量等基本概念及其性质。
此外,还包括基本的代数运算和函数等基础知识。
这些知识是进一步学习更高级的计算机数学概念的基础。
二、离散概率论离散概率论是计算机数学基础的一个重要组成部分,主要研究随机事件及其概率。
离散概率论中的基本概念包括样本空间、事件、概率等,这些概念在计算机科学中有着广泛的应用,例如在算法设计、数据挖掘等领域中都有重要的应用。
三、组合数学组合数学是研究计数、排列和组合问题的数学分支。
在计算机科学中,组合数学主要用于解决算法设计和数据结构等方面的问题。
组合数学中的基本概念包括排列、组合、二项式系数等,这些概念在计算机科学中有着广泛的应用。
四、图论图论是计算机数学基础中非常重要的一个部分,主要研究图形的性质和结构。
在计算机科学中,图论主要用于解决图形算法、网络流等问题。
图论中的基本概念包括节点、边、路径、环等,这些概念在计算机网络、数据库系统等领域中有着广泛的应用。
五、逻辑与推理逻辑与推理是计算机数学基础中的重要组成部分,主要研究推理和证明的规则和方法。
在计算机科学中,逻辑与推理主要用于形式语言、自动推理等方面。
逻辑与推理中的基本概念包括命题、逻辑运算符、推理规则等,这些概念在计算机科学中有着广泛的应用,例如在程序设计和人工智能等领域中都有重要的应用。
六、总结计算机数学基础作为计算机科学的重要基石,涵盖了多个数学领域,包括基础知识、离散概率论、组合数学、图论和逻辑与推理等。
这些领域为计算机科学提供了理论支持和实践指导,对于深入理解计算机科学的本质和解决实际问题具有重要的意义。
通过学习和掌握这些基础概念和方法,我们可以更好地理解和应用计算机科学,从而更好地服务于我们的生活和工作。
数学与计算机科学的联系数学和计算机科学是两个密切相关的学科领域,在现代社会中都发挥着重要的作用。
数学作为一门抽象的学科,提供了计算机科学发展所需的基本工具和理论基础。
本文将探讨数学和计算机科学的联系,并介绍它们之间的几个主要方面。
一、逻辑与证明逻辑是数学和计算机科学的基础。
在计算机科学中,逻辑用于设计和验证计算机程序的正确性。
逻辑学的理论基础为计算机科学家提供了一种严密的思维方式,使他们能够开发出高效、安全和可靠的软件系统。
证明是数学中一个重要的概念,也是计算机科学中的关键技能。
数学家通过证明来验证数学定理的正确性,而计算机科学家通过形式化证明来验证软件和算法的正确性。
数学和计算机科学中的证明方法相互借鉴,使得计算机科学能够从数学中获得严密性和准确性。
二、离散数学离散数学是计算机科学的基础,它研究的是离散结构,如集合、图论、布尔代数等。
离散数学提供了计算机科学中算法和数据结构的理论基础。
对于计算机科学家来说,掌握离散数学是必不可少的,它帮助他们理解算法的性能、数据的组织和问题的求解过程。
三、数论与密码学数论是研究整数性质和结构的学科,而密码学是研究信息安全和加密算法的学科。
这两个领域的密切联系使得计算机科学家能够设计出安全可靠的加密算法,确保信息在传输和存储过程中的安全性。
数论中的一些重要算法,如素数测试和大整数运算,为密码学提供了重要的工具。
而密码学中的一些问题,如大素数生成和离散对数问题,也促进了数论理论的发展。
数学和计算机科学相互促进,共同推动了密码学的发展。
四、数值计算与算法分析数值计算是计算机科学中的一个重要领域,它研究的是使用计算机处理数值数据的方法和技巧。
数值计算中的一些常见问题,如求解线性方程组和计算数学函数的逼近值,都需要借助数学知识来设计高效的算法。
算法分析是计算机科学中研究算法性能和复杂性的学科。
数学中的一些理论工具,如渐近符号和复杂性分析方法,为算法分析提供了重要帮助。
通过数学的方法,计算机科学家能够评估算法的时间复杂度和空间复杂度,设计出更加高效的算法。
计算机数学计算机数学计算机是一种无所不在的工具,它的普及程度和使用频率不断增加。
在计算机领域,数学学科起着重要的作用。
计算机数学是指将数学应用到计算机科学中,用于解决计算机相关的问题。
计算机数学具有深刻的理论基础和广泛的应用领域,包括计算机图形学、计算机网络、数据结构、算法等等。
1.数学在计算机科学中的应用计算机科学是一门应用科学,它以计算机系统的构建、操作和维护为研究对象。
计算机科学依赖于许多数学学科,如离散数学,线性代数,概率论和统计学等等。
这些学科为程序设计和算法开发提供了数学基础。
计算机科学还利用微积分、数学逻辑和图论等数学工具来建模和分析计算机系统的性能。
除了基础理论,计算机科学也需要具有实际应用的数学方法。
例如,在计算机图形学中,数学方法被广泛用于三维图形渲染和动画制作。
在计算机网络中,数学方法被用来分析数据包传输和数据压缩等问题。
在机器学习和人工智能领域,数学方法被用来开发算法和建模。
总之,数学在计算机科学中具有举足轻重的地位。
它不仅为计算机科学提供了基础理论,而且为计算机应用提供了实际方法。
2.计算机数学的重要性计算机数学是指将数学应用到计算机科学中,解决与计算机相关的问题。
计算机科学的许多方面都是数学问题,如程序设计、算法开发、机器学习、数据处理和网络传输等等。
计算机数学包括离散数学、线性代数、概率论、统计学、微积分等数学学科。
计算机数学的重要性体现在以下几个方面:(1)理论基础:计算机科学是一门应用学科,但其理论基础是数学。
计算机科学需要基于数学理论研究它所涉及的问题和算法等。
(2)算法开发:计算机算法是问题求解的途径,数学包括离散数学、概率论、统计学等等学科,常常被应用于算法中,为算法开发提供支持。
(3)图形学:计算机图形学处理的是数字图像、动画制作等领域的问题,其中数学是其中非常重要的一部分。
计算机图形学使用的数学工具包括线性代数、微积分和几何学等。
(4)人工智能:数学在人工智能领域中也起到了不可或缺的作用。
数学与计算机科学的联系与应用数学和计算机科学是两个紧密相关的学科,它们之间存在着深入的联系和广泛的应用。
数学为计算机科学提供了基础理论和工具,而计算机科学则将数学的概念和方法应用到实际问题的解决中。
本文将探讨数学与计算机科学之间的联系,并介绍它们在现代科技领域的应用。
一、数学与计算机科学的联系1.数论与密码学数论是数学的一个重要分支,研究整数的性质和关系。
密码学是计算机科学中的一个分支,研究信息的加密和解密技术。
数论为密码学提供了基础概念和算法,如素数的应用和模运算等。
通过数论的方法,可以设计出安全的密码算法,保护计算机系统和网络传输中的信息安全。
2.线性代数与计算机图形学线性代数是数学中的一个重要分支,研究向量空间和线性变换等概念。
计算机图形学是计算机科学中的一个分支,研究计算机生成的图像和图形的表示和处理。
线性代数为计算机图形学提供了基础理论和方法,如矩阵变换和向量运算等。
通过线性代数的方法,可以实现计算机图形的三维投影、旋转和变换等操作。
3.概率论与数据分析概率论是数学中的一个分支,研究随机事件和概率分布等概念。
数据分析是计算机科学中的一个分支,研究从大量数据中提取有用信息的方法和技术。
概率论为数据分析提供了统计模型和假设检验等工具,如贝叶斯定理和正态分布等。
通过概率论的方法,可以进行数据的建模、预测和决策等分析。
二、数学与计算机科学的应用1.人工智能人工智能是计算机科学中的一个重要领域,研究如何使机器能够模拟和实现人类智能。
数学在人工智能中有着广泛的应用,如逻辑推理、数据挖掘和机器学习等。
通过数学的方法,可以构建人工神经网络和深度学习模型,实现图像识别、自然语言处理和智能决策等功能。
2.加密与安全加密和安全是计算机科学中的重要问题,涉及到信息保护和隐私安全等方面。
数学在加密和安全领域具有重要作用,如公钥密码学和哈希算法等。
通过数学的方法,可以设计出高效可靠的加密算法,保护数据的机密性和完整性。
计算机科学中的数学基础计算机科学是一门涉及数字和逻辑思维的学科,而数学作为计算机科学的基础之一,为计算机科学家提供了一套强大而有效的工具和方法。
数学为计算机科学中的算法、数据结构、图论、逻辑和编程语言等方面提供了关键支持。
本文将探讨计算机科学中数学的重要性以及它在不同领域中的应用。
一、离散数学离散数学是计算机科学中的基础数学分支,它研究的是离散对象和离散结构。
离散数学的许多概念和技术直接应用于计算机科学的各个领域。
例如,集合论、逻辑、图论和组合数学等都是离散数学的重要组成部分。
在计算机科学中,离散数学常被用于处理离散的数据和事件,如图形的表示与操作、网络的建模与分析、逻辑推理与证明等。
离散数学的概念和技术为计算机科学提供了一种严密的数学语言,使得计算机科学家能够精确地描述和分析问题,从而设计出高效和可靠的算法和数据结构。
二、算法与复杂性理论算法是计算机科学中的核心概念,它描述了如何解决特定问题的步骤和方法。
数学为算法的设计和分析提供了坚实的基础。
通过数学工具,计算机科学家可以衡量算法的效率和复杂性,并预测算法在不同输入规模下的表现。
在复杂性理论中,数学用于研究算法的时间复杂性和空间复杂性。
通过运用数学方法,计算机科学家能够确定某个问题是否可以在合理的时间内解决,或者它的解决方案是否存在。
这对于决策问题的解决、优化问题的求解以及算法设计的选择具有重要意义。
三、概率与统计概率论和统计学是计算机科学中另一个重要的数学基础。
概率论描述了随机现象的规律,统计学则通过对数理模型的建立来分析和预测随机变量的行为。
在计算机科学中,概率和统计扮演着重要的角色,用于处理不确定性和随机性。
概率和统计学在数据挖掘、人工智能和机器学习等领域中有广泛应用。
通过概率和统计学的方法,计算机科学家能够建立机器学习模型、评估算法性能,并从大规模的数据中挖掘出有用的信息和模式。
四、线性代数线性代数是计算机科学中另一个重要的数学分支,它研究向量空间和线性变换等概念。
计算机科学中的数学理论
数学理论在计算机科学中是一个非常重要的话题,是计算机科学的基础。
数学理论在计算机科学中的作用是非常重要的,它可以解释计算机系
统中发生的事情,以及如何处理复杂的数据。
它还可以预测计算机系统将
来发展的情况。
在计算机科学中,数学理论可以帮助我们解决各种各样的问题,例如,我们可以使用数学理论来计算未来的计算机系统容量、提升性能并优化存储、网络资源等。
数学理论在计算机科学中主要用于五个领域:算法分析、时间复杂度
分析、空间复杂度分析、数据结构分析和数据库设计。
算法分析是一种数学理论,它可以检查算法的有效性和可行性,以及
算法的时间和空间复杂度。
时间复杂度分析是研究其中一种算法所花费的
时间。
它可以检查算法的运行效率,以及算法执行的时间长短。
空间复杂
度分析是研究其中一种算法所需要的内存空间。
它用于测量不同算法之间
的内存使用情况,从而帮助开发者优化内存使用。
数据结构分析是研究其
中一种数据结构的特性和其他性能特征的一种数学理论。
它可以检查不同
的数据结构之间的差异,以及使用哪种数据结构最有效。
计算机数学计算机数学是计算机科学中一个重要的学科领域,它涵盖了数学在计算机中的应用和计算机科学中的数学概念。
计算机数学不仅是计算机科学的基础,也是许多计算机科学领域中的核心内容,如算法、数据结构、人工智能等等。
在本文中,我们将探讨计算机数学的一些基本概念和应用。
1. 逻辑和布尔代数逻辑是计算机数学中的重要组成部分,它涉及推理和判断的基本规则。
布尔代数是一种代数系统,用于处理逻辑关系和布尔变量的表达式。
计算机中的逻辑运算,如与、或、非等,可以通过布尔代数来描述和计算。
逻辑和布尔代数在计算机编程、电路设计和数据处理中有广泛的应用。
2. 离散数学离散数学是计算机数学中的另一个关键领域,它研究离散对象和离散结构。
离散对象指的是分离、不连续的对象,如整数、集合等。
离散结构涉及离散对象之间的关系,如图论、排列组合等。
离散数学为计算机科学提供了许多重要的理论基础,如算法分析、图算法等。
3. 数据结构与算法数据结构是计算机中用于存储和组织数据的方法和技术。
算法是解决问题的步骤和规则。
计算机数学提供了对数据结构和算法进行分析和设计的工具和技术。
通过数学的分析,我们可以评估算法的效率和复杂度,选择合适的数据结构来解决问题。
数据结构与算法是计算机科学中的核心内容,能够提高程序的性能和效率。
4. 概率和统计概率和统计是计算机数学中的重要概念,它们与随机事件和数据分析有关。
概率是研究随机事件发生的可能性和规律的数学分支,统计是分析和解释收集到的数据的方法和技术。
计算机科学中的机器学习、数据挖掘等领域都离不开概率和统计的应用。
概率和统计可以帮助我们理解和处理随机性和不确定性的问题。
5. 线性代数线性代数是计算机图形学和计算机视觉中的重要概念。
它研究向量、矩阵和线性变换等对象的代数理论和方法。
许多计算机图形学算法和图像处理技术都基于线性代数。
例如,平移、缩放和旋转操作可以通过线性代数来描述和计算。
线性代数为计算机图形学和计算机视觉提供了理论基础和工具。
计算机自从其诞生之日起,它的主要任务就是进行各种各样的科学计算。
文档处理,数据处理,图像处理,硬件设计,软件设计等等,都可以抽象为两大类:数值计算与非数值计算。
作为研究计算机科学技术的人员,我们大都对计算数学对整个计算机科学的重要性有一些了解。
但是数学对我们这些专业的研究和应用人员究竟有多大的用处呢?我们先来看一下下面的一个流程图:上图揭示了利用计算机解决科学计算的步骤,实际问题转换为程序,要经过一个对问题抽象的过程,建立起完善的数学模型,只有这样,我们才能建立一个设计良好的程序。
从中我们不难看出计算数学理论对用计算机解决问题的重要性。
下面我们将逐步展开对这个问题的讨论。
计算机科学的数学理论体系是相当庞杂的,笔者不敢随意划分,参考计算机科学理论的学科体系,我们谈及的问题主要涉及:数值计算,离散数学,数论,计算理论四大方向。
[一]数值计算(Numerical Computation)主要包括数值分析学、数学分析学、线性代数、计算几何学、概率论与数理统计学。
数值分析学又常被称为计算方法学,是计算理论数学非常重要的一个分支,主要研究数值型计算。
研究的内容中首先要谈谈数值计算的误差分析,误差是衡量我们的计算有效与否的标准,我们的算法解决问题如果在误差允许的范围内,则算法是有效的,否则就是一个无效的问题求解。
另外就是数值逼近,它研究关于如何使用容易数值计算的函数来近似地代替任意函数的方法与过程。
感觉应用比较广的不得不提切雪比夫逼近和平方逼近了。
笔者曾经尝试过的就是通过最佳平方逼近进行曲线的拟合,开发工具可以选择VC++或者Matlab。
插值函数是另外一个非常重要的方面,现代的计算机程序控制加工机械零件,根据设计可给出零件外形曲线的某些型值点,加工时走刀方向及步数,就要通过插值函数计算零件外形曲线及其他点函数值。
至于方程求根、线性方程组求解,一般的计算性程序设计问题都会多多少少的涉及一些,我们这里就不赘述了。
关于数值分析学的一个学习误区就是仅仅学习理论知识,而很难和程序设计结合起来,实际上通过上面的论述,大家已经能够初步地认识到这个学科是应当与程序设计紧密联系才能够体现它的重要性的。
关于理论的学习,推荐华中科技大学李庆扬老师的《数值分析》。
然而理论学习毕竟是个过程,最终的目标还是要用于程序设计解决实际的计算问题,向这个方向努力的书籍还是挺多的,这里推荐大家高等教育出版社(CHEP)和施普林格出版社(Springer)联合出版的《计算方法(Computational Methods)》,华中理工大学数学系写的(现华中科技大学),这方面华科大做的工作在国内应算是比较多的,而个人认为以这本最好,至少程序设计方面涉及了:任意数学函数的求值,方程求根,线性方程组求解,插值方法,数值积分,场微分方程数值求解。
数学分析学很多学校在近些年已经替代高等数学被安排到了本科教学当中。
原因是很简单的,高等数学虽然也是非常有用的工程数学,介绍的问题方法也被广泛的应用,但是正如大家所知道的,高等数学不太严格的说,基本上就是偏向于计算的数学分析,当然省去了数学分析非常看重的推理证明,然而我们认为这一部分正是我们最需要的。
这对我们培养良好的分析能力和推理能力极有帮助。
我的软件工程学导师北工大数理学院的王仪华先生就曾经教导过我们,数学系的学生到软件企业中大多作软件设计与分析工作,而计算机系的学生做初级程序员的居多,原因就在于数学系的学生分析推理能力,从所受训练的角度上要远远在我们平均水平之上。
谈到这方面的书籍,公认北京大学张筑生老师的《数学分析新讲》为最好。
张筑生教授一生写的书并不太多,但是只要是写出来的每一本都是本领域内的杰作,这本当然更显突出些。
这种老书看起来不仅是在传授你知识,而是在让你体会科学的方法与对事物的认识方法。
现在多用的似乎是复旦大学的《数学分析》,高等教育出版社的,也是很好的教材。
但关于如何去利用从中获得的推理证明能力,我们在遇到具体问题的时候,可以在今后的文章详细讨论。
线性代数是我们在工科本科学习的必修课程,似乎大家找不到到底这个有什么用,其实很明显,线性代数作为工程数学的重要分支,在计算机领域的研究有相当广泛的应用。
最为突出的可以谈谈数组和矩阵的相关知识:下面谈一个我经常作为例子和同学讨论的问题:四个城市之间的航线如图所示:令aij=1,表示从i市到j市有1条航线令aij=0,表示从i市到j市没有单项航线则图可用矩阵表示:A= (aij) =我们可以采用程序设计实现这个问题,如果辅以权值,可以转化为最短路径的问题,再复杂化一点还可以转化为具有障碍物的最短路径问题,这就会涉及一些如Dijkstra算法等高级程序设计算法话题。
这些都依靠着数组、矩阵的基本知识。
数组的应用主要在图像处理以及一些程序设计理论。
矩阵的运算领域极为广泛,比如在计算机图形学当中曲线曲面的构造,图像的几何变换,包括平移、镜像、转置、缩放。
在高级图像问题更有广泛应用,例如在图像增强技术,投影技术中的应用。
计算几何学研究的是几何外形信息的计算机表示。
包括几何查找、多边形、凸包问题、交与并、几何体的排列、几何拓扑网络设计、随机几何算法与并行几何算法。
它构成了计算机图形学中的基本算法,是动画设计,制造业计算机辅助设计的基础。
如果从事这方面的深入研究,可以参考中国计算机学会周培德先生的《计算几何——算法分析与设计》。
概率论与数理统计学是这个领域最后一门关键的课程。
概率论部分提供了很多问题的基本知识描述,比如模式识别当中的概率计算,参数估计等等。
数理统计部分有很多非常经典的内容,比如伪随机数、蒙特卡罗法、回归分析、排队论、假设检验、以及经典的马科夫过程。
尤其是随机过程部分,是分析网络和分布式系统,设计随机化算法和协议非常重要的基础。
[二]离散数学(Discrete Mathematics)随着计算机科学的出现与广泛应用,人们发现利用计算机处理的数学对象与传统的分析有明显的区别:分析研究的问题解决方案是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的,因而很少有机会进行此类的计算。
人们从而称这些分支为"离散数学"。
离散数学经过几十年发展,方向上基本上稳定下来。
当然不同时期还有很多新内容补充进来。
就学科方向而言,一般认为,离散数学包含:集合论、逻辑学、代数学、图论、组合学。
逻辑学(Logics)我们主要指数理逻辑,形式逻辑在推理问题中也有比较广泛的应用。
(比如我们学校还为此专门开设了选修课程)这方面的参考推荐中科院软件所陆钟万教授的《面向计算机科学的数理逻辑》。
现在可以找到陆钟万教授的讲课录像,/html/Dir/2001/11/06/3391.htm。
总的来说,学集合/逻辑一定要站在理解的高度上去思考相关的问题。
集合论(Set Theory)和逻辑学构成了计算机科学最重要的数学问题描述方式。
代数学(Algebra)包括:抽象代数、布尔代数、关系代数、计算机代数(1)抽象代数(Abstract Algebra)研究的主要内容涵盖群、环、域。
抽象代表的是将研究对象的本质提炼出来,加以高度概括,来描述其形象。
“欧式环”就是在将整数和多项式的一些相同的特点加以综合提炼引入的。
抽象代数提供的一些结论为我们研究一些具体问题时所需使用的一些性质提供了依据。
推荐一个最简单的,最容易学的材料:/~ec/book/这本《Introduction to Linear and Abstract Algebra》非常通俗易懂,而且把抽象代数和线性代数结合起来,对初学者来说非常理想。
(2)布尔代数(Boolean Algebra)是代数系统中最为基础的部分,也是最核心的基本理论。
主要包括了集合的基本概念与运算,自对偶的公理系统。
是数据表示的重要基础。
相信大家都很清楚它的重要性。
(3)关系代数(Relational Algebra)应用也是极为广泛,比如数据库技术中的关系数据库的构建就要用到关系代数的相关理论。
(4)计算机代数(Computer Algebra)大家可能比较生疏,其实它研究的主要内容即是围绕符号计算与公式演算展开的。
是研究代数算法的设计、分析、实现及其应用的学科。
主要求解非数值计算,输入输出用代数符号表示。
计算机代数的开发语言主要有:ALTRAN,CAMAL,FORMAL。
主要应用于:射影几何,工业设计,机器人手臂运动设计。
图论(Graph Theory)主要研究的内容包括:图的基本概念、基本运算、矩阵表示,路径、回路和连通性,二部图、平面图,树,以及网络流。
图论的应用领域太过广泛,仅举两个例子:比如在计算机网络拓扑图的设计与结构描述中,就必须用到相当多的图的结构和基本概念。
关于网络流更是在电流网络与信息网络的流量计算当中广泛应用。
树的相关应用则无须多言了。
组合学(Combinatorics)有两部分单独的研究领域:组合数学与组合算法。
组合学问题的算法,计算对象是离散的、有限的数学结构。
从方法学的角度,组合算法包括算法设计和算法分析两个方面。
关于算法设计,历史上已经总结出了若干带有普遍意义的方法和技术,包括动态规划、回溯法、分支限界法、分治法、贪心法等。
应用是相当广泛的,比如旅行商问题、图着色问题、整数规划问题。
关于组合数学,主要研究的内容有:鸽巢原理、排列与组合、二项式系数容斥原理及应用,递推关系和生成函数、特殊计数序列、二分图中的匹配、组合设计。
推荐Richard A.Brualdi的《Introductory Combinatorics》作为参考。
[三]数论(Number Theory)数论这门学科最初是从研究整数开始的,所以叫做整数论。
后来更名为数论。
它包括以下几个分支:初等数论是不求助于其他数学学科的帮助,只依靠初等方法来研究整数性质的数论分支。
比如在数论界非常著名的“中国剩余定理”,就是初等数论中很重要的内容。
对于程序设计来说这部分也是相当有价值的,如果你对中国剩余定理比较清楚,利用它,你可以将一种表达式经过简单的转换后得出另一种表达式,从而完成对问题分析视角的转换。
解析数论是使用数学分析作为工具来解决数论问题的分支。
是解决数论中比较深刻问题的强有力的工具。
我国数学家陈景润在尝试解决“哥德巴赫猜想”问题中使用的就是解析数论的方法。
以素数定理为基础解决计算素数的问题及其算法实现应是我们多多关注的。
代数数论是把整数的概念推广到一般代数数域上去,建立了素整数、可除性等概念。
程序设计方面涉及的比较多的是代数曲线的研究,比如说椭圆曲线理论的实现。
几何数论研究的基本对象是“空间格网”。
空间格网就是指在给定的直角坐标系上,坐标全是整数的点,叫做整点;全部整点构成的组就叫做空间格网。
空间格网对计算几何学的研究有着重大的意义。