- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用逻辑思维与计算机交流--Prolog
用逻辑思维与计算机交流--Prolog 简介
引言
毫无疑问,计算机大大改变了我们的科研方式,我们已经熟悉了利用面向过
程编程语言(如 C)或面向对象编程语言 (C++)与计算机交流,使得计算机能
够听懂我们的“话”,完成我们交与的任务。然而与计算机交流(编程)本身的
成本不低,编程工作常常耗费我们大量的时间。
有没有可能把与计算机交流变得跟与人交流一样亲切自然,那么我们的生活
就前进了一大步。希望是有的,不过目前只能逼近。于是人们根据与计算机交流
的目的不同设计了五花八门的更专业的语言来方便的完成特定的工作,而
Prolog (Programming in Logic)就是一种用来方便地命令计算机进行逻辑推理
(那当然与符号系统相关了)的编程语言。
Prolog 程序框架由“事实”和“规则”构成,程序执行的过程,就是“规
则”的选择、匹配过程。这跟我们逻辑推理的思维过程是高度的一致。那么什么
任务需要进行大量的逻辑推理呢?一般来讲处理知识及其之间相互关系的任务
如专家系统、自然语言理解、智能知识库等等都是Prolog 发光发热的地方。
相关软件
任何一种程序语言都需要相应的翻译软件(解释器/编译器)翻译成机器码
供计算机识别,Prolog 也不例外,这里推荐一款开源的免费软件GNU Prolog。
下载安装程序请移步/。
这里值得注意的是,Windows 有2 个安装版本:
x86_64 / Win64 using MinGW64 (see file src/WINDOWS64)
x86_64 / Win64 using MSVC++ (see file src/WINDOWS64)
指的是GUN Prolog 软件本身所用编译器的版本。读者选择自己习惯的编译
器版本就可以了。
程序安装
安装完程序后是这个样子的:
语法规则
前面提过,Prolog 框架就只有两个内容:事实和规则,比如说明人际关系
的简单例子:
说明事实:
human(lily).
human(lucy).
likes(lily,lucy).
说明lily 和lucy 是人(human),lily 喜欢lucy。
说明规则:
friend(X,Y):-likes(X,Y),likes(Y,X).
意思是:对于两个对象X 和Y,如果X 喜欢Y,且Y 喜欢X,那么他们是朋
友。注意在Prolog 中所有语句都是以“.”号结尾的。
运行程序流程
1. 打开任意一个文本编辑器,输入您需要的代码,比如下面这个简单的例子:
保存为example.pl。
2. 将文档内容载入GNU Prolog。选择Consult,
在弹出对话框中找到刚才保存的文档(后缀为pl)
点击确定后,主界面出现下图所示提示:
文档代码已经被编译了,由于我们在代码中并没有设置输出,所以没得到什么有
用的结果,prolog 提供交互式的代码编译方式(类似matlab),比如我们在提
示符 后输入friend (a,f).(注意必须输入点号),然后回车,Prolog 将
告知你这是错误的,因为根据定义a 与f 不是朋友。接着我们输入friend(e,f).,
回车,prolog 告知你这是对的。可见Prolog 用来查询知识是相当方便。当然我
们还可以进一步提出更模糊的问题,比如 friend (e,X).这里大写 X 表示一个
未知变量,相当于你问Prolog,谁与e 是朋友,Prolog,正确地给出了f。
上述实验如下图所示:
当然Prolog 能做的不仅仅只有这些,比如维基百科
(/wiki/Prolog)一个关于排序的例子如下:
/* sortcsj.pl 原始參考:Computer Science J. Glenn Brookshear */
/* sortcsj()中的第二個引數帶有排序好的結果 */
/* 僅為示範,若為 gprolog使用者則用內建sort等較佳 */
/* 在 gprolog下之編譯例:gplc --min-size sortcsj.pl */
/* 執行 sortcsj 後會出現排序結果 [2,9,18,18,25,33,66,77] */
q:- L= [33,18,2,77,18,66,9,25], (sortcsj(L,P), write (P), nl).
sort
原创力文档


文档评论(0)