人工智能语言——PROLOG

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:runqiusheng
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Prolog是人工智能语言的一个典型代表。本文简要阐述了人工智能语言及其特点,并通过实例介绍了Prolog语言及其基本结构。
  关键词:人工智能语言;Prolog;递归
  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c
  
  Prolog的思想最早由R. Kowalski提出,1972年,第一个prolog语言在法国的马赛研制成功,最初设计思想是以FOL为背景,设计一个处理逻辑推理问题的会话式语言。Prolog 目前是AI应用中重要的开发工具,也是开发知识库、ES、自然语言接口、智能信息管理系统的重要工具。
  
  1 什么是人工智能语言
  
  人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写程序求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。典型的人工智能语言主要有LISP、Prolog、Smalltalk、C 等。
  一般来说,人工智能语言应具备如下特点:
  (1)具有符号处理能力;
  (2)适合于结构化程序设计,编程容易;
  (3)具有递归功能和回溯功能;
  (4)具有人机交互能力;
  (5)适合于推理。
  人们可能会问,用人工智能语言解决问题与传统的方法有什么区别呢?
  传统方法通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。解决问题的思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。
  对于人工智能技术要解决的问题,通常需要建立一个知识库,程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些条件和目标不大明确或不完备,的非结构化问题比传统方法好。它采用用试探法来解决问题。人工智能也尚未发展到完全能解决这类问题的全部问题。这类问题是人工智能研究要解决的问题。
  
  2 Prolog语言及其基本结构
  
  Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。现在的Prolog语言有许多版本,但它们的核心部分都是一样的。Prolog的基本语句仅有三种,即事实、规则和目标三种类型的语句,且都用谓词表示,因而程序逻辑性强,文法简捷,清晰易懂。另一方面,Prolog是陈述性语言,一旦给它提交必要的事实和规则之后,Prolog就使用内部的演绎推理机制自动求解程序给定的目标,而不需要在程序中列出详细的求解步骤。
  2.1 事实
  事实用来说明一个问题中已知的对象和它们之间的关系。在Prolog程序中,事实由谓词名及用括号括起来的一个或几个对象组成。谓词和对象可由用户自己定义。
  例如,Bill likes Cindy.Cindy likes Bill.Bill likes dogs.
  Prolog表示为:likes(bill, cindy). likes(cindy, bill).likes(bill, dogs).
  2.2 规则
  规则由几个互相有依赖性的简单句(谓词)组成,用来描述事实之间的依赖关系。从形式上看,规则由左边表示结论的后件谓词和右边表示条件的前提谓词组成。
  例如,Cindy likes everything that Bill likes.
  Caitlin likes everything that is green.
  Prolog表示为: likes(cindy, Something):-likes(bill, Something).
  likes(caitlin, Something):-green(Something).
  2.3 目标(问题)
  把事实和规则写进Prolog程序中后,就可以向Prolog询问有关问题的答案,询问的问题就是程序运行的目标。目标的结构与事实或规则相同,可以是一个简单的谓词,也可以是多个谓词的组合。
  例如问题 ?-student(john).表示“john是学生吗?”
  
  3 Prolog的基本语句
  
  3.1 Prolog程序由一组事实和规则组成,如:
  likes(george, swimming).
  likes(susie, swimming) :- likes(george, swimming).
  likes(mary, X) :- likes(susie, X), likes(george, X).
  上述程序执行过程可以如下:
  ?- likes(george, swimming).
  Yes
  ?- likes(jack, biking).
  No
  ?- dislikes(jack, biking).
  No
  3.2 递归性
  member: 确定某元素是否是某个表中的成员
  member(X, [X |_]).
  member(X,[_|Y]):- member(X,Y).
  append: 把两个表连成一个表
  append([],L,L).
  append([X|L1],L2,[X|L3]):- append(L1,L2,L3).
  3.3 prolog程序
  求谁是john的朋友?
  predicates /*谓词段,对要用的谓词名和参数进行说明*/
  likes(symbol, symbol)
  friend(symbol, symbol)
  clauses /*子句段,存放所有的事实和规则*/
  likes(bell,sports). /*前4行是事实*/
  likes(mary,music).
  likes(mary,sports).
  likes(jane,smith).
  friend(john,X):-likes(X,sports),likes(X,music). /*本行是规则*/
  当上述事实与规则输入计算机后,运行该程序,用户就可以进行询问,如输入目标:
  friend(john,X)
  即询问john的朋友是谁,这时计算机的运行结果为:
  X=mary (mary是john的朋友)
  3.4 附加的控制机制cut
  cut用“!”表示:恒真,cut是一种能够影响Prolog回溯方式的专门机构:当要回溯前面一串已满足目标时,就不要考虑那些目标的其他可选分支了。或着说:!在SLD树上剪除了以它的父目标为根的那个子树中尚未被搜索的部分。
  优点:程序可以运行的更快,程序可以占用较少的内存空间。
  cut的几种用法:放在产生器和测试器的后面,example(X):-generate(X),test(X),!,与内部谓词fail合用。
  例如:如果一个人是健壮的,条件为:没有心脏病、肺病,不是近视眼。
  strong(X):- heart_disease(X),fail.
  strong(X):- tuberculosis(X),fail.
  strong(X):- nearsight(X),fail.
  strong(X).
  heart_disease(xiao_li).
  ?- strong(xiao_li).
  
  4 Prolog 的实现
  
  (1)解释实现:“编译”阶段:即分析Prolog源程序的语法,把它翻译成便于解释执行的内部形式,解释阶段:即对SLD树的深度优先搜索,预定义谓词的解释:每一个预定义谓词有一个小的解释模块,互相之间基本上是独立的,但与全程数据结构和主控程序之间要协调
  (2)编译实现:Prolog的翻译:把Prolog程序翻译成一种高级程序语言代码,Prolog的编译:编译成Warren抽象机代码
  
  5 Prolog语言的常用版本
  
  5.1 Turbo Prolog
  由美国Prolog开发中心(Prolog Development Center, PDC)1986年开发成功、Borland公司对外发行,其1.0,2.0,2.1版本取名为Turbo Prolog,主要在IBM PC系列计算机,MS-DOS环境下运行。
  5.2 PDC Prolog
  1990年后,PDC推出新的版本,更名为PDC Prolog 3.0,3.2,它把运行环境扩展到OS/2操作系统,并且向全世界发行。
  5.3 Visual Prolog
  Visual Prolog是基于Prolog语言的可视化集成开发环境,是PDC推出的基于Windows环境的智能化编程工具。目前,Visual Prolog在美国、西欧、日本、加拿大、澳大利亚等国家和地区十分流行,是国际上研究和开发智能化应用的主流工具之一。
  Visual Prolog具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能。它包含构建大型应用程序所需要的一切特性:图形开发环境、编译器、连接器和调试器,支持模块化和面向对象程序设计,支持系统级编程、文件操作、字符串处理、位级运算、算术与逻辑运算,以及与其它编程语言的接口。
  
  6 结束语
  
  总之,Prolog语言是一种说明性的语言,是数据与程序结构统一, Prolog是“智能的”:具有内置的推理机实现从上至下、从左至右的搜索,Prolog能自动实现模式匹配和回溯,并具有具有递归的特点,作为AI开发的重要工具,我们一定要深入学习理解,开发出更多更实用的应用系统。
  
  参考文献:
  [1]史忠植.高级人工智能(第二版).北京:科学出版社,2006.
  [2]廉师友.人工智能技术导论(第二版).西安:电子科技大学出版社,2002.
  [3]陈群秀.人工智能(远程教育研究生课程).http://www.sztvu.com/tsinghua/rgzn/art2011.htm.
  [4]Visual Prolog语言简介.http://www.kddxy.net/~lei/VIP.html#VPL.
  [5]人工智能语言.http://myandyou2008.51.net/rengongzhineng/第十四章人工智能语言.htm.
  
  收稿日期:2007-12-23
  作者简介:王春莲(1973-),女,山东德州人,讲师,在职同等学力研究生,研究方向:计算机应用;王海霞(1976-),女,山东济南人,讲师,大学本科。
