精华内容
下载资源
问答
  • 数据结构,是不是一定要先学离散数学

    万次阅读 多人点赞 2016-01-02 08:31:01
     学数据结构之前是不是一定要学离散数学【答复】  你问了一个非常好的问题,不少初学计算机的同学该会产生这个疑问(大多数有疑问不提而已,这不是好习惯),更深层地,这里可能包含着我们的学习路线的问题,尤其...

    【问题的来源】
      有《数据结构基础》网络课程的学员给我提问:

      哈夫曼树是不是都是双分支,没有单分支的?有点不太懂这个哈夫曼树的构造过程,为什么要这样构造?只知道这样会让权值大的叶节点靠近根节点,小的叶节点远离根节点,为什么权值可以相加再比较呢?

      我的答复是:

      所有叶节点,都是原给定的节点;所有分支节点,度均为2,所以没有单分支。
      很高兴看到你能提出这么多的为什么,然而在数据结构这门课程中,更注重是什么,怎么做的问题,也只能讲到这个层面了,为什么的事情,建议找“离散数学”教材,或其他材料。数据结构中涉及的所有算法,均可以给出严格的理论证明。而计算机作为一门“构造性”的学科,基本味道就是,提出要解决的问题,构造解决的模型,然后证明这个模型解决的就是这个问题,有些时候,还能证明,唯有这样才能解决。

      学员还有问题:

      为什么连通奇数桥的地方为0个或2个的时候有欧拉回路,否则就没有?

      我的答复,是让参照上面的观点。的确,这样的问题,是有严格的证明的,老师只需要给出学员学习的路线即可。我没有必要在只允许500字的答疑区中玩文字。这样做的效果也并不好。
      学员很认真,回复中说:

      我问的是为什么,还是没回复,就是这个结论怎么来的,看来还是要看离散数学才知道?

      由于系统只提示第一次的提问,对于学员的答复,没有小红点提醒。所以,发现学员的答复是几天后的事了。之所以能发现,是他又重新提交了一个问题:

      学数据结构之前是不是一定要学离散数学

      我发现,这是一个非常好的问题。因此有了下面的答复。

    【答复全文】
      你问了一个非常好的问题,不少初学计算机的同学该会产生这个疑问(大多数有疑问不提而已,这不是好习惯),更深层地,这里可能包含着我们的学习路线的问题,尤其是需要自主安排学习的时候。
      首先,作为大学的培养方案,是这样安排的。我想解读一下,其中所包含的培养目标,以及背后的学习原理假设。培养目标是,有扎实计算机科学基础的高级技术人才。离散数学从形式化的角度,表达及引导学习者通过定义、定理这一整套严密的体系,初步掌握计算机科学中最基础的知识,以及形成专业的初步计算思维能力。作为数据结构这样一门课程,显然要学好,是需要这些知识和思维的支持的。因此,大学的专业培养方案讲究“系统性”,有了这样的规定。体现的学习路线体现的是大学学习的阶段性特点,先完全掌握离散,再去将数据结构作为其应用学习,前者重纯计算层面的原理,后者引入计算机系统的特征,侧重设计和实现。这样考虑,显然是合理的。
      这样做必然是合理的,然而,合理的却并不仅是这一个。大概所谓“科班”出身的人走的都是这条路子。但在计算机技术领域“半路出家”者中,也不乏高手和成功人士,有些甚至就是没有学过离散数学。一些在起步学习阶段学习不顺利的专业人,在基础阶段没有学好,但后来做的技术工作也能做得不错。这一类型的业内人员,直接接受了数据结构层面上体现的思维方式,掌握了相关的知识和技术,而离散数学内涵,却是在实践中逐渐悟到了,有人清楚他知道了,有人不清楚,或者真的具备了,说不出来而已。其实,说出来又要怎样,有时间干点别的更好。还有些技术岗位,是否具备这样的感悟都无所谓。
      沿上面的观点,每一位学习者要根据自己的情况设计学习。如果你就是计算机专业的学生,培养方案里这样规定了,就先学离散,再学数据结构。学好离散数学,对你“专业人士”的成色,很有说服力。然而,若你接受的并不是“系统化”的培养,且将来的目标是工程领域,关不是更加核心和底层的计算科学和技术领域,直接完成数据结构的学习即可,离散甚至都不必列入计划。不是说离散不重要,而是受限于时间,受擎于陷于离散的逻辑旋涡,可以会让你本不算强大的学习支持体系半路跨塌,先捡更为直接的数据结构学起为妙。在学习的过程中,也要注意一点,就是遇到那种理论性非常强的部分,也就是一些教材中以你具备了离散数学才能学得下去的内容,可以略作了解,在不太影响全局的前提下,暂且放过。如果有必要,且有条件,学完数据结构回头再学离散数学,那又是一种风景。
      其实还有一个视角,我们的学习为什么一定要先理论后实践?这种体系设计有其缘源,离散作为理论,支撑着数据结构这一与直接动手距离更近的体系。而数据结构是关于程序设计的理论,为什么现在以先学程序设计再学数据结构呢?学(学知识)和习(实践)本来是学习的两个方面,先学后习,先习后学(百度下“习而学”这个关键词),都是可以。其实最理想的,是学和习的紧密交融交叉,以知识点和技能为单位的交叉,而不是以课程为单位的交叉。这就是学习中的理论联系实际,实践指导理论。
      我们再换一种角度,讲什么离散数学、数据结构,却也纯是“合理的方案”中的之一,而非“合理的方案”一定只有这一个。叫做这个名字,里面容纳了这些内容,只不过是为了“教学的方便,开课的方便”,做了一个组合、包装而已。我们的目标不是学习了什么课程,这只是一个载体。我们的目标是学到了一些方法、一些技术、一些思维的方式,途径、路线、组合的可能,有千千万。如果是专业学生,就按此安排去做,而作为自学者,这只作为参考即可。
      最典型的案例,各行都有祖师爷,这是神一级的存在。祖师爷修过什么课程?什么先学什么后学?可见,以上讨论的,全是后人生出的问题,满是追随者的思维,少了些创新者的自在。
      我的观点可能将你搞乱了。放在五年之前,我可能还会采取保守的回答,直接解答你的问题即可,而这篇显罗嗦的答复中,我试图告诉你,按你的需要,按你的感觉,争取尽可能直接的方式解决问题。既然你现在学数据结构顺手,就这样学下去。若中间发现有从离散数学中寻求依据的必要,找本书翻翻即可,暂不必进到那个严密的体系中,更不必从离散数学书的第1页开始读起。这是一个知识爆炸的时代,“小步快跑,跑中调整”的策略,是应对之道。
      我以前写过一篇《破除“系统学习”的情结》,你提的问题是关于离散数学与数据结构两门课程,体现的却是学习的路线问题。在新时代,有新时代的选择标准,所以,这篇文章你可以参考。

    展开全文
  • 【应用C】C语言实现离散数学合式公式的递归判断-附件资源
  • 数据结构 离散数学 概率统计 微机原理 总复习 笔记 公式 重点 考点 考试必备
  • 法国数学家卢卡斯(Edouard Lucas)在1883年提出了一个数学游戏: 传说在世界中心贝拿勒斯(印度北部)的圣庙里,一块黄铜板上有三根宝石柱。印度教的主神大梵天在创造世界的时候,在其中一根柱上从下到上地穿好了...

    汉诺塔也是经典的算法问题

    文章目录

    1 汉诺塔问题

    法国数学家卢卡斯(Edouard Lucas)在1883年提出了一个数学游戏:

    • 传说在世界中心贝拿勒斯(印度北部)的圣庙里,一块黄铜板上有三根宝石柱。印度教的主神大梵天在创造世界的时候,在其中一根柱上从下到上地穿好了由大到小的64片金盘。大梵天命令僧侣们将圆盘从下面开始按大小顺序重新摆放在另一根柱子上,并且规定, 在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。预言说当这些盘子移动完毕时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

    在这里插入图片描述

    考虑该问题的一般形式:有 n 个圆盘,最初自下而上、自大而小地穿在A柱上, 每次按规则(上述)移动一个圆盘,最终将所有圆盘移动到C柱上。

    假如现在有如下图的盘子:

    在这里插入图片描述

    则一共需要移动7次。自己手动画画就知道了。

    那么现在盘子有n个,如下图:

    在这里插入图片描述
    该如何移动?实际上这是递归的问题(递归在后面的学习中会学到)

    • 先将A柱上所有其他盘子移到B柱上(这是一个类似于自己的子问题),只留下最下面的盘子,也就是n盘子
    • 接着将最大的盘子从A柱移到C柱,之后不必再管它。
    • 最后再将刚才移到B柱上的盘子移到C柱上(这又是一个子问题) 。

    用 T(n) 表示移动 n 个圆盘所需要的步数

    根据算法

    1. 先把前面 n-1 个盘子转移到B上;
    2. 然后把第 n 个盘子转到C上(n这个盘子移动了一次);
    3. 最后再次将B上的 n-1 个盘子转移到C上(这n-1个盘子移动了两次)
    • 得到递推关系 T(n)=2T(n-1)+1

    这个公式,足以使用递归的形式写出代码。下面还可以直接求出具体的值:

    使用倒推法求解T(n)=2T(n-1)+1, T(1)=1:

    在这里插入图片描述

    回到最初的汉诺塔问题, 要将64片金盘重新摆放在另一根柱子上, 最少需要 264-1 步, 即使僧侣每秒钟移动一步而且每次移动都是正确的方法, 那么也需要 5.8*1011 年, 即5千多亿年!

    展开全文
  • 软件技术基础:离散数学数据结构、C.编程实训 .来可伟.文字版
  • 数据结构 课程设计 离散数学 里面包含了实验报告及可执行程序
  • 离散数学中怎么判断任意一个公式是否为合式公式
  • DSDM 数据结构离散数学
  • 简单的算法实现,可以实现任意的最优二叉树的生成(生成的二叉树不唯一)
  • 离散数学 真值表判断

    2012-11-20 20:47:18
    公式是由命题变元,逻辑连接词,括号组成的合法符号串,而命题变元是一个抽象概念
  • 离散数学1.ppt

    2018-10-30 06:35:53
    离散数学在各学科领域,特别在计算机科学与技术领域有着广泛的应用,同时离散数学也是计算机专业的许多专业课程,如程序设计语言、数据结构、操作系统、编译技术、人工智能、数据库、算法设计与分析、理论计算机科学...
  • 四川大学《计算机导论》《离散数学》《数据结构考试试卷》(2017前,包括2017),学弟学妹们要考好基础知识,还是多看看题库和书本,积极消化,川大历年考试都差不多的题型,上传的时候还没来得及写答案,只有试卷,...
  • #资源达人分享计划#
  • 计算机组成原理、离散数学2(代数系统)、数据结构(山东大学软件学院)期末往年试题
  •  我们再换一种角度,讲什么离散数学数据结构,却也纯是“合理的方案”中的之一,而非“合理的方案”一定只有这一个。叫做这个名字,里面容纳了这些内容,只不过是为了“教学的方便,开课的方便”,做了一个组合、...

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                           

    【问题的来源】
      有《数据结构基础》网络课程的学员给我提问:

     

      哈夫曼树是不是都是双分支,没有单分支的?有点不太懂这个哈夫曼树的构造过程,为什么要这样构造?只知道这样会让权值大的叶节点靠近根节点,小的叶节点远离根节点,为什么权值可以相加再比较呢?

      我的答复是:

     

      所有叶节点,都是原给定的节点;所有分支节点,度均为2,所以没有单分支。
        很高兴看到你能提出这么多的为什么,然而在数据结构这门课程中,更注重是什么,怎么做的问题,也只能讲到这个层面了,为什么的事情,建议找“离散数学”教材,或其他材料。数据结构中涉及的所有算法,均可以给出严格的理论证明。而计算机作为一门“构造性”的学科,基本味道就是,提出要解决的问题,构造解决的模型,然后证明这个模型解决的就是这个问题,有些时候,还能证明,唯有这样才能解决。

      学员还有问题:

     

      为什么连通奇数桥的地方为0个或2个的时候有欧拉回路,否则就没有?

      我的答复,是让参照上面的观点。的确,这样的问题,是有严格的证明的,老师只需要给出学员学习的路线即可。我没有必要在只允许500字的答疑区中玩文字。这样做的效果也并不好。
      学员很认真,回复中说:

     

      我问的是为什么,还是没回复,就是这个结论怎么来的,看来还是要看离散数学才知道?

      由于系统只提示第一次的提问,对于学员的答复,没有小红点提醒。所以,发现学员的答复是几天后的事了。之所以能发现,是他又重新提交了一个问题:

     

      学数据结构之前是不是一定要学离散数学

      我发现,这是一个非常好的问题。因此有了下面的答复。

    【答复全文】
      你问了一个非常好的问题,不少初学计算机的同学该会产生这个疑问(大多数有疑问不提而已,这不是好习惯),更深层地,这里可能包含着我们的学习路线的问题,尤其是需要自主安排学习的时候。
      首先,作为大学的培养方案,是这样安排的。我想解读一下,其中所包含的培养目标,以及背后的学习原理假设。培养目标是,有扎实计算机科学基础的高级技术人才。离散数学从形式化的角度,表达及引导学习者通过定义、定理这一整套严密的体系,初步掌握计算机科学中最基础的知识,以及形成专业的初步计算思维能力。作为数据结构这样一门课程,显然要学好,是需要这些知识和思维的支持的。因此,大学的专业培养方案讲究“系统性”,有了这样的规定。体现的学习路线体现的是大学学习的阶段性特点,先完全掌握离散,再去将数据结构作为其应用学习,前者重纯计算层面的原理,后者引入计算机系统的特征,侧重设计和实现。这样考虑,显然是合理的。
      这样做必然是合理的,然而,合理的却并不仅是这一个。大概所谓“科班”出身的人走的都是这条路子。但在计算机技术领域“半路出家”者中,也不乏高手和成功人士,有些甚至就是没有学过离散数学。一些在起步学习阶段学习不顺利的专业人,在基础阶段没有学好,但后来做的技术工作也能做得不错。这一类型的业内人员,直接接受了数据结构层面上体现的思维方式,掌握了相关的知识和技术,而离散数学内涵,却是在实践中逐渐悟到了,有人清楚他知道了,有人不清楚,或者真的具备了,说不出来而已。其实,说出来又要怎样,有时间干点别的更好。还有些技术岗位,是否具备这样的感悟都无所谓。
      沿上面的观点,每一位学习者要根据自己的情况设计学习。如果你就是计算机专业的学生,培养方案里这样规定了,就先学离散,再学数据结构。学好离散数学,对你“专业人士”的成色,很有说服力。然而,若你接受的并不是“系统化”的培养,且将来的目标是工程领域,关不是更加核心和底层的计算科学和技术领域,直接完成数据结构的学习即可,离散甚至都不必列入计划。不是说离散不重要,而是受限于时间,受擎于陷于离散的逻辑旋涡,可以会让你本不算强大的学习支持体系半路跨塌,先捡更为直接的数据结构学起为妙。在学习的过程中,也要注意一点,就是遇到那种理论性非常强的部分,也就是一些教材中以你具备了离散数学才能学得下去的内容,可以略作了解,在不太影响全局的前提下,暂且放过。如果有必要,且有条件,学完数据结构回头再学离散数学,那又是一种风景。
      其实还有一个视角,我们的学习为什么一定要先理论后实践?这种体系设计有其缘源,离散作为理论,支撑着数据结构这一与直接动手距离更近的体系。而数据结构是关于程序设计的理论,为什么现在以先学程序设计再学数据结构呢?学(学知识)和习(实践)本来是学习的两个方面,先学后习,先习后学(百度下“习而学”这个关键词),都是可以。其实最理想的,是学和习的紧密交融交叉,以知识点和技能为单位的交叉,而不是以课程为单位的交叉。这就是学习中的理论联系实际,实践指导理论。
      我们再换一种角度,讲什么离散数学、数据结构,却也纯是“合理的方案”中的之一,而非“合理的方案”一定只有这一个。叫做这个名字,里面容纳了这些内容,只不过是为了“教学的方便,开课的方便”,做了一个组合、包装而已。我们的目标不是学习了什么课程,这只是一个载体。我们的目标是学到了一些方法、一些技术、一些思维的方式,途径、路线、组合的可能,有千千万。如果是专业学生,就按此安排去做,而作为自学者,这只作为参考即可。
      最典型的案例,各行都有祖师爷,这是神一级的存在。祖师爷修过什么课程?什么先学什么后学?可见,以上讨论的,全是后人生出的问题,满是追随者的思维,少了些创新者的自在。
      我的观点可能将你搞乱了。放在五年之前,我可能还会采取保守的回答,直接解答你的问题即可,而这篇显罗嗦的答复中,我试图告诉你,按你的需要,按你的感觉,争取尽可能直接的方式解决问题。既然你现在学数据结构顺手,就这样学下去。若中间发现有从离散数学中寻求依据的必要,找本书翻翻即可,暂不必进到那个严密的体系中,更不必从离散数学书的第1页开始读起。这是一个知识爆炸的时代,“小步快跑,跑中调整”的策略,是应对之道。
      我以前写过一篇《破除“系统学习”的情结》,你提的问题是关于离散数学与数据结构两门课程,体现的却是学习的路线问题。在新时代,有新时代的选择标准,所以,这篇文章你可以参考。

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • #资源达人分享计划#
  • 离散数学及其应用第七版 中文版pdf 加全部习题答案 原作者:(美)Kenneth H.Rosen 离散数学是计算机专业必学的基础课程,无论是数据结构、算法还是编译原理等都需要用到里面的知识。但大部分人往往连第一章——逻辑...
  • 本资源强调基本数学概念和软件技术教育。工程技术学科的知识组成一般都包括 3 个方面的内容:基础理论、技术基础...软件技术学科的3 个知识层次分别为离散数学数据结构与算法设计以及用某种编程语言进行编程作业。
  • 程序员最爱开发电子书籍之一,欢迎前来下载,11111111
  • 大二下学期复习资料,离散数学 马原 数据结构 数电的复习资料和试卷。
  • 大连理工大学离散数学习题1. (1)不是命题;(2)不是命题;(3)不是命题;(4)是命题;(5)是命题; 2. (1)并非大连的每条街都临海;(2)2不是一个偶数或者8不是一个奇数;(3)2不是偶数并且-3不是负数; 3...
  • 离散数学结构中文版

    2015-07-18 17:17:47
    大学离散数据结构的原书的中文版,有助于你更深入的阅读学习
  • 错排问题比较难,但是也是经典算法问题 文章目录 1 错排问题 2 总结 ...家中阳台有10盆不同的花,为保持新鲜感,希望每天重新摆放,使得每盆花都不在第一天放的位置。...的定义:若一个 n 元素的全排列...学好数学

    错排问题比较难,但是也是经典算法问题

    文章目录

    1 错排问题

    家中阳台有10盆不同的花,为保持新鲜感,希望每天重新摆放,使得每盆花都不在第一天放的位置。那么最多可以保持多少天每天摆法都不同?

    这是一个典型的错排问题。

    错排的定义:若一个 n 元素的全排列中所有的元素都不在本来的位置上,那么称这个全排列就为原排列的一个错排(derangement) 。

    也称作“伯努利-欧拉错装信封问题”(The Bernoulli-Euler problem of theMisaddressed letters) ——

    • 小明给 n 个朋友写信,邀请他们来家中聚会,结果粗心的他却把请柬全都装错了信封。请问有多少种全部装错信封的情况

    n 个元素的错排的个数记为 D(n),下面通过两种计算方法来得到D(n)的值。

    • 方法1:建立递推关系:

    第1步,选择第 n 个元素的位置,共有n-1 种方法(假定放在编号为 k 的位置);
    在这里插入图片描述

    第2步,选择第 k 个元素的位置,有两种可能:

    1)第 k 个元素放在编号为 n 的位置,此时剩下的n-2 个元素进行错排即可,方案数是 D(n-2)
    在这里插入图片描述
    2)或者第 k 个元素不在编号为 n 的位置,此时把编号为 n 的位置视作编号为 k 的位置, 将 n-1 个元素进行错排即可, 方案数是 D(n-1):
    在这里插入图片描述

    由此得到递推关系D(n)=(n-1)(D(n-2)+D(n-1)),这个足以写出递归代码。

    很容易得到初值 D(1)=0 和 D(2)=1。

    在这里插入图片描述

    如果不使用递归,可以使用这个计算结果进行循环。

    • 方法2 :应用容斥原理

    在这里插入图片描述

    则D(n) = n! - | A   1   ∪ A   2   A~1~\cup A~2~ A 1 A 2  ∪ A   3   \cup A~3~ A 3  ∪ . . . ∪ A   n   \cup ...\cup A~n~ ...A n |

    由容斥原理:

    在这里插入图片描述

    可得:

    在这里插入图片描述

    2 总结

    • 学好数学
    展开全文
  • 离散数学群论 半群 (Semigroup) An algebraic structure (G, *) is said to be a semigroup. If the binary operation * is associated in G i.e. if (a*b) *c = a *(b*c) a,b,c e G. For example, the set of N of ...
  • 文章目录 1 加法法则 2 乘法法则 3 例子 3.1 例一 3.2 例二 3.3 例三 4 总结 ...设事件 A 有 m 种产生方式, 事件 B 有n 种产生方式,则当 A 与 B 产生的方式不重叠时,“事件 A 或 B 之一” 有 ...坚持学数学
  • 离散数学期末复习题

    2019-03-20 08:03:00
    离散数学在各学科领域,特别在计算机科学与技术领域有着广泛的应用,同时离散数学也是计算机专业的许多专业课程,如程序设计语言、数据结构、操作系统、编译技术、人工智能、数据库、算法设计与分析、理论计算机科学...
  • 离散数学范式 正常形式 (Normal Form) Suppose, A (P1, P2, ... , Pn) is a statements formula where P1, P2, ..., P6 are the atomic variables if we consider all possible assignments of the truth value to ...
  • 离散数学数理逻辑

    2014-10-14 16:50:51
    离散数据结构英文版 的补充知识~ 里面有数理逻辑以及其他的东西哟
  • 简单聊聊离散数学是什么

    千次阅读 多人点赞 2020-07-26 16:40:30
    从内容上来看,离散数学没有一个确定的中心话题,内容很杂,粗略统计其涉及到主要概念如:集合、函数、关系、命题逻辑、谓词逻辑,到算法、计数、数据结构、递归、图论、概率、数论、形式语言与自动机,布尔代数、...
  • 离散数学及其应用第六版 本科教学版 练习题答案

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,297
精华内容 18,118
关键字:

数据结构离散数学

数据结构 订阅