首页>参考读物>计算机科学与技术>计算机科学理论与基础知识

逻辑编程导论
作者 : [美]迈克尔·吉内塞雷斯(Michael Genesereth),[美]维奈·K.乔杜里(Vinay K. Chaudhri) 著
译者 : 徐坚 甘健侯 孟祥栋 刘付依萍 欧阳昭相 译
丛书名 : 计算机科学丛书
出版日期 : 2021-09-29
ISBN : 978-7-111-69181-5
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 192
开本 : 16
原书名 : Introduction to Logic Programming
原出版社: Morgan & Claypool Publishers, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书采用一种创新的模型论进行逻辑编程,从数据集的基本概念(即闭原子集)开始。沿着这一基本概念,我们引入视图(即虚拟关系);我们将经典逻辑程序定义为视图定义集,使用传统的类似于Prolog的表示法编写,但语义是根据数据集而不是根据实现方式给出。然后介绍了一些闭原子操作,如“添加”和“删除。

图书特色

斯坦福大学逻辑编程公开课(CS151)教材,涵盖基本原理及流行应用

图书前言

本书是关于逻辑编程的入门教科书,它主要适用于本科生,但也适合中学生和低年级研究生阅读。
本书假设学生已经理解集合和集合运算,比如并集、交集等。本书还假设学生熟悉符号运算,掌握高中代数或有更高水平。
如果读者有运用计算思维的经验,会对阅读本书有帮助,但这并不是阅读本书的必备条件。另外,编程经验也不是必需的。实际上,我们已经观察到,一些具有编程背景的学生刚开始阅读这本书的时候比没有编程经验的学生要困难得多。为了欣赏逻辑编程的力量和美感,他们似乎需要忘掉一些以前学过的知识。
本书采用的逻辑编程方法来自30多年来我们在学术和商业环境中的研究、应用和教学。这些经历很宝贵,使得本书在以下两个方面不同于其他书籍。
第一,本书采用“模型–理论”的方法来阐述语义,而不用传统的“证据–理论”方法。从数据集的基本概念(即基本原子集)开始,我们引入了视图定义的经典逻辑程序,这种程序使用传统的Prolog表示法编写,但根据数据集而不是实现给出语义。我们也会在稍后的演示中讨论实现。
第二,我们同时关注数据集的改变与逻辑代理的状态。在讨论了数据集之后,我们引入了“更新”的基本概念,即“添加”和“删除”基本原子。根据这个基本概念,我们引入动态逻辑程序作为动作定义集,其中动作被概念化为同步更新集。这个扩展允许我们讨论逻辑代理以及静态逻辑程序。(逻辑代理实际上是一个状态机,其中每个状态被建模为数据集,每条弧被建模为一组更新。)
本书有印刷版和在线版,还通过教学网站提供能自动评分的在线练习、编程作业、逻辑编程工具和各种示例程序。该网站免费开放,网址为http://logicprogramming.stanford.edu。
最后,我们要感谢对本书的编写工作产生深远影响的两个人:Jeff Ullman 和 Bob Kowalski。Jeff Ullman是我们在斯坦福大学的同事,他编写的广受欢迎的教材启发了我们,并帮助我们认识到逻辑编程和数据库之间的深层关系。Bob Kowalski是逻辑编程的共同发明者,他倾听了我们的想法,为我们的工作提供帮助,甚至就本书的某些章节与我们进行了合作。
我们还想感谢Abhijeet Mohapatra。他是动态逻辑编程的共同发明者,也是本书中许多逻辑编程工具的共同创造者。他是这门课程的助教,为本书内容的呈现和组织提供了宝贵的建议。
最后,我们要感谢那些不得不忍受本书早期版本的学生们,在许多情况下,他们通过经历并不总是成功的实验来帮助我们找到正确的方法。尽管犯了很多错误,他们似乎还是学会了书中的内容,他们很聪明。他们的耐心和建设性的意见对于帮助我们理解哪些东西是可取的尤为宝贵。

Michael Genesereth和Vinay K. Chaudhri
2019年12月

上架指导

计算机\人工智能

封底文字

这是一本面向21世纪的书,它提出了一个优雅、创新的逻辑编程视角。与其他书本不同的是:它将数据集作为一个基本概念,从而弥补了编程语言和知识表示语言之间的差距;它将更新与数据集放在同等地位,从而对行动和变化进行合理的、实际的处理。
                   —— Bob Kowalski,帝国理工学院名誉教授
在一个以深度学习和Python为主题的世界里,这本书有着十分重要的地位。它向读者介绍了传统逻辑编程的基本原理,并阐明了使用该技术为复杂系统创建可运行规范的益处。
—— Son Cao Tran,新墨西哥州立大学计算机科学教授
这本书写得很好,结构合理,对概念的解释清楚明了,并且各章后面的练习是由易到难循序渐进的,这使得人们能够在学习更复杂的知识之前快速理解简单的概念。
                    —— George Younger,斯坦福大学学生