其他文献
大家都知道人和动物能互动,可你知道我是怎么跟植物互动的吗?我来告诉你吧!  大雨过后的天气总是令人神清气爽。晚饭后,我和爸妈到公园散步。我正走在弯弯曲曲的石径路上时,发现了一株长相像扇子的特殊植物。它長着细细的茎,每根茎上都规则地排列着带小刺的叶片。我用手指一摸,霎时间它的叶片就向中间合拢了。我问爸爸这是怎么回事,爸爸笑着说:“它叫含羞草,是一种会害羞的植物。”哈哈,竟会有害羞的植物。  回家后,
笔者从事小学语文教学多年,在教学实践中常常思考:如何实现语文课堂高效教学呢?以何种形式促进教师稳定发展呢?由于语文学科具有人文性与工具性的特点,新课改以来,核心素养概念的提出,加之以人为本的教育理念,这些对语文教师进行有效教学提出了更高的要求。在教学中,如何切实做到思想教育、理论知识双向推进,是现阶段语文教师重点思考的问题。由北京师范大学出版社出版,孙素英和赵亚夫主编的《小学语文课堂的有效教学》一
一通老师家所在的小区要召开业主大会,商讨物业费的定价问题。一通老师是业主委员会的主任,也就是所有小区居民的代表。所以,他要拟定一则通知,让大家准时来开会。其实,小区里时常有通知贴出来,但是大家都没有留意看。也不能怪大家,因为这通知写得确实也不够清楚,看了也白看。  不过这一次,一通老师决定,要出一份好通知,让大家看懂,还能照着通知中说的去做。但一通老师有点忙,只能先把这样的事,交给两个徒儿来做。思
星期天,我冒着雨去楼下捉了一只蜗牛,从此以后,我们家就多了一位可爱的新成员,我叫它“贝贝”。  贝贝整天背着它的小房子爬来爬去,它的身子又软又滑,摸上去湿漉漉的。我想把它抓起来,它却总是从我的手指间“哧溜”一声滑下去。它的脑袋小小的,上面长着两对“天线”,一对上一对下,一对长一对短,好像在给它的小房子发送信号呢!贝贝的眼睛比芝麻粒还小,羞涩地藏在长触角的顶端,一碰到我的手就立刻缩回去。书上说,蜗牛
我的家乡在大坪,那里群山环绕,绿树成荫,一条小河从村子的中间流过。  我的家在山脚下,后山有几个大风车 ,大风车就像特大号的风扇,身子有三四层楼高,扇葉有三四米长,风一吹,大风车转动起来,好像就能吹走整个夏天的炎热。大风车还像飞机的螺旋桨,轻轻一转,仿佛就能飞上天。  夏天的午后,我对妈妈说:“妈妈,让山上的大风车吹一吹肯定很凉爽,我想到山上去。”  “傻孩子,那大风车不是用来吹风的,是用来发电的
摘要:微课作为信息化教学的新教育资源,以其独有的特征,在普通和高等教育,得到学生、教师和家长的认可。基于中职学生的特殊性,该文以在word软件中制作员工名片为例,介绍微课在中职学校设计和开发的原则,从教学内容和学习者特征分析,教学目的的制定,教学策略的选择,以及微课制作过程的设计等方面详细的介绍微课的开发和设计,提出了对中职微课开发的新见解,为其他微课的设计与开发提供了借鉴。  关键词: 微课;开
摘要:根据USB3.0协议,链路层控制器主要是对链路的初始化和配置,对主机和设备之间的数据交流建立链接和控制。该文详细介绍链路层状态控制器的基本原理以及利用 Verilog HDL 语言实现了状态控制器的描述, 并通过了Modelsim 仿真。  关键词:USB 3.0;状态控制器;仿真验证  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)02-0411-03  
老家有一棵老桑树,它已经25岁了,怪不得大家都叫它桑树爷爷。桑树爷爷的树干又粗又高,颜色是深咖啡色的;叶子是深绿色的,有点儿小,像我们的手掌。桑树爷爷就像草原上的一位士兵,看着远方。  桑树爷爷的果实可有趣了。如果桑果不是应季的话,它会酸得让你无法忍受,吃一颗你的牙齿就被酸倒了。桑果的颜色分为两种,一种是红色的,一种是黑色的。如果你用手捏住红色的桑果,它就会拿起魔法杖,把你的手变得血红。黑色的桑果