自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 prolog_familiy tree program

mother(M,C):-female(M),parent(M,C).father(F,C):-parent(F,C),male(F).grandparent(G,X):-parent(G,P),parent(P,X).sister(S1,S2):-female(S1),parent(P,S1),parent(P,S2),S1==S2.brother(S1,S2):-...

2019-01-07 15:44:27 365

翻译 AI Searching

AI搜索使用的经典的罗马尼亚图。1、uninformed and infromed(heuristic) searching1.1 uninfromed searching1.1.1 BFS 广度优先算法*使用一个队列数据结构来存储待扩展节点,扩展出来的节点存储在队列tail,扩展的节点在队列Head.***设b为宽度(如以上2叉树则B=2)d为深度(如树的深度)**时间复杂度,...

2019-01-06 12:17:52 523

转载 Prolog教程 16--自然语言理解

Prolog特别适合开发自然语言的应用系统。在这一章,我们将为寻找Nani游戏添加自然语言理解的部分。(由于Prolog谓词是使用的英文符号,所以这里的自然语言理解只能局限在英文中)在着手于编制寻找Nani之前, 我们先来开发一个能够分析简单英语句子的模块。把这种方法掌握之后,编制寻找Nani的自然语言部分就不在话下了。下面是两个简单的英语句子:The dog ate the bone.T...

2019-01-02 15:45:49 992

转载 Prolog教程 15--程序流程控制

-repeat/0。它在第一次调用时永远成功,并且在回溯时也永远成功。换句话说,流程不可能回溯通过repeat/0。如果某个子句中有repeat/0,并且其后有fail/0谓词出现,那么将永远循环下去。使用这种方法可以编写死循环的Prolog程序。在这一章,继续探索Prolog的程序流程控制,我们将介绍和一般的程序设计语言相似的流程控制。前面我们使用谓词fail和write/1来列印出游戏中...

2019-01-02 15:40:28 1008

转载 Prolog教程 14--cut的功能

cut,使用符号!来表示。直到目前为止,我们都一直在使用Prolog内建的回溯功能。使用此功能可以方便地写出结构紧凑的谓词来。但是,并不是所有的回溯都是必须的,这时我们需要能够人工地控制回溯过程。Prolog提供了完成此功能的谓词,他叫做cut,使用符号!来表示。Cut能够有效地剔除一些多余的搜索。如果在cut处产生回溯,它会自动地失败,而不去进行其它的选择。下面我们将看看它的一些实际的功...

2019-01-02 15:32:04 2219

转载 Prolog教程 13--定义操作符

我们已经学习过了Prolog的数据结构,它的形式如下:functor(arg1,arg2,…,argN).这是Prolog的唯一的数据结构,但是Prolog允许这种数据结构有其它的表达方法(仅仅是表达方法不同)。这种表达方法有时候更加接近我们的习惯,正如列表的两种表达法一样。现在要介绍的是操作符语法。以前曾经介绍了数学符号,在这一章我们将看到它和Prolog的数据结构是等价的,并且学习如何定...

2019-01-02 15:22:36 1138

转载 Prolog教程 12-列表(list)