本书采用一种创新的“模型-理论”的方法,概述了逻辑编程理论、当前技术和流行应用。两位作者均来自斯坦福大学计算机科学系,是逻辑编程方面的专家。本书英文版还配有专门的教学网站(http://logicprogramming.stanford.edu),提供所用语言的解释器和编译器,以及用于开发和部署实际逻辑程序的集成开发环境,还包括能自动评分的在线练习、编程作业、逻辑编程工具和各种示例程序。

译者序

复杂性科学被誉为21世纪的科学,与传统的还原论方法不同,复杂系统理论强调用整体论和还原论相结合的方法去分析系统。复杂性科学研究的逻辑起点是复杂系统,如生命系统、社会系统等。目前,复杂系统的研究还处于萌芽阶段,但它孕育着巨大的潜力。然而,传统的编程语言和表示语言在面对复杂系统的构建任务时却无能为力。为此,逻辑编程应运而生。逻辑编程作为一种编程范式,主要基于形式逻辑。用逻辑编程语言编写的任何程序都是一组逻辑形式的句子,表达有关领域的事实和规则。主要的逻辑编程语言包括Prolog、ASP(Answer Set Programming)和Datalog。在这些语言中,规则都是以子句的形式编写的。
本书从逻辑编程的视角,阐释了如何使用逻辑编程来创建复杂系统。作者将数据集作为一个基本概念,并同时关注更新情况与数据集,以对行动和变化进行合理的处理。
本书的结构合理,概念清晰,章节后面的习题由作者精心设计,其难度逐步递增。本书可作为逻辑编程的入门教材。本书的翻译工作得到了云南师范大学“教育技术学”二级学科博士点、云南省智慧教育重点实验室、云南省操晓春专家工作站、云南省高校教育大数据应用技术科技创新团队的支持,得到了“民族教育信息化教育部重点实验室2020年度开放基金项目”“云南师范大学2020年度研究生科研创新基金项目”的资助,得到了同行、老师、学生和朋友的帮助和鼓励,在此对他们表示诚挚的谢意。书中文字力求忠于原著,但由于译者水平有限,时间仓促,译文中难免有疏漏之处,敬请读者批评指正。

译者
2020年12月于昆明

图书目录

译者序
前言
第一部分 逻辑编程的介绍
第1章 概述 3
1.1 逻辑编程 3
1.2 逻辑程序作为可运行规范 3
1.3 逻辑编程的优点 4
1.4 逻辑编程的应用 5
1.5 基本逻辑编程 6
1.6 历史笔记 7
第2章 数据集 9
2.1 引言 9
2.2 概念化 9
2.3 数据集的定义 10
2.4 示例—女生联谊会 12
2.5 示例—亲属关系 13
2.6 示例—积木世界 14
2.7 示例—食物世界 16
2.8 重组 16
2.9 习题 18
第二部分 查询的更新
第3章 查询 23
3.1 引言 23
3.2 查询语法 24
3.3 查询语义 25
3.4 安全性 26
3.5 预定义概念 27
3.6 示例—亲属关系 28
3.7 示例—地图着色 29
3.8 习题 30
第4章 更新 33
4.1 引言 33
4.2 更新语法 33
4.3 更新语义 34
4.4 同步更新 35
4.5 示例—亲属关系 36
4.6 示例—颜色 37
4.7 习题 40
第5章 查询评估 43
5.1 引言 43
5.2 评估真值查询 43
5.3 匹配 44
5.4 用变量评估查询 47
5.5 计算分析 48
5.6 习题 49
第6章 视图优化 51
6.1 引言 51
6.2 子目标排序 51
6.3 子目标移除 53
6.4 规则移除 55
6.5 示例—密码算术 55
6.6 习题 57
第三部分 视图的定义
第7章 视图定义 61
7.1 引言 61
7.2 语法 62
7.3 语义 63
7.4 半正程序 66
7.5 分层程序 68
7.6 习题 71
第8章 视图评估 73
8.1 引言 73
8.2 基础目标和规则的自顶向下处理 74
8.3 合一 75
8.4 非基础查询和规则的自顶向下处理 79
8.5 习题 81
第9章 示例 83
9.1 引言 83
9.2 示例—亲属关系 83
9.3 示例—积木世界 84
9.4 示例—模运算 86
9.5 示例—有向图 87
9.6 习题 88
第10章 列表、集合、树 91
10.1 引言 91
10.2 示例—皮亚诺公理 91
10.3 列表 93
10.4 示例—排序列表 94
10.5 示例—集合 95
10.6 示例—树 96
10.7 习题 96
第11章 动态系统 99
11.1 引言 99
11.2 表示 100
11.3 仿真 101
11.4 计划 103
11.5 习题 104
第12章 元知识 105
12.1 引言 105
12.2 自然语言处理 105
12.3 布尔逻辑 107
12.4 习题 108
第四部分 操作的定义
第13章 操作 113
13.1 引言 113
13.2 语法 113
13.3 语义 115
13.4 习题 118
第14章 动态逻辑程序 121
14.1 引言 121
14.2 响应式系统 121
14.3 封闭系统 122
14.4 混合主动 124
14.5 同时动作 124
14.6 习题 126
第15章 数据库管理 127
15.1 引言 127
15.2 约束更新 127
15.3 物化视图维护 128
15.4 通过视图更新 129
15.5 习题 130
第16章 交互式工作表 131
16.1 交互式工作表简介 131
16.2 示例 132
16.3 网页数据 133
16.4 手势 134
16.5 操作定义 135
16.6 视图定义 136
16.7 语义建模 137
第五部分 结论
第17章 其他类型的逻辑程序设计 143
17.1 引言 143
17.2 逻辑生产系统 143
17.3 约束逻辑编程 144
17.4 析取逻辑编程 145
17.5 存在逻辑编程 146
17.6 回答集编程 147
17.7 归纳逻辑编程 149
附录A EpilogJS中的预定义概念 151
附录B Sierra 161
参考文献 182

教学资源推荐
作者: 陈守孔 胡潇琨 李玲 编著
作者: (印)C.Xavier,(美)S.S.lyengar
参考读物推荐
作者: Charles L. Phillips; John M. Parr; Eve A. Riskin
作者: 甘登岱
作者: 华诚科技 编著
作者: 华诚科技 编著