人工智能(AI)程序设计:面向对象语言

人工智能(AI)程序设计:面向对象语言
作 者: 雷英杰
出版社: 清华大学出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《人工智能(AI)程序设计:面向对象语言》作者简介

内容简介

智能化是当前计算机、自动化、通信、管理等信息科学技术领域中的新方法、新技术、新产品的重要发展方向与开发策略之一。信息处理的智能化与信息社会对智能的巨大需求是人工智能发展的强大动力。人工智能与专家系统曾取得过许多令人注目的成果,也走过不少弯路,经历过不少挫折。近几年来,随着计算机及网络技术的迅猛发展,特别是因特网的大规模普及,人工智能与专家系统的研究再度活跃起来,并正向更为广阔的领域发展。围绕人工智能与专家系统的研究和应用开发也迎来一个蓬勃发展的新时期。因此,引进与消化国际上已经广泛流行的功能强大和通用的智能程序设计语言、工具与环境,对于中国开发智能化应用系统十分必要。鉴于国内已有许多用户在使用VisualProlog,而这方面的中文资料比较缺乏,我们编写了本书,系统介绍了基于VisualProlog的AI程序设计的功能特点、编程方法与技术,相信对于开发智能化软件有启迪作用,也希望对国内在这一领域的教学、研究及智能化应用水平的提高起到良好的促进作用,且有益于国内同行在这一领域与国际主流保持一致。

图书目录

目 录

第1部分 基础知识

第1章 人工智能概述 2

1.1 人工智能的概念 2

1.1.1 人工智能 2

1.1.2 为什么要研究人工智能 3

1.1.3 人类智能的计算机模拟 4

1.2 人工智能的研究目标 7

1.3 人工智能研究的基本内容及特点 9

1.3.1 人工智能研究的基本内容 9

1.3.2 人工智能的研究途径与方法 10

1.3.3 人工智能研究的主要特点 12

1.4 人工智能的研究领域 14

1.4.1 经典的人工智能研究领域 14

1.4.2 基于脑功能模拟的领域划分 24

1.4.3 基于实现技术的领域划分 28

1.4.4 基于应用领域的领域划分 28

1.4.5 基于应用系统的领域划分 33

1.4.6 基于计算机系统结构的领域划分 34

1.4.7 基于实现工具与环境的领域划分 35

1.5 人工智能的基本技术 35

1.5.1 推理技术 35

1.5.2 搜索技术 36

1.5.3 知识表示与知识库技术 37

1.5.4 归纳技术 37

1.5.5 联想技术 37

1.6 人工智能的产生与发展 38

1.6.1 人工智能学科的产生 38

1.6.2 符号主义学派 38

1.6.3 连接主义学派 40

1.6.4 人工智能的发展趋势 41

1.6.5 中国人工智能的研究与发展 42

本章小结 42

习题1 44第2章 知识表示方法 45

2.1 知识的基本概念 45

2.1.1 知识层次 45

2.1.2 知识的属性 46

2.1.3 知识分类 47

2.1.4 知识表示 48

2.2 一阶谓词逻辑表示法 51

2.2.1 命题与真值 51

2.2.2 论域和谓词 51

2.2.3 谓词公式与量词 52

2.2.4 谓词逻辑表示方法 53

2.2.5 谓词逻辑表示方法的BNF描述 54

2.2.6 谓词逻辑表示方法的特点 54

2.3 产生式表示法 55

2.3.1 产生式 55

2.3.2 产生式系统 56

2.3.3 产生式表示法的特点 61

2.3.4 产生式表示法与其他知识表示方法的比较 61

2.4 语义网络表示法 62

2.4.1 语义网络的基本结构 62

2.4.2 语义网络的知识表示 62

2.4.3 语义网络与Prolog 64

2.4.4 语义网络的求解流程 65

2.4.5 基本的语义关系 65

2.4.6 语义网络表示法的特点 67

2.4.7 语义网络法与其他知识表示方法的比较 67

2.5 框架表示法 68

2.5.1 框架的基本结构 68

2.5.2 框架的BNF描述 70

2.5.3 框架系统中的预定义槽名 71

2.5.4 框架系统的问题求解过程 72

2.5.5 框架系统的程序语言实现 73

2.5.6 框架系统的特点 73

2.6 脚本表示法 73

2.6.1 概念依赖理论 74

