[转]浅谈离散数学中数理逻辑与集合论的数学本质

申华?,?张胜元?-?《大学教育》?-?2013? ? ? ?

? ? ? ? 离散数学本质上是一门数学课程,是学生数学知识结构和数学素质的重要组成部分。数学这门学科体系虽然很庞大,但大致可分为连续型、离散型和随机型这三大类。在大多数的理工科专业的课程设计中,数学类课程通常包括:高等数学、线性代数、离散数学、概率论与数理统计等。高等数学能提供处理连续型的数学问题需要的数学工具;线性代数与离散数学则提供处理离散型数学问题的数学工具;而概率与统计则提供处理随机型数学问题的数学工具。
  正如徐洁磐在文中指出的:作为计算机学科工具,离散建模是离散数学区别高等数学的根本之处,也是离散数学与计算机紧密关联之处,也是使离散数学成为计算机专业核心课程的原因之一。从学生角度看,离散数学具有抽象、概念多、知识点零散等特点,在学习中容易遇到困难,极大地影响了他们学习的积极性。本文探讨离散数学中的数学本质,目的是理顺这些概念和知识点的关系,进而达到解决学生学习困难的目的。
  离散数学的内容主要包括数理逻辑、集合论、代数结构和图论四部分,其中集合论部分起着承前启后的作用。数理逻辑和集合论这两部分内容如果能处理得好,对整个课程的教学就会起到至关重要的作用。已有部分研究论文对数理逻辑和集合论的教学进行研讨,本文就数理逻辑与集合论的教学内容进行深入分析,弄清它们的数学本质和相互联系,理清教学思路。教学实践表明,这些教学分析能使教师在讲授过程中教学内容主线清晰、教学目标明确,进而有效提高教学质量和学生的数学素质。
  一、数理逻辑部分的数学本质
  其一,命题逻辑部分的数学本质是逻辑数学化。
  在教学过程中,在引入命题逻辑的教学之前,可以让学生比较“人”与“计算机”各自的长处。大部分学生都能得出这样的结论:人长于“智能”而计算机长于“计算”。那么,要让计算机增长“智能”,主要方向就是把“智能”计算化:把通过“智能”思考的问题转化为通过计算进行判定的问题。而智能的基础是逻辑推理,于是“智能”计算化首先就是要逻辑数学化。因此,数理逻辑是计算机的“人工智能”重要的基础之一。
  离散数学中命题逻辑这部分内容的数学本质是逻辑数学化,或者具体地说是逻辑代数化。代数方法的基本要素是对象和运算,代数化的基本过程模式是:符号化(对象)、运算、运算律、演算、标准型、应用。这种思想方法只要提醒学生回顾在中学学过的代数内容就能很快接受。再看命题逻辑这部分的教学内容,基本就是按照这样的模式展开的:命题符号化(对象)、逻辑运算(联结词)、运算律(基本等值式)、等值演算、标准型(范式)、应用(解判定问题、证明等值式、实际应用、推理理论等)。因而,命题逻辑这部分内容的知识点并不零散,贯穿着代数化这条主线。
  教学实践表明,通过逻辑代数化这个主线串联命题逻辑这部分主要内容,教学目标清晰,能得到很好的教学效果;同时学生还能从中学习领会代数化的思想方法,提高了他们的数学素质和应用数学解决实际问题的能力。
  在命题逻辑的教学过程中,除了强调代数化的思想方法,还必须强调“标准型”(范式)是这部分的核心内容。一方面范式是等值演算的终极目标,另一方面范式是介于命题公式和真值表之间的桥梁,因此有着极高的理论与应用价值。
  其二,谓词逻辑部分的数学本质是引入变量与函数的思想。
  从数学本质上看,谓词逻辑就是把变量与函数的思想引入逻辑。在这样的视觉下,那些基本概念就变得很清晰:个体变项是变量、谓词是函数、个体域是定义域、属性谓词是一元函数、关系谓词是多元函数...。然后再一次进行代数化过程:符号化(谓词)、运算(联结词)、运算律(主要增加了量词等值式)、等值演算、标准型(前束范式)、应用(判定问题、证明等值式、实际应用、谓词逻辑推理理论等)。
  当然,谓词逻辑内容远比命题逻辑深刻和复杂,在本科的离散数学中,这部分内容只能算是谓词逻辑的基础了。
  二、集合论部分的数学本质
  通常离散数学中集合论部分也包含两章:集合论基本概念、二元关系与函数。由于中学阶段已经有集合论的简单内容,所以这部分内容学生并不会觉得陌生。
  集合论是整个数学的基石,几乎所有的数学概念都能用集合论语言表达,数学在集合论基础上形成了一个独立的科学体系。实际上从集合和二元关系这部分内容基本上也可以看出数学这个科学体系的构建过程。
  首先集合论这章内容也是一个代数化的过程:对象(集合)、运算(集合运算)、运算律(集合恒等式)、演算、应用(计数、证明恒等式、实际应用等)。这里缺少了一块标准型,实际上集合的演算也是可以有标准型的,只是这里的标准型没有逻辑演算的范式那么重要而已。从内容与结构都可以看出,集合论与命题逻辑这两部分内容有很大的相似性,这会在后文进行探讨。
  有了集合这个基本语言,就可定义二元关系。接着是关系的运算与运算性质(这部分又是代数化方法)。然后是三种特殊的关系:等价关系、偏序关系与函数。等价关系的意义在于“分类”,这既是数学的基本思想方法之一,也是数据挖掘的常见任务;而偏序关系的意义在于“排序”,这是计算机算法中最基本的研究对象。
  有了函数的定义,分析学可以就此展开;而用函数定义二元运算后,于是代数学的基础有了。有了分析学、代数学,数学这个科学体系的基本框架也就基本搭建好了。
  集合论是数学之本。从集合到关系、再到函数与运算,构建了数学学科基础。这就是集合论这部分的数学本质。弄清楚这些,教师就能做到胸中有“数”、总揽全局。而给学生介绍这些数学本质,学生也能初步了解这部分内容的结构、意义和价值,对这部分内容的学习和掌握是有很大帮助的。而且经过这两个部分的学习,学生逐步熟悉和掌握代数的思想和方法,对后续抽象代数部分的学习在心理上和知识上都有了一定的准备。

