离散数学在计算的机科学中的应用.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散数学在计算的机科学中的应用

离散数学在计算机科学中的应用院系:计算机科学与技术学院姓名:XXX学号:XXXXXX指导老师:XXXXXXX年XX月XX日摘要本文主要内容目录命题逻辑与程序优化谓词逻辑与程序验证递归函数论参考文献本来想选取其他的一些课题作为报告的主要内容,但是发现缺少一定的数学基础,很多概念都难以理解,所以就查阅了一点关于离散数学的内容,这也是我这份报告的主要内容。根据书本给出的定义,离散数学的研究对象是各种各样的离散量及它们之间的关系,而计算机科学中出现的基本量也大多是离散型的,所以离散数学是计算机科学的理论基础之一,在程序设计语言、数据结构、算法分析、操作系统、编译技术乃至人工智能等方面均有应用。离散数学主要有数理逻辑、集合论、代数结构、图论、组合数学这几个部分,以下仅列出了三个离散数学(更准确地说仅仅是数理逻辑)在计算机科学中的应用。命题逻辑与程序优化数理逻辑,顾名思义,是用数学的方法来研究逻辑学。这个方法就是引进一套符号体系。当我阅读这一部分内容的时候,感觉到一种很“妙”的感觉,比如,如果明天是星期六,我就睡懒觉,这件与数值毫无关系的事情,就可以用(:明天是星期六,:我睡懒觉)这些符号很简洁地表示出来。还有命题变元、谓词变元等概念,俨然就是我们传统的数学的变量x。这些设定使得我们能够用一种类似于传统意义上的数学但又与之不同的数学方法来研究逻辑学。(不得不对莱布尼茨、布尔、弗雷格这些先驱表示一下钦佩。)命题逻辑是数理逻辑的一个重要组成部分,主要研究命题的演算推证。当我们把一个实际问题符号化,借助一些基本的命题定律和推理定律,就可以达到证明或化简的目的,而不用纠结于命题的具体内容。例如,这是某本离散数学教材中的例子:化简下列程序语言:IF A THEN IF B THEN X ELSE Y ELSE IF B THEN X ELSE Y,用C语言表述就是:if(A){if(B)X;else Y;}else{if(B)X;else Y;}执行X的条件为,执行Y的条件为,所以,这段程序可以简化为:IF B THEN X ELSE Y,用C语言表述就是:if(B)X;else Y;化简以后的代码与之前相比,不仅简洁易读,而且能够减少计算机判断的次数,加快程序的运行速度。命题逻辑与电路设计也有密切的关系,如对于组合逻辑电路,可以利用命题公式和逻辑元件共有的二值特性,进行逻辑演算,得到复杂度最小的电路。谓词逻辑与程序验证据说,谓词逻辑的提出是为了解决一些命题逻辑所不能揭示的问题,如:苏格拉底的三段论、命题之间的共同属性。这是因为命题逻辑不关心命题的具体内容,其研究的基本单位是原子命题,考虑的是逻辑连接词的逻辑特性,而谓词逻辑则不一样,它还要深入到命题内部,研究谓词(刻画个体域中个体性质或个体之间相互关系的模式)和量词(刻画个体常元或变元数量关系的词)的逻辑特性。因此,有人说,命题逻辑是谓词逻辑的子集。与命题逻辑类似,谓词逻辑也存在逻辑演算,也就是谓词演算。由于我了解甚浅,自然没有意识到这一点,但书本告诉我,谓词逻辑可以应用于程序验证、自动程序设计以至人工智能等等。下面以程序验证为例。现代计算机程序的规模越来越庞大,仅靠调试是不能保证程序无错的,因为调试只能选取有限个初值作有限次的试验。因此有人提出了归纳断言法。所谓断言,实际上就是一种刻画程序中的变元在不同的阶段应该满足的特性和关系。可以程序的开始和结束以及中间的一些位置设置断言,如果断言的要求均能被满足直到程序结束,那么就认为这个程序是正确的。以一个简单的程序为例,这也是老师上课时给出的例子:求,其中。voidmult(int m, int n) {int x,y;x = 0 ;y = 0 ;while (y n) {x = x + m ;y = y + 1 ;} } 如下设置断言:voidmult(int m, int n) {intx,y;x = 0 ;y = 0 ;while (y n){x = x + m ;y = y + 1 ;}}可以按下面证明此程序的正确性:(1)A1{x=0}A2是正确的,因为对x赋值不会影响n的值;(2)A2{y=0}A3是正确的,同样,因为对y赋值不会影响n和x的值;(3)A1{x=0,y=0}A3是正确的,这可由合成规则(程序证明中的一条规则,将一个程序分成若干段,只要每一段都是正确的,那么它们组合而成的程序也是正确的,似乎有点类似于传递性)得到;(4)A1{x=0,y=0}A4是正确的。很容易由数学知识推出,再由推论规则(不严谨地说,前断言可以用更强的断言代替,后断言可以用更弱的断言代替,这里被替换的是后断言)得到A1{x=0,y=0}A4是正确的。(其实我感觉A4的设置并不是很必要,A3也可以作为下一段的程序的初始断言,这应该是为了证明下面的while

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档