2.6.2 脚本的结构 74

2.6.3 脚本的推理 75

2.6.4 脚本表示法的特点 76

2.7 过程表示法 76

2.7.1 表示知识的方法 77

2.7.2 过程表示的问题求解过程 78

2.7.3 过程表示的特点 79

2.7.4 过程性与说明性表示方法的比较 79

2.8 Petri网表示法 79

2.8.1 Petri网的基本概念 80

2.8.2 表示知识的方法 80

2.8.3 Petri网表示法的特点 81

2.9 面向对象表示法 81

2.9.1 面向对象的基本概念 81

2.9.2 面向对象的基本特征 83

2.9.3 面向对象的知识表示 83

2.9.4 面向对象表示方法的特点 84

2.10 状态空间表示法 85

2.11 问题归约表示法 85

本章小结 86

习题2 86第3章 AI编程基础 88

3.1 命题逻辑 88

3.1.1 命题 88

3.1.2 命题定律 90

3.1.3 范式 92

3.1.4 命题逻辑的推论规则 94

3.1.5 命题逻辑的局限性 94

3.2 一阶谓词逻辑 95

3.2.1 谓词 95

3.2.2 量词 96

3.2.3 谓词逻辑的合式公式 97

3.2.4 自由变元与约束变元 97

3.2.5 谓词公式的解释 98

3.2.6 含有量词的等价式和蕴含式 99

3.2.7 谓词逻辑中的推论规则 101

3.2.8 谓词公式的范式与斯柯林标准形 102

3.3 产生式系统 104

3.3.1 产生式系统的基本组成 104

3.3.2 产生式系统的基本过程 106

3.3.3 基于产生式系统的具体问题建模 107

3.3.4 产生式系统的类型 108

3.3.5 产生式系统的搜索策略 109

3.3.6 两种典型的产生式系统 112

3.4 专家系统 117

3.4.1 专家系统的概念与组成 117

3.4.2 专家系统的类型 120

3.4.3 专家系统的特点 122

3.4.4 专家系统的开发工具 123

3.4.5 新一代专家系统研究 124

本章小结 126

习题3 127

第2部分 编程指南

第4章 Visual Prolog概述 130

4.1 Visual Prolog 6概述 130

4.2 Visual Prolog 6基本特性 131

4.2.1 语言特性 131

4.2.2 图形化开发环境 132

4.2.3 编译器 132

4.2.4 链接器 132

4.2.5 调试器 132

4.3 创建项目 133

4.4 建立项目 134

4.5 浏览项目 135

4.6 开发项目 137

4.7 调试项目 140

本章小结 142

习题4 142第5章 Prolog基础 143

5.1 Horn子句逻辑 143

5.2 Prolog推理机 145

5.3 扩展家庭定理 146

5.4 Prolog是一种编程语言 147

5.5 程序控制 148

5.5.1 失败 149

5.5.2 回溯 149

5.5.3 改进家庭定理 151

5.5.4 递归 152

5.5.5 副效应 153

5.5.6 小结 154

5.6 Prolog算符 154

5.6.1 算符 155

5.6.2 深入理解算符 156

5.6.3 算符与谓词 158

5.6.4 算符作为参数 158

5.6.5 算符递归 160

5.6.6 算符使用策略 161

5.6.7 小结 161

本章小结 161

习题5 162第6章 类与对象 164

6.1 对象模型 164

6.2 类实体 165

6.3 模块 166

6.4 创建和访问对象 166

6.5 接口对象类型 167

6.6 多重实现 167

6.7 包容多态性 168

6.8 support类型扩展 168

6.9 object超类型 169

6.10 继承 169

6.11 对象体系的其他特点 171

6.12 Visual Prolog 5与Visual Prolog 6的差异 171

6.12.1 句点 171

6.12.2 谓词 171

6.12.3 谓词论域 172

6.12.4 引用论域 172

6.12.5 函数子句 172

6.12.6 常量 173

6.12.7 事实 173

6.12.8 事实变量 173

6.12.9 嵌套表达式与函数 174

6.12.10 编译器命令 174

6.12.11 条件编译 174

6.12.12 输入输出及特殊论域 175

6.12.13 省略与匿名参数类型 175

6.12.14 对象与类 176

6.12.15 库支持 176

本章小结 180

习题6 180第7章 Visual Prolog编程 182

7.1 Visual Prolog基础 182

