第一章 Prolog简介 1
1.1 说明事物或对象之间的关系 1
1.2 用规则定义关系 3
1.3 对象及其关系的询问 4
1.4 Prolog的问题求解过程 7
1.5 逻辑程序设计语言Prolog的特点 10
练习 11
第二章 基本语法及结构 13
2.1 项 13
2.2 项的匹配 16
2.3 算子 19
2.4 算术比较与运算 21
2.5 表 22
练习 25
第三章 规则 26
3.1 规则的构成 26
3.2 目标求解的搜索 29
3.3 规则的递归描述 32
3.4 问题求解的顺序相关性 37
3.5 Prolog程序的说明性语义与过程性语义 39
练习 43
4.1 结构化信息的检索 44
第四章 Prolog程序设计中的问题表示及数据结构 44
4.2 不确定型自动机仿真 48
4.3 八皇后问题 53
练习 64
第五章 预定义谓词切断“!”及其使用 65
5.1 “!”的语法 65
5.2 “!”的使用 67
5.3 “!”带来的问题 71
第六章 预定义谓词的功能与使用 74
6.1 数据库中子句的插入、删除及显示 74
6.2 输入输出处理 79
6.3 文件处理 86
6.4 项的分类及操作 88
6.5 结构的操作 93
6.6 对回溯的控制 101
6.7 目标调用 102
6.8 算子定义 105
6.9 相等性比较 108
第七章 Prolog的程序设计技术 109
7.1 程序设计的一般原则 109
7.2 关于如何进行Prolog程序设计的几点讨论 111
7.3 Prolog的程序设计风格 113
7.4 Prolog的程序查错 116
7.5 Prolog程序的效率问题 117
第八章 树与图的Prolog表示及算法实现 130
8.1 树、二叉树、有序二叉树及其表示 130
8.2 有序二叉树中的插入与删除 135
8.3 图及其在Prolog中的表示 141
8.4 图的路径查找 143
8.5 图中跨越树的查找 147
练习 150
第九章 问题求解的状态空间表示及搜索策略 151
9.1 农夫摆渡问题及它的状态空间 151
9.2 深度优先搜索 153
9.3 农夫摆渡问题的深度优先程序 156
9.4 宽度优先的搜索方法 159
9.5 宽度优先方法中路径的树状表示 162
9.6 关于状态空间搜索的几点讨论 166
练习 167
第十章 最佳优先的启发式搜索 168
10.1 最佳优先搜索 168
10.2 八数码难题的最佳优先搜索 177
10.3 任务调度的最佳优先搜索 181
10.4 关于A*算法的讨论 187
11.1 什么是专家系统 190
第十一章 使用Prolog开发专家系统 190
11.2 使用Prolog开发专家系统的优点 191
11.3 动物识别专家系统 192
11.4 用Prolog实现简单的动物识别专家系统 196
11.5 使专家系统具有解释能力 202
练习 211
第十二章 其它应用 212
12.1 符号处理 212
12.2 汉诺塔游戏 216
12.3 表处理 218
12.4 排序 221
12.5 电路仿真 226
12.6 用筛选法获得素数 231
练习 232
第十三章 Prolog与一阶谓词逻辑之间的关系 234
13.1 一阶谓词逻辑简介 234
13.2 子句形式 238
13.3 子句的一种特殊表示 243
13.4 反驳消解法及定理证明 245
13.5 Horn子句与Prolog 248
附录 ASCII码字符表 251
主要参考资料 252