Plog(1)
来源:互联网 发布:菜鸟也能数据分析 编辑:程序博客网 时间:2024/04/30 14:53
prolog是Programming in logic的缩写,意思是使用逻辑进行编程的语言,在人工智能领域被广泛使用。
在学习prolog前我们需要一个解释器,我选择的是swi-prolog,可以从http://www.swi-prolog.org/下载。这个解释器功能比较强大,它提供了java和C/C++的interface. 还有一个是StrawBerryProlog,http://www.dobrev.com/light.html,相比SWI界面做得不错,但下载XP版本的注册比较烦琐,而且似乎没有INTERFACE,如果只是练习调试prolog也是个不错的选择.在这里我们还是以SWI为主.
几个prolog的基本概念:
terms: 这个其实代表的就是数据,但这个数据是相对宽泛的,它包括变量,常量,还有复合terms.
facts: 代表事实,比如a是b的家长,这就是一个事实,可以如此表示: parent(a,b); 这里a和b就是terms. fact的基本形式是p(t1,....,tn).
现在我们不再牵涉其它概念,尝试用上面两个概念来做一点东西.
进入SWI,我们可以使用命令菜单中的consult来加载外部的.pl文件(swi prolog的格式),或者用NEW命令新建一个文件. 在这个文件编辑窗口中我们输入以下语句:
man(jack).
man(tom).
woman(mary).
woman(helen).
这里的"."代表我们常用程序语言中的";",注意! 这是区分facts和terms的重要标志,有时我们会看到这样的语句man(foo(gg)). 其中的foo(gg)其实就是terms,而man(foo(gg)). 才是facts.退出编辑窗口,我们在命令行中输入man(jack). 回车,即可看到YES,表示数据库中确实存在男人jack这个事实. 呵呵,我们已经迈出第一步了,你可以输入自己的名字,不过你得到的结果只能是NO,快尝试把自己的名字加进去试试吧,可别搞错性别!.
接下来我们要稍稍提高一点了.我们修改了上面的文件:
man(jack).
man(tom).
woman(mary).
woman(helen).
parent(jack,mary). %jack是mary的父母
parent(helen,mary). %helen是mary的父母
在命令行中我们这样写: parent(C,mary). 这个C是参数,表示我们也不知道mary的父母是谁,我们想得到这个答案. 注意,在prolog中参数的首字母是默认大写的.
回车后我们看到这样的结果:
C=jack; 我们只要再按一下";"(redo 命令)就接着会出现 C=helen; 你有了什么想法了呢,能不能利用这个模拟一个DB呢?
下一篇我们将再提高一点并学习prolog中的rules,有了它就可以写出非常复杂的逻辑程序了.(本人也是刚接触prolog,如有不对之处望赐教)
- Plog(1)
- Plog(2)
- plog博客系统
- plog库使用总结
- FC4下安装plog快速指南(plog版本:1.01)
- FC4下安装plog快速指南(plog版本:1.01)
- 开源PLog库的使用
- [BlackBox项目]Plog用户操作分析
- 为PLOG增加了三套模板
- linux : add new log type to plog
- swi plog 使用 learn prolog now的学习
- 以前自己用plog建的blog,现在也到CSDN上建一个窝!
- 1
- 1
- 1
- 1
- 1
- 1
- JSP 连接 Oracle 9i
- Extraction应用构建平台是什么?
- 一组实例截图,有看头!
- REALbasic与神州飞船
- j2me中文教程1---J2ME技术概述
- Plog(1)
- SourceForge访问方法,解被封痛苦之中国伟大的程序员们!
- J2ME中文教程 2 CLDC简介
- J2ME中文教程 3 MIDP高级UI 的使用
- J2ME中文教程 4 MIDP低级UI的使用
- J2ME中文教程 5 MIDP的持久化解决方案
- 算法中的精确时间计数器的应用
- 看马大帅3
- J2ME中文教程 6 GAME API