7.1.1 程序结构 182

7.1.2 目标 184

7.1.3 文件考虑 185

7.1.4 作用域访问 185

7.1.5 面向对象 186

7.1.6 一个完整的例子:family1.prj6 186

7.1.7 程序的取舍 192

7.1.8 小结 193

7.2 Visual Prolog的GUI编程 193

7.2.1 GUI概述 194

7.2.2 GUI对事件的响应 195

7.2.3 开始一个GUI项目 195

7.2.4 创建模态对话框 196

7.2.5 修改菜单 200

7.2.6 修改工具栏 202

7.2.7 在程序中添加主代码 204

7.2.8 压缩相关代码 206

7.2.9 分析所做的工作 209

7.2.10 运行程序 211

7.2.11 小结 212

7.3 Visual Prolog的逻辑层 212

7.3.1 初始准备阶段 212

7.3.2 创建业务逻辑层 212

7.3.3 在业务逻辑层上工作 213

7.3.4 创建业务逻辑类 214

7.3.5 理解业务逻辑类 217

7.3.6 连接业务逻辑层到GUI 217

7.3.7 理解事件处理程序 220

7.3.8 运行代码 221

7.3.9 细节考虑 221

7.3.10 小结 221

7.4 Visual Prolog的数据层 222

7.4.1 基本概念 222

7.4.2 程序 222

7.4.3 非模态对话框 225

7.4.4 FamilyData包 226

7.4.5 接口 226

7.4.6 FamilyDL包 227

7.4.7 FamilyDL包的代码 228

7.4.8 FamilyBLL包的代码 229

7.4.9 数据层的特征 230

7.4.10 小结 231

本章小结 231

习题7 231第8章 编写CGI程序 232

8.1 概述 232

8.2 编写CGI程序基础 232

8.2.1 公共网关接口 232

8.2.2 CGI程序 235

8.2.3 测试CGI程序 238

8.2.4 用Visual Prolog 6创建CGI程序 239

8.2.5 测试example1 241

8.2.6 应用程序功能分析 242

8.2.7 输入流分析 242

8.3 编写实用的CGI应用程序 242

8.3.1 将信息从HTML文件传输至CGI程序 242

8.3.2 解释信息流的高级CGI应用程序 244

8.3.3 信息从网络服务器到浏览器的传输 246

8.3.4 CGI应用程序简评 247

8.3.5 取代CGI程序的候选方案 247

8.3.6 加速CGI应用程序 247

8.3.7 CGI程序的客户端 247

8.3.8 使用Javascript对象的高级CGI应用程序 249

8.3.9 安全性问题 251

8.3.10 防止CGI程序被盗链 252

8.3.11 小结 253

8.4 CGI应用程序测试实例 253

8.4.1 安装TinyWeb网络服务器 253

8.4.2 TinyWeb的根目录 254

8.4.3 TinyWeb的端口 254

8.4.4 调试例子程序 254

8.4.5 用其他网络服务器运行例子程序 254

本章小结 254

习题8 255第9章 编码风格 256

9.1 基本元素 256

9.1.1 关键字 256

9.1.2 半关键字 256

9.1.3 文字 257

9.1.4 标识符 257

9.1.5 常量 257

9.1.6 变量 257

9.1.7 谓词 257

9.1.8 论域 258

9.1.9 类和接口 258

9.2 推荐格式 258

9.2.1 折行 258

9.2.2 缩排 259

9.2.3 对齐 259

9.2.4 空格字符 259

9.3 程序结构 259

9.3.1 段 259

9.3.2 类、接口及实现 260

9.3.3 谓词声明 260

9.3.4 论域 260

9.3.5 子句 261

9.3.6 不确定性循环 261

9.3.7 Word格式化代码 261

9.4 程序设计语用学 262

9.4.1 常规技巧 262

9.4.2 布尔值 263

9.4.3 截断 263

9.4.4 红色截断和绿色截断 264

9.4.5 指派输入格式 265

9.4.6 异常和错误处理 266

9.4.7 内部错误和其他错误 266

9.5 存储管理 267

9.5.1 存储器 267

9.5.2 运行堆栈 267

9.5.3 尾部调用优化 268

9.5.4 运行栈耗尽 268

9.5.5 全局栈 268

9.5.6 G-堆栈耗尽 268

9.5.7 堆和垃圾回收 269