? ? ? ?三、数理逻辑与集合论基本内容的内在联系
  前文提到,命题逻辑和集合论这两部分内容有很大的相似性。具体地说,这两部分的运算与运算律具有很强的对应关系。比如,逻辑运算{~,∧,∨}与集合运算{~,∩,∪}之间的一一对应关系。大多数教师都能认识这点并在教学中加以利用。例如,在讲授逻辑运算的运算律时提醒学生注意观察逻辑运算的运算律与集合运算的运算律之间的对应关系,这有助于学生理解并掌握逻辑运算的运算律。有的离散数学的教材也把集合论这部分内容放在数理逻辑之前,这样做虽然破坏了逻辑-集合-代数这样的连贯性,但从学生有初步认知的集合论开始,然后再利用集合论与命题逻辑在内容上的相似性辅助逻辑部分的教学,也是有其可取之处的。
  实际上,用命题逻辑的工具可以推导出集合运算及其一些运算律:给定集合A和B,假设全集是E。对于任意给定的元素x∈E,用p表示命题“x∈A”,q表示命题x∈B,则命题公式~p表示的命题是“x∈~A”、p∧q表示“x∈B∩A”、p∨q表示“x∈A∪B”。这就是逻辑运算与集合运算的对应与转换关系。进一步地,永真式(重言式)1表示x∈E、永假式(矛盾式)0表示“x∈Φ”,那么从命题逻辑的一些基本等值式就能直接推导出集合论中的一些基本恒等式(如结合律、交换律、分配律、德·摩根律等)。
  当然,要更深入地探讨集合论的恒等式和逻辑运算的等值式之间的关系,需要用到谓词逻辑工具,不过这已超出了教学研究范畴,因此本文不在此进一步展开阐述,有兴趣的读者可自行探究。
  四、结语
  笔者认为,强调离散数学在计算机科学领域的应用是必要的,有助于提高学生的学习积极性和应用意识,但离散数学本身承载的数学本质也不应被忽视,毕竟它是一门重要的数学类课程。本文从数理逻辑与集合论模块的教学谈离散数学的一些数学本质,目的是在离散数学的教学过程中在把握其数学本质的基础上充分结合其应用性,这样既能有效提高教学效果,又能培养学生的代数思维习惯,提高他们的离散建模能力。

---------------------
作者:hjlweilong
来源:CNBLOGS
原文:https://www.cnblogs.com/hjlweilong/p/9493751.html
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

原文地址:https://www.cnblogs.com/shawnchou/p/11541336.html

时间: 2024-11-07 17:57:55

[转]浅谈离散数学中数理逻辑与集合论的数学本质的相关文章

浅谈数据库系统中的cache(转)

http://www.cnblogs.com/benshan/archive/2013/05/26/3099719.html 浅谈数据库系统中的cache(转) Cache和Buffer是两个不同的概念,简单的说,Cache是加速"读",而buffer是缓冲"写",前者解决读的问题,保存从磁盘上读出 的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据.在很多情况下,这两个名词并没有严格区分,常常把读写混合类型称为buffer cache,本文后续的论述中,统一

【转】浅谈Java中的equals和==

浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初

浅谈oracle中rowid和rownum

[ 概要 ] 刚刚接触oracle的同学可能常常会被rowid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有很大的帮助, 下面偶就抛砖引玉, 简单地谈谈他们之间的区别吧. [ 比较 ] rowid和rownum都是oracle中的伪列, 但他们还是存在本质区别: rowid: 是物理地址, 用于定位数据表中数据的位置, 它是唯一的且不会改变. rownum: 是根据查询的结果集给每行分配的一个逻辑编号, 查询结果不同, rownum自然不同. 对于同一条记录, 查询条件不同,

转 浅谈C++中指针和引用的区别

浅谈C++中指针和引用的区别 浅谈C++中指针和引用的区别 指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a

C++ 浅谈C++中指针和引用

浅谈C++中指针和引用的区别 指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单

( 转)浅谈QT中窗口刷新事件

浅谈QT中窗口刷新事件 [日期:2011-06-25] 来源:Linux社区  作者:袁硕 [字体:大 中 小] 经过一个星期的项目初步开发,写此文就开发时遇到的一些常见问题,给出些资料和自己的观点,希望能给其他的初学者或者参赛的选手一点帮助,当然,也算是一种抛砖引玉,大家有什么好的技巧经验什么的,也能多多分享,借助这次比赛,我们共同进步~ 如果大家都是跟我一样,刚刚开始接触QT,开始开发QT的程序,肯定也会有很多不习惯的地方,今天我重点想谈的就是这么一个不习惯的地方——QT中窗口刷新事件. 对

浅谈Linux中的信号机制(二)

首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Linux内核源码评头论足.以后的路还很长,我还是一步一个脚印的慢慢走着吧,Linux内核这座山,我才刚刚抵达山脚下. 好了,言归正传,我接着昨天写下去.如有错误还请各位看官指正,先此谢过. 上篇末尾,我们看到了这样的现象:send进程总共发送了500次SIGINT信号给rcv进程,但是实际过程中rcv只接受/处理了1

浅谈Java中的对象和引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通

浅谈Java中的equals和==

浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 4 System.out.println(str1==str2); 5 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初