Seaman.h.zhang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Prolog

翻译"www.learnprolognow.org"的相关学校资源
摘要:内容提要本章主要介绍使用递归操纵列表的一个实际例子:判断一个元素是否在包含在一个列表中。是时候介绍第一个Prolog中通过递归操纵列表的程序例子了。我们最感兴趣的事情之一是,某个对象是否是列表中的元素。所以,我们想写一个程序,当假设输入是一个对象X和一个列表L,得出结果是X是否属于L。这个程序的名字... 阅读全文
posted @ 2015-07-11 14:12 seaman.kingfall 阅读(1540) 评论(0) 推荐(0)

摘要:内容提要列表定义;合一在列表中的使用;匿名变量;列表定义正如名字暗示的,列表就是多个元素组成的集合。更精确地说,是元素的有限序列。在Prolog中的列表,有如下的一些具体例子:[mia, vincent, jules, yolanda][mia, robber(honey_bunny), X, 2,... 阅读全文
posted @ 2015-07-10 16:45 seaman.kingfall 阅读(1398) 评论(0) 推荐(0)

摘要:在学习了前三章内容后,我们应该对Prolog编程有了直观和理性的认识。由于合一、变量初始化、证明搜索和递归都是Prolog的核心概念,所以有如下更多的一些实践和练习。这里我会先录入题目,后期再给出我自己的程序代码和一些思考。实践1试想有如下的描述迷宫的知识库。其中的事实描述了点和点之间的联通关系,即... 阅读全文
posted @ 2015-07-09 08:19 seaman.kingfall 阅读(1325) 评论(0) 推荐(1)

摘要:练习题3.1 在之前的章节中,我们已经讨论了如下的谓词逻辑: descend(X, Y) :- child(X, Y). descend(X, Y) :- child(X, Z), descend(Z, Y).假设我们将谓词逻辑重构如下: descend(X, Y) :- child(X, Y). ... 阅读全文
posted @ 2015-07-08 16:35 seaman.kingfall 阅读(1472) 评论(0) 推荐(0)

摘要:内容提要规则顺序目标顺序终止Prolog是第一门比较成功的逻辑编程语言。逻辑编程语言内在实现是简单和富有魅力的:程序员的工作简单地说就是描述问题;程序员应该写下(使用语言的逻辑)声明性的规格说明(即,一个知识库),去描述有趣的状态、事实和关系;程序员不应该告诉计算机如何去实现,而他根据问一些问题去获... 阅读全文
posted @ 2015-07-07 15:40 seaman.kingfall 阅读(1533) 评论(0) 推荐(0)

摘要:在Prolog中,谓词可以递归地定义。简要地讲,一个谓词是递归定义的,如果一个或者多个规则的定义中包含了规则自身。例子1:消化考虑如下的知识库:is_digesting(X, Y) :- just_ate(X, Y).is_digesting(X, Y) :- just_ate(X, Z), is_... 阅读全文
posted @ 2015-07-07 09:53 seaman.kingfall 阅读(2917) 评论(0) 推荐(0)

摘要:练习题 2.1 下面各组语句中,哪些组是能够合一的?如果能够合一,请给出变量初始化的信息。1. bread = bread.2. 'Bread' = bread.3. 'bread' = bread.4. Bread = bread.5. bread = sausage.6. food(bread)... 阅读全文
posted @ 2015-07-03 14:44 seaman.kingfall 阅读(1326) 评论(0) 推荐(0)

摘要:证明搜索上一节我们已经学习了合一,本节我们继续学习Prolog是如何通过搜索知识库去决定输入的查询是否能够满足。我们将会学习证明搜索,并通过简单的一个例子去涵盖这个基础的概念。假设我们有如下的知识库:f(a).f(b).g(a).g(b). h(b).k(X) :- f(X), g(X), h(X)... 阅读全文
posted @ 2015-07-02 13:10 seaman.kingfall 阅读(1250) 评论(0) 推荐(1)

摘要:内容提要:合一的定义;一些合一的例子;触发校验;使用合一编程;合一的定义在上一章的知识库KB4中,我们简单地提及了合一的思想。比如,Prolog将woman(X)和woman(mia)合一,所以把变量X初始化为mia。现在是时候更加细致地研究合一,因为合一是Prolog中最为基础的思想。回顾一下Pr... 阅读全文
posted @ 2015-07-01 10:00 seaman.kingfall 阅读(1828) 评论(0) 推荐(0)

摘要:练习题 1.1 下面的字符序列哪些是原子,哪些是变量,哪些两者都不是?1. vINCENT2. Footmassage3. variable234. Variable20005. big_kahuna_burger6. 'big kahuna burger'7. big kahuna burger8... 阅读全文
posted @ 2015-06-27 10:47 seaman.kingfall 阅读(1500) 评论(1) 推荐(0)

摘要:内容摘要:原子(Atom)数字(Numbers)变量(Variables)复杂语句(Complex Terms)通过上一节的学习,我们已经大概熟悉了Prolog的编程思路,这一节我们会回过头,详细学习其中的一些语法细节。首先,问一个基础的问题:我们已经在Prolog程序中看到了很多类型的表达式(比如... 阅读全文
posted @ 2015-06-26 17:56 seaman.kingfall 阅读(1891) 评论(0) 推荐(0)

摘要:该系列文章是网上的Prolog学习资料:www.learnprolognow.org的中文翻译。希望能够通过翻译此学习资料,达到两个目的:第一、系统学习prolog的知识;第二、提升英文文章理解和翻译能力。内容提要:给出一些Prolog编程的简单例子;Prolog的基本结构:事实,规则和查询;环境说... 阅读全文
posted @ 2015-06-25 15:09 seaman.kingfall 阅读(3152) 评论(2) 推荐(0)