9.5.8 垃圾回收 269

9.5.9 Finalizers 270

9.5.10 数据在什么地方分配 270

9.5.11 堆中数据 270

9.5.12 多线程和存储 271

9.6 异常处理 271

9.6.1 如何捕获异常 271

9.6.2 如何构造自己的异常 273

9.6.3 如何继续另一个异常 274

本章小结 276

习题9 276

第3部分 语言参考

第10章 Visual Prolog语言元素 280

10.1 类型 280

10.2 对象系统 281

10.2.1 外部视图 281

10.2.2 内部视图 282

10.3 作用域和可视性 283

10.3.1 名字分类 283

10.3.2 可视性、隐蔽性及限定性 285

10.4 词法结构 286

10.4.1 程序单元 286

10.4.2 标记 287

10.4.3 文字 289

本章小结 291

习题10 291第11章 Visual Prolog数据元素 292

11.1 论域段 292

11.1.1 类型名 292

11.1.2 复合论域 293

11.1.3 列表论域 295

11.1.4 引用论域 296

11.1.5 谓词论域 296

11.1.6 整型论域 301

11.1.7 实型论域 302

11.2 通用类型和根类型 303

11.2.1 通用类型 303

11.2.2 根类型 304

本章小结 304

习题11 304第12章 Visual Prolog程序元素 305

12.1 项 305

12.1.1 项的基本概念 305

12.1.2 运算符 306

12.1.3 类成员访问 307

12.1.4 对象成员访问 308

12.1.5 全局实体的访问 308

12.1.6 论域、算符和常量访问 308

12.2 常量 308

12.2.1 常量段 308

12.2.2 常量定义 309

12.3 谓词 309

12.3.1 谓词段 309

12.3.2 构造段 310

12.3.3 接口谓词 311

12.3.4 变元 313

12.4 子句 313

12.4.1 子句段 313

12.4.2 目标段 314

12.5 事实 315

12.5.1 事实段 315

12.5.2 事实声明 315

12.5.3 事实变量 316

12.5.4 事实 316

12.6 评估 317

12.6.1 回溯 317

12.6.2 谓词调用 317

12.6.3 合一 318

12.6.4 引用论域 319

12.6.5 匹配 319

12.6.6 嵌套的函数调用 320

12.6.7 变量与常量 320

12.6.8 算术表达式 321

12.6.9 事实断言与撤销 322

12.6.10 失败谓词和成功谓词 322

12.6.11 逻辑与 322

12.6.12 逻辑或 322

12.6.13 逻辑非 323

12.6.14 截断 323

12.6.15 谓词finally/2 324

12.7 程序段 325

本章小结 325

习题12 326第13章 编译单元 327

13.1 接口 327

13.1.1 接口的基本概念 327

13.1.2 接口与对象 328

13.1.3 开放限定 328

13.1.4 支持限定 329

13.2 类声明 330

13.3 类实现 332

13.3.1 类实现的基本概念 332

13.3.2 继承限定 334

13.3.3 归结限定 334

13.3.4 委托限定 337

13.3.5 This修饰 339

13.3.6 构造器 341

13.3.7 终结 344

13.4 类型转换 345

13.4.1 隐式转换 345

13.4.2 显式转换 346

13.5 条件编译 349

13.6 异常处理 349

13.7 预处理程序指令 350

13.7.1 条件编译指令 350

13.7.2 源文件包含 351

13.7.3 编译时间信息 351

本章小结 353

习题13 354第14章 内部论域、谓词和常量 355

14.1 概述 355

14.2 内部常量详解 357

14.3 内部论域详解 358

14.4 内部谓词详解 363

本章小结 380

习题14 380第15章 与其他编程语言接口 381

15.1 外部代码 381

15.2 关键问题 381

15.3 调用约定和链接名 382

15.4 数据表示 383

15.4.1 举例 383

15.4.2 外部链接库 384

15.5 存储管理 385

15.5.1 典型解决方案 385

15.5.2 垃圾收集和全局堆栈 386

15.6 Win32 API函数 386

本章小结 388

习题15 388附录 术语表 389

A 389

B 390

C 391

D 394

E 396

F 397

G 398

H 399

I 399

K 401

L 401

M 402

N 403

O 404

P 405

R 407

S 408

T 411

U 412

V 413参考文献 414XVIII

目 录XIX

目 录