西南大学研究生课程考试答卷纸考试科目数据与知识工程培养单位计算机与信息科学学院专业或专业领域计算机软件与理论研究方向生物信息级别2015学年2015-2016学期第二学期姓名傅广垣学号112015*********类别②(①全日制博士②全日制硕士③教育硕士④高师硕士⑤工程硕士⑥农推硕士⑦兽医硕士⑧进修)2016年6月25日研究生院制备注:成绩评定以百分制或等级制评分,每份试卷均应标明课程类别(①必修课②选修课③同等学力补修课)与考核方式(①闭卷笔试②口试③开卷笔试④课程论文)。
课程论文应给出评语。
浅析计算机与逻辑学及交叉应用摘要:数理逻辑可以说是计算机的大脑与骨干,在计算机及其应用中发挥着至关重要的作用,从硬件设计到计算机语言架构,甚至软件设计工程都与数理逻辑密不可分,本文介绍了数理逻辑以及逻辑学在计算机各类关系,并简单探讨了数理逻辑在人工智能中一些应用。
关键字:计算机科学,数理逻辑,人工智能目前计算机科学的发展日新月异,在成就背后,逻辑学是推动计算机科学的主要动力。
软件大师迪杰斯特拉曾说过这样一段话:“我现在年纪大了, 搞了这么多年软件, 错误不知犯了多少, 现在觉悟了。
我想假如我早在数理逻辑上好好下点功夫的话, 我就不会犯这么多错误。
不少东西逻辑学家早就说了, 可我不知道。
要是我能年轻20岁的话, 就要回去学逻辑。
”可见计算机科学与逻辑学相互关系多么密切。
数学与计算机是紧密相连的,如果没有数学功底,就很难在计算机这个行业里有所作为的。
单纯依靠计算机做一些简单的应用开发,如图片处理、小系统的开发,这还不是很大的问题。
但是,要完成更深层的开发,如系统集成、动画制作如3D 游戏等,没有数学理论作为基础是很难完成这些工作的。
以上说的还只是软件层面的,在硬件层面上,数理逻辑更加是其中的支柱。
电子数字计算机系统的逻辑设计,基本单元就是各类0-1高低电位的门电路,也就是基于数理逻辑中的布尔代数进行描述。
而重要的逻辑部件和各种运算电路—触发器、寄存器、计算器、半加器、全加器等的设计分析也离不开布尔代数;至于复杂的组合逻辑电路、时序逻辑电路的分析、综合及简化, 更需要运用布尔代数。
接下来本文将通过几个不同方面,详细介绍计算机与逻辑学的渊源。
逻辑与程序设计专家系统和知识工程的出现使人们认识到仅仅研究那些在真理前提得出的结果的古典逻辑推理方法是不够的。
人类生活在一个充满不确定信息的环境里,为了建立真正的智能系统,研究那些更接近人类思维方式的非单调推理、模糊推理等就变得越来越必要了。
因此,非经典逻辑应运而生。
非经典逻辑指的是直觉逻辑、模糊逻辑、多值逻辑等,这些也可以用计算机程序设计语言来实现。
计算机程序设计语言的理论基础是形式语言、自动机与形式语义学,数理逻辑的推理理论为二者的发展提供了主要的思想和方法。
推理是人工智能研究的主要工作,逻辑的思想就是通过一些已知的前提推理出未知的结论。
符号逻辑与程序正确性验证、程序分析、程序综合以及程序设计环境及工具的研究,有着十分密切的关系。
弗洛伊德提出对框图程序使用归纳断言法证明程序正确性后,曼纳即用一阶谓词演算将这方法形式化[1],同时霍尔提出了他的程序逻辑,用以刻画程序的语义及程序正确性的形式证明。
曼纳还提出了对任意程序尸和相应的入口、出口条件机械地生成验证条件(诸路径条件的合取)的方法。
霍尔的程序逻辑把基本语句和说明语句的语义定为公理, 结构性语句和说明语句定为推理规则.其系统内公式形如:A {P } B (A 、B 为一阶公式, P 为程序)。
意指:A 在P 执行前成立, 且P 终止, 那么B 在P 执行后成立.从霍尔的方法还发展出了程序正确性证明的最弱前置谓词方法。
设WP (P ,B)为满足下列条件的最弱语句:为了使P 终止且在P 完成后公式B 为真,那么证明A {P } B 由步骤( 1 )找出WP ( P , B ),和( 2 )证明A-> WP ( P , B ) 来实现。
值得一提的是, 由最弱前置谓词方法发展出来的程序形式推导技术,是程序自动生成领域的一个重要的方面。
同时,程序设计工具和环境的研究也离不开规范的形式描述以及语义的形式表示。
显然,这些工作都与逻辑学相关。
举一个著名的算法例子:著名的n 皇后问题是:是否可以将n(n 为正整数)个皇后放在的棋盘上,使得每行每列都有且仅有一个皇后,并且每条对角线上如果有皇后且仅有一个。
解答:可以用数理逻辑中的命题逻辑来描述皇后问题,为此引进2n 个命题变项(1,1)ij p i n j n ≤≤≤≤,其中变项ij p 为真表示在第i 行、第j 列有一个皇后,需要满足的命题公式包括如下子句:每行至少有一个皇后:对每个(1)i i n ≤≤,有12...1i i in p p p ∨∨∨= 成立;每行最多只能有一个皇后:对任何i,j 和k (1,1)i n j k n ≤≤≤≤≤,有1ij ik p p ⌝∨⌝=成立;每列至少有一个皇后:对每个(1)j j n ≤≤,有12...1j j nj p p p ∨∨∨=成立;每列最多只能有一个皇后:对任何i,j 和k (1,1)i k n j n ≤≤≤≤≤有1ij kj p p ⌝∨⌝=成立;每条对角线上最多只能有一个皇后:对任何i,j 和k (1,,,)i j k n k i ≤≤≠,(1)如果,那么,11ij k j k p p +-⌝∨⌝=成立;(2)如果1j i k n ≤+-≤,那么,1ij k j i k p p +-⌝∨⌝= =1成立。
按照上述处理方法,3皇后问题模型中的正文字:12,2133{,}p p p 。
模型可以解释为:第1行第2列、第2行第1列、第3行第3列可以放置皇后。
4皇后问题模型中的正文字:12,243143{,,}p p p p 。
模型可以解释为:第1行第2列、第2行第4列、第3行第1列、第4行第3列可以放置皇后。
5皇后问题模型中的正文字:12,24314355{,,,}p p p p p 。
模型可以解释为:第1行第2列、第2行第4列、第3行第1列、第4行第3列、第5行第5列可以放置皇后。
同理,可以推导出n 皇后问题的排列规则。
通过上述实例的验证,会发现数理逻辑在计算机科学中的应用非常广泛,可以把计算机科学中表面上看似不相干的内容通过找出其内在的联系作为前提,利用数理逻辑中的推理理论得到结论。
计算机语言中的数理逻辑2000 年前古希腊的亚里士多德建立起了逻辑科学,首先全面系统地研究了人类的逻辑思维。
17 世纪,德国的逻辑学家莱布尼茨进一步丰富和完善了亚里士多德的逻辑思想,提出建立一套通用语言,他把逻辑加以数学化,再设计一套演算法则作为工具来处理通用语言,试图消除实际生活当中存在的语言的局限性和不规则性,使逻辑演算能够按一定的规则进行。
莱布尼茨认为,这样推理错误就变成了计算错误。
莱布尼茨把推理变成计算的思想改变了逻辑发展的方向,为后来计算机语言的产生和发展奠定了坚实的基础。
虽然莱布尼茨没能实现自己的理想,但之后许多逻辑学家都明确了努力的方向和目标,弗雷格和罗素基本完成了命题演算和谓词演算,他们用形式语言表达的公理系统,也是数理逻辑最基础的部分。
还有关于逻辑的语义和语法关系的模型理论的研究,可计算性和可判断性的递归理论的研究,形式系统无矛盾的证明与公理集合论的研究等也都开始发展。
这些逻辑研究的理论是计算机语言体系中最重要的基本理论。
计算机刚出现的时候,程序员都是用机器代码来直接进行操作,这样有很多不方便的地方,其复杂性暂且不论,而且编程会非常慢。
后来为了更好的操作和符合人们阅读的习惯,一些程序员把机器代码写成英文字符串的形式,这样就出现了最早的汇编语言Basic。
Basic 语言是最基本的计算机语言,也是最受欢迎的计算机语言。
计算机语言的发展是一个不断模块化,抽象化和封装的过程。
计算机语言中最初是把0 和1 表示的二进制值,抽象为整型、长整型等各种各样的数据类型;接着,由于更复杂数据表达的需要,就出现了自定义的数据类型。
除了计算机的数据需要抽象外,计算机的指令也经过了从表达式和语句到函数的抽象的过程。
如20 世纪70 年代初出现的结构化语言,Pascal 语言和C 语言。
结构化的程序设计是计算机不断抽象化的表现,它主张数据和和代码分开,这种思想和计算机硬件的逻辑处理机制也是相符合的。
结构化语言出现后,人们又根据20 世纪60 年代面向对象的思想在C 语言的基础上开发了添加了类,继承等对象概念的面向对象的语言,如C++等。
计算机语言系统非常关心的问题就是系统的可靠和完全性,结构的相似性说明了计算机语言与逻辑语言是相通的,所以逻辑学研究取得的方法和成果可以用到计算机中,为计算机语言的发展铺平道路。
我们可以把推理过程看成是一个符号变换过程,以pΛ(p→q)→q 为例,我们可以把这个肯定前件的假言推理,看成一个计算机处理信息的过程,用计算机语言表示,它就是一个计算机中的算法,而且因为这个逻辑表达式是有效且可靠的,所以这个算法同样也是可靠的,如下面这个比较两值大小的C 语言的程序:Main(){Float c, d;Scanf(“%f%f, &c, &d”);if( c > d)printf( “% f \ n “, c);elseprintf ( “% f \ n”, d );}这个程序中说,如果判定了两个输入数值c > d 成立,则输出c 的值,否则输出 d 的值。
逻辑学与人工智能人工智能是计算机科学的一个分支,研究如何使用计算机来完成能表现出人类智能的任务。
人工智能的知识表示方法、归纳推理方法等从不同的方面论述了计算机的人工智能问题。
人工智能的研究中,知识表示、知识推理和知识运用问题不仅是最基本的问题,也是最为重要的问题。
而采用谓词逻辑语言的演绎过程的形式化有助于人们更清楚地理解人工智能知识表示及推理中的某些子命题。
在许多方面,逻辑学家和人工智能专家相当类似,他们都关心日常生活中使用的推理的某些方面的形式化问题。
确实,逻辑学家传统上一直关心具有某种哲学意义的推理,于是,关于必然性、可能性、时间、认识和相信等概念的逻辑发展起来了。
而这些方面也正是对知识表达感兴趣的人工智能专家所关心的核心问题。
“人工智能研究理解和模拟人类智能、智能行为及其规律,其主要任务是建立智能信息处理理论,进而设计可以展现某些近似人类智能行为的计算系统。
它始终处于计算机科学技术发展的最前沿。
”[3]人工智能的问题求解是以知识为基础的,获取知识后,重要的是如何将实际需要解决的问题的知识以计算机内部代码的形式加以合理的描述、存储,以便有效地利用这些知识,这便是知识表示。
知识表示的质量直接影响着运用它的系统的质量、能力和问题求解的效率,正因为如此,知识表示的研究成为人工智能研究者的热门课题。