list [a,b,c][X|Y] X 是列表头(head), 它可以是一个列表,或其他任何数据结构Y 是列表尾(tail), 它只能可以是一个列表为了能够更好地表达一组数据,Prolog引入了列表(List)这种数据结构。 列表是一组项目的集合,此项目可以是Prolog的任何数据类型,包括结构和列表。列表的元素由方括号括起来,项目中间使用逗号分割。例如下面的列表列出了厨房中的物品。[a...

2019-01-02 15:11:34 4980

转载 Prolog教程 11-联合(Unification)

匿名变量(_)不会绑定为任何值如果使用(=)那么联合操作时显式的。而Prolog在使用子句与目标匹配时的联合则是隐式的。Prolog的最强大的功能之一就是它内建了模式匹配的算法----联合(Unification)。以前我们所介绍的例子中的联合都是较为简单的。现在来仔细研究一下联合。下表中列出了联合操作的简要情况。变量&任何项目: 变量可以与任何项目绑定,其中也包括变量原始项目&a...

2019-01-02 14:13:35 598

转载 Prolog教程 10-结构

通过把这些最简单的数据组合起来,可以生成复杂的数据类型,我们称之为结构。结构由结构名和一定数量的参数组成。原子就是没有参数的最简单的结构。到目前为止,所介绍的事实、查询以及规则都使用的是最简单的数据结构。谓词的参数都是原子或者整数,这些都是Prolog的基本组成元素。例如我们所使用过的原子有:office, apple flashlight, nani通过把这些最简单的数据组合起来,可以生...

2019-01-02 13:55:13 478

转载 Prolog教程 9--动态修改数据库

asserta(X) 增加一个子句Xretract(X) 删除一个字句XProlog的程序就是谓词的数据库,我们通常把这些谓词的子句写入Prolog的程序中的。在运行Prolog时,解释器首先把所有的子句调入到内存中。所以这些写在程序中的子句都是固定不变的。那么有没有办法动态地控制内存中的子句呢?Prolog提供了这方面的功能。这就意味着,Prolog程序在运行过程中,还能够改变它自己。它使用...

2019-01-02 13:33:24 1179

转载 Prolog教程 8---数学计算

Prolog中也有一些能够进行数学计算的功能,但是数学计算是不好用逻辑的事物来描述的。因此计算一个数学表达式的方法和我们以前所学习的模式匹配有很大的区别。因此,Prolog专门提供了内部谓词is来计算数学表达式。其语法形式如下:X is <数学表达式>变量X将被赋值为表达式的值,在回溯时不赋值。数学表达式的形式和其他的语言相同。下面是使用Prolog计算的一些例子。?- X is...

2019-01-01 20:41:19 1748

转载 Prolog教程 7-举一个分析家谱的程序

到现在为止,我们已经对Prolog有了一个基本的了解,现在有必要对我们所学过的知识做一个系统的总结。Prolog的程序是由一系列的事实和规则组成的数据库。规则之间的调用是通过联合操作完成的,Prolog能够自动的完成模式匹配。规则还可以调用内部谓词,例如write/1。我们可以在Prolog的解释器中单独地对规则进行查询(调用)。在Prolog的程序的运行流程方面我有了如下的认识:规则...

2019-01-01 20:38:19 3773 1

转载 Prolog教程 6--规则

pred(x):- pred(Y),pred(Z).前面我们已经说过,谓词是使用一系列的子句来定义的。以前我们所学习的子句是事实,现在让我们来看看规则吧。规则的实质就是储存起来的查询。它的语法如下:head :- body其中,head 是谓词的定义部分,与事实一样,也包括谓词名和谓词的参数说明。:- 连接符,一般可以读作‘如果’。body 一个或多个目标,与查询相同。举个例子,上一...

2019-01-01 20:31:05 978 2

转载 Prolog教程 5--组合查询

常用内部谓词write/1此谓词被调用时永远是成功的,并且它可以把它的参数作为字符串输出到屏幕上。当回溯时,它永远是失败,所以回溯是不会把已经写到屏幕上的字符又给删除的。nl/0此谓词没有参数,和write一样,从Call端口调用时总是成功的,从Redo端口回溯时总是失败的,它的作用是在屏幕上输出一个回车符。tab/1此谓词的参数是一个整数,它的作用是输出n个空格,n为它的参数。其控制...

2019-01-01 19:57:50 964 2

转载 Prolog教程 4-简单查询

goal–查询目标unification–匹配工作三个必要哦条件1.目标谓词一致 2.谓词参数数量一致 3. 所有参数相同;–查询继续查询4个端口:1.call 开始查询2. exit 成功查询到结果,并绑定到变量3. redo 从上次成功查询处之后继续查绚,先释放变量4. fail 查询失败退出现在我们的游戏中已经有了一些事实,使用Prolog的解释器调入此程序后,我们就可以对...

2019-01-01 17:18:22 1037

转载 Prolog教程 3

facts, predicate,pred(arg1,arg2,…argN).argument type: interger, atom( low case begin, ’ '), variable(uppoer case begin or _), structure,事实 (facts)注:斜粗体字表示Prolog的专有名词事实(facts)是prolog中最简单的谓词(predic...

2019-01-01 16:51:23 1059

转载 Prolog教程 2

Prolog在英语中的意思就是Programming in LOGic(逻辑编程)。它是建立在逻辑学的理论基础之上的, 最初是运用于自然语言的研究领域。然而现在它被广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解、智能知识库等。同时它对一些通常的应用程序的编写也很有帮助。使用它能够比其他的语言更快速地开发程序,因为它的编程方法更象是使用逻辑的语言来描述程序。从纯理论的角度来讲,...

2019-01-01 14:49:05 996

转载 Prolog教程 1

(转)Prolog教程 1今天是2019年1月1日, 因为AI课要用到Prolog, 看到不错的入门教程收录下来学习。如果你是一位prolog的新手,希望你首先阅读这篇文章,好对prolog的全局有个了解。在这篇文章中我会把prolog和其他的程序语言做比较,所以希望你已经具有了一定的编程水平。什么是prolog?prolog是Programming in LOGic的缩写,意思就是使用逻...

2019-01-01 14:09:23 1603

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除