书籍详情
自动机理论、语言和计算导论(原书第2版)
作者:(美)John E.Hopcroft,(美)Rajeev Motwani,(美)Jeffrey D.Ullman著;刘田,姜辉,王捍贫译
出版社:机械工业出版社
出版时间:2004-06-01
ISBN:9787111144526
定价:¥39.00
购买这本书可以去
内容简介
本书是关于形式语言、自动机理论和计算复杂性方面的经典之作。书中涵盖了有穷自动机、正则表达式与语言、正则语言的性质、上下文无关文法及上下文无关语言、下推自动机、上下文无关语言的性质、图灵机、不可判定性以及难解问题等内容。本书在定义和证明中使用了很多细节和直观说明,使用图来帮助阐明思想,并包含了大量的难度各异的示例和习题,以便读者确认和加深对内容的理解。本书适合作为计算机专业高年级本科生及研究生计算理论课程的教材和教学参考书。著名作者JohnHopcroft和JeffreyUllman在本书第1版出版30多年后再度合作,更新了这本经典著作,作者继续以简洁、直接的方式为读者介绍形式语言、自动机理论和计算复杂性理论。本书被世界许多著名大学作为计算理论课程的教材或推荐教学参考书,它同样适合作为计算机专业高年级本科生及研究生的教材。本书特点:形式化内容较少,使本科生更容易理解强调理论的现代应用用大量的图来帮助阐明思想在定义和证明中增加更多的细节和直观说明用特殊的文字框提供可能对读者有用的补充材料用难度各异的大量习题为读者提供更多的挑战提供PDA和图灵机的图形记号每章都包含大量的示例和习题,以帮助读者确认和加深对内容的理解
作者简介
JohnE.Hopcroft,康奈尔大学计算机科学系教授,工程学院JosephSilbert院长,康奈尔大学工程学院计算机科学主任。1986年图灵奖获得者。
目录
出版者的话
专家指导委员会
译者序
前言
第1章 自动机:方法与体验
1.1 为什么研究自动机理论
1.1.1 有穷自动机简介
1.1.2 结构表示法
1.1.3 自动机与复杂性
1.2 形式化证明简介
1.2.1 演绎证明
1.2.2 求助于定义
1.2.3 其他定理形式
1.2.4 表面上不是“如果-则”命题的定理
1.3 其他的证明形式
1.3.1 证明集合等价性
1.3.2 逆否命题
1.3.3 反证法
1.3.4 反例
1.4 归纳证明
1.4.1 整数上的归纳法
1.4.2 更一般形式的整数归纳法
1.4.3 结构归纳法
1.4.4 互归纳法
1.5 自动机理论的中心概念
1.5.1 字母表
1.5.2 串
1.5.3 语言
1.5.4 问题
1.6 小结
1.7 参考文献
第2章 有穷自动机
2.1 有穷自动机的非形式化描述
2.1.1 基本规则
2.1.2 协议
2.1.3 允许自动机忽略动作
2.1.4 整个系统成为一个自动机
2.1.5 用乘积自动机验证协议
2.2 确定型有穷自动机
2.2.1 确定型有穷自动机的定义
2.2.2 DFA如何处理串
2.2.3 DFA的简化记号
2.2.4 把转移函数扩展到串
2.2.5 DFA的语言
2.2.6 习题
2.3 非确定型有穷自动机
2.3.1 非确定型有穷自动机的非形式化观点
2.3.2 非确定型有穷自动机的定义
2.3.3 扩展转移函数
2.3.4 NFA的语言
2.3.5 确定型有穷自动机与非确定型有穷自动机的等价性
2.3.6 子集构造的坏情形
2.3.7 习题
2.4 应用:文本搜索
2.4.1 在文本中查找串
2.4.2 文本搜索的非确定型有穷自动机
2.4.3 识别关键字集合的DFA
2.4.4 习题
2.5 带e 转移的有穷自动机
2.5.1 e 转移的用途
2.5.2 e-NFA的形式化定义
2.5.3 e 闭包
2.5.4 e-NFA的扩展转移和语言
2.5.5 消除 e 转移
2.5.6 习题
2.6 小结
2.7 参考文献
第3章 正则表达式与正则语言
3.1 正则表达式
3.1.1 正则表达式运算符
3.1.2 构造正则表达式
3.1.3 正则表达式运算符的优先级
3.1.4 习题
3.2 有穷自动机和正则表达式
3.2.1 从DFA到正则表达式
3.2.2 通过消除状态把DFA转化为正则表达式
3.2.3 把正则表达式转化为自动机
3.2.4 习题
3.3 正则表达式的应用
3.3.1 UNIX中的正则表达式
3.3.2 词法分析
3.3.3 查找文本中的模式
3.3.4 习题
3.4 正则表达式代数定律
3.4.1 结合律与交换律
3.4.2 单位元与零元
3.4.3 分配律
3.4.4 幂等律
3.4.5 与闭包有关的定律
3.4.6 发现正则表达式定律
3.4.7 检验正则表达式代数定律
3.4.8 习题
3.5 小结
3.6 参考文献
第4章 正则语言的性质
4.1 证明语言的非正则性
4.1.1 正则语言的泵引理
4.1.2 泵引理的应用
4.1.3 习题
4.2 正则语言的封闭性
4.2.1 正则语言在布尔运算下的闭包
4.2.2 反转
4.2.3 同态
4.2.4 逆同态
4.2.5 习题
4.3 正则语言的判定性质
4.3.1 在各种表示之间转化
4.3.2 测试正则语言的空性
4.3.3 测试正则语言的成员性
4.3.4 习题
4.4 自动机的等价性和最小化
4.4.1 测试状态的等价性
4.4.2 测试正则语言的等价性
4.4.3 DFA最小化
4.4.4 为什么不能比最小DFA更小
4.4.5 习题
4.5 小结
4.6 参考文献
第5章 上下文无关文法及上下文无关语言
5.1 上下文无关文法
5.1.1 一个非形式化的例子
5.1.2 上下文无关文法的定义
5.1.3 使用文法来推导
5.1.4 最左推导和最右推导
5.1.5 文法的语言
5.1.6 句型
5.1.7 习题
5.2 语法分析树
5.2.1 构造语法分析树
5.2.2 语法分析树的产生
5.2.3 推理、推导和语法分析树
5.2.4 从推理到树
5.2.5 从树到推导
5.2.6 从推导到递归推理
5.2.7 习题
5.3 上下文无关文法的应用
5.3.1 语法分析器
5.3.2 语法分析器生成器YACC
5.3.3 标记语言
5.3.4 XML和文档类型定义
5.3.5 习题
5.4 文法和语言的歧义性
5.4.1 歧义文法
5.4.2 去除文法的歧义性
5.4.3 最左推导作为表达歧义性的一种方式
5.4.4 固有的歧义性
5.4.5 习题
5.5 小结
5.6 参考文献
第6章 下推自动机
6.1 下推自动机的定义
6.1.1 非形式化的介绍
6.1.2 下推自动机的形式化定义
6.1.3 PDA的图形表示
6.1.4 PDA的瞬时描述
6.1.5 习题
6.2 PDA的语言
6.2.1 以终结状态方式接受
6.2.2 以空栈方式接受
6.2.3 从空栈方式到终结状态方式
6.2.4 从终结状态方式到空栈方式
6.2.5 习题
6.3 PDA和CFG的等价性
6.3.1 从文法到PDA
6.3.2 从PDA到文法
6.3.3 习题
6.4 确定型PDA
6.4.1 确定型PDA的定义
6.4.2 正则语言与确定型PDA
6.4.3 DPDA与上下文无关语言
6.4.4 DPDA与歧义文法
6.4.5 习题
6.5 小结
6.6 参考文献
第7章 上下文无关语言的性质
7.1 上下文无关文法的范式
7.1.1 去除无用的符号
7.1.2 计算产生符号和可达符号
7.1.3 去除e产生式
7.1.4 去除单位产生式
7.1.5 乔姆斯基范式
7.1.6 习题
7.2 上下文无关语言的泵引理
7.2.1 语法分析树的大小
7.2.2 泵引理的陈述
7.2.3 CFL的泵引理的应用
7.2.4 习题
7.3 上下文无关语言的封闭性
7.3.1 代入
7.3.2 代入定理的应用
7.3.3 反转
7.3.4 与正则语言的交
7.3.5 逆同态
7.3.6 习题
7.4 CFL的判定性质
7.4.1 在CFG和PDA之间互相转化的复杂性
7.4.2 变换到乔姆斯基范式的运行时间
7.4.3 测试CFL的空性
7.4.4 测试CFL的成员性
7.4.5 不可判定的CFL问题一览
7.4.6 习题
7.5 小结
7.6 参考文献
第8章 图灵机导引
8.1 计算机不能解答的问题
8.1.1 显示“hello, world”的程序
8.1.2 假设中的“hello, world”检验程序
8.1.3 把问题归约到另一个问题
8.1.4 习题
8.2 图灵机
8.2.1 寻求判定所有数学问题
8.2.2 图灵机的记号
8.2.3 图灵机的瞬时描述
8.2.4 图灵机转移图
8.2.5 图灵机的语言
8.2.6 图灵机与停机
8.2.7 习题
8.3 图灵机的程序设计技术
8.3.1 在状态中存储
8.3.2 多道
8.3.3 子程序
8.3.4 习题
8.4 基本图灵机的扩展
8.4.1 多带图灵机
8.4.2 单带图灵机与多带图灵机的等价性
8.4.3 运行时间与多带合一构造
8.4.4 非确定型图灵机
8.4.5 习题
8.5 受限制的图灵机
8.5.1 具有半无穷带的图灵机
8.5.2 多堆栈机器
8.5.3 计数器机器
8.5.4 计数器机器的能力
8.5.5 习题
8.6 图灵机与计算机
8.6.1 用计算机模拟图灵机
8.6.2 用图灵机模拟计算机
8.6.3 比较计算机与图灵机的运行时间
8.7 小结
8.8 参考文献
第9章 不可判定性
9.1 非递归可枚举语言
9.1.1 枚举二进制串
9.1.2 图灵机编码
9.1.3 对角化语言
9.1.4 证明Ld 非递归可枚举
9.1.5 习题
9.2 是递归可枚举但不可判定的问题
9.2.1 递归语言
9.2.2 递归语言和递归可枚举语言的补
9.2.3 通用语言
9.2.4 通用语言的不可判定性
9.2.5 习题
9.3 与图灵机有关的不可判定问题
9.3.1 归约
9.3.2 接受空语言的图灵机
9.3.3 莱斯定理与递归可枚举语言的性质
9.3.4 与图灵机说明有关的问题
9.3.5 习题
9.4 波斯特对应问题
9.4.1 波斯特对应问题的定义
9.4.2 “修改过的”PCP
9.4.3 PCP不可判定性证明之完成
9.4.4 习题
9.5 其他不可判定问题
9.5.1 与程序有关的问题
9.5.2 CFG歧义性问题
9.5.3 表语言的补
9.5.4 习题
9.6 小结
9.7 参考文献
第10章 难解问题
10.1 P类和NP类
10.1.1 可在多项式时间内解答的问题
10.1.2 例子:克鲁斯卡尔算法
10.1.3 非确定型多项式时间
10.1.4 NP例子:货郎问题
10.1.5 多项式时间归约
10.1.6 NP完全问题
10.1.7 习题
10.2 NP完全问题
10.2.1 可满足性问题
10.2.2 表示SAT实例
10.2.3 SAT问题的NP完全性
10.2.4 习题
10.3 约束可满足性问题
10.3.1 布尔表达式的范式
10.3.2 把表达式转化成CNF
10.3.3 CSAT的NP完全性
10.3.4 3SAT的NP完全性
10.3.5 习题
10.4 其他的NP完全问题
10.4.1 描述NP完全问题
10.4.2 独立集问题
10.4.3 顶点覆盖问题
10.4.4 有向哈密顿回路问题
10.4.5 无向哈密顿回路与TSP
10.4.6 NP完全问题小结
10.4.7 习题
10.5 小结
10.6 参考文献
第11章 其他问题类
11.1 NP 中的语言的补
11.1.1 NP 补语言类
11.1.2 NP完全问题与 NP 补
11.1.3 习题
11.2 在多项式空间内可解决的问题
11.2.1 多项式空间图灵机
11.2.2 PS 和 NPS 与前面定义的类的关系
11.2.3 确定型多项式空间与非确定型多项式空间
11.3 对 PS 完全的问题
11.3.1 PS完全性
11.3.2 带量词的布尔公式
11.3.3 带量词的布尔公式的求值
11.3.4 QBF问题的PS完全性
11.3.5 习题
11.4 基于随机化的语言类
11.4.1 快速排序:随机算法举例
11.4.2 随机化的图灵机模型
11.4.3 随机化图灵机的语言
11.4.4 RP 类
11.4.5 识别 RP 语言
11.4.6 ZPP 类
11.4.7 RP 与 ZPP 之间的关系
11.4.8 与 P 类和 NP 类的关系
11.5 素数性测试的复杂性
11.5.1 素数性测试的重要性
11.5.2 同余算术简介
11.5.3 同余算术计算的复杂性
11.5.4 随机多项式素数性测试
11.5.5 非确定型素数性测试
11.5.6 习题
11.6 小结
11.7 参考文献
索引
专家指导委员会
译者序
前言
第1章 自动机:方法与体验
1.1 为什么研究自动机理论
1.1.1 有穷自动机简介
1.1.2 结构表示法
1.1.3 自动机与复杂性
1.2 形式化证明简介
1.2.1 演绎证明
1.2.2 求助于定义
1.2.3 其他定理形式
1.2.4 表面上不是“如果-则”命题的定理
1.3 其他的证明形式
1.3.1 证明集合等价性
1.3.2 逆否命题
1.3.3 反证法
1.3.4 反例
1.4 归纳证明
1.4.1 整数上的归纳法
1.4.2 更一般形式的整数归纳法
1.4.3 结构归纳法
1.4.4 互归纳法
1.5 自动机理论的中心概念
1.5.1 字母表
1.5.2 串
1.5.3 语言
1.5.4 问题
1.6 小结
1.7 参考文献
第2章 有穷自动机
2.1 有穷自动机的非形式化描述
2.1.1 基本规则
2.1.2 协议
2.1.3 允许自动机忽略动作
2.1.4 整个系统成为一个自动机
2.1.5 用乘积自动机验证协议
2.2 确定型有穷自动机
2.2.1 确定型有穷自动机的定义
2.2.2 DFA如何处理串
2.2.3 DFA的简化记号
2.2.4 把转移函数扩展到串
2.2.5 DFA的语言
2.2.6 习题
2.3 非确定型有穷自动机
2.3.1 非确定型有穷自动机的非形式化观点
2.3.2 非确定型有穷自动机的定义
2.3.3 扩展转移函数
2.3.4 NFA的语言
2.3.5 确定型有穷自动机与非确定型有穷自动机的等价性
2.3.6 子集构造的坏情形
2.3.7 习题
2.4 应用:文本搜索
2.4.1 在文本中查找串
2.4.2 文本搜索的非确定型有穷自动机
2.4.3 识别关键字集合的DFA
2.4.4 习题
2.5 带e 转移的有穷自动机
2.5.1 e 转移的用途
2.5.2 e-NFA的形式化定义
2.5.3 e 闭包
2.5.4 e-NFA的扩展转移和语言
2.5.5 消除 e 转移
2.5.6 习题
2.6 小结
2.7 参考文献
第3章 正则表达式与正则语言
3.1 正则表达式
3.1.1 正则表达式运算符
3.1.2 构造正则表达式
3.1.3 正则表达式运算符的优先级
3.1.4 习题
3.2 有穷自动机和正则表达式
3.2.1 从DFA到正则表达式
3.2.2 通过消除状态把DFA转化为正则表达式
3.2.3 把正则表达式转化为自动机
3.2.4 习题
3.3 正则表达式的应用
3.3.1 UNIX中的正则表达式
3.3.2 词法分析
3.3.3 查找文本中的模式
3.3.4 习题
3.4 正则表达式代数定律
3.4.1 结合律与交换律
3.4.2 单位元与零元
3.4.3 分配律
3.4.4 幂等律
3.4.5 与闭包有关的定律
3.4.6 发现正则表达式定律
3.4.7 检验正则表达式代数定律
3.4.8 习题
3.5 小结
3.6 参考文献
第4章 正则语言的性质
4.1 证明语言的非正则性
4.1.1 正则语言的泵引理
4.1.2 泵引理的应用
4.1.3 习题
4.2 正则语言的封闭性
4.2.1 正则语言在布尔运算下的闭包
4.2.2 反转
4.2.3 同态
4.2.4 逆同态
4.2.5 习题
4.3 正则语言的判定性质
4.3.1 在各种表示之间转化
4.3.2 测试正则语言的空性
4.3.3 测试正则语言的成员性
4.3.4 习题
4.4 自动机的等价性和最小化
4.4.1 测试状态的等价性
4.4.2 测试正则语言的等价性
4.4.3 DFA最小化
4.4.4 为什么不能比最小DFA更小
4.4.5 习题
4.5 小结
4.6 参考文献
第5章 上下文无关文法及上下文无关语言
5.1 上下文无关文法
5.1.1 一个非形式化的例子
5.1.2 上下文无关文法的定义
5.1.3 使用文法来推导
5.1.4 最左推导和最右推导
5.1.5 文法的语言
5.1.6 句型
5.1.7 习题
5.2 语法分析树
5.2.1 构造语法分析树
5.2.2 语法分析树的产生
5.2.3 推理、推导和语法分析树
5.2.4 从推理到树
5.2.5 从树到推导
5.2.6 从推导到递归推理
5.2.7 习题
5.3 上下文无关文法的应用
5.3.1 语法分析器
5.3.2 语法分析器生成器YACC
5.3.3 标记语言
5.3.4 XML和文档类型定义
5.3.5 习题
5.4 文法和语言的歧义性
5.4.1 歧义文法
5.4.2 去除文法的歧义性
5.4.3 最左推导作为表达歧义性的一种方式
5.4.4 固有的歧义性
5.4.5 习题
5.5 小结
5.6 参考文献
第6章 下推自动机
6.1 下推自动机的定义
6.1.1 非形式化的介绍
6.1.2 下推自动机的形式化定义
6.1.3 PDA的图形表示
6.1.4 PDA的瞬时描述
6.1.5 习题
6.2 PDA的语言
6.2.1 以终结状态方式接受
6.2.2 以空栈方式接受
6.2.3 从空栈方式到终结状态方式
6.2.4 从终结状态方式到空栈方式
6.2.5 习题
6.3 PDA和CFG的等价性
6.3.1 从文法到PDA
6.3.2 从PDA到文法
6.3.3 习题
6.4 确定型PDA
6.4.1 确定型PDA的定义
6.4.2 正则语言与确定型PDA
6.4.3 DPDA与上下文无关语言
6.4.4 DPDA与歧义文法
6.4.5 习题
6.5 小结
6.6 参考文献
第7章 上下文无关语言的性质
7.1 上下文无关文法的范式
7.1.1 去除无用的符号
7.1.2 计算产生符号和可达符号
7.1.3 去除e产生式
7.1.4 去除单位产生式
7.1.5 乔姆斯基范式
7.1.6 习题
7.2 上下文无关语言的泵引理
7.2.1 语法分析树的大小
7.2.2 泵引理的陈述
7.2.3 CFL的泵引理的应用
7.2.4 习题
7.3 上下文无关语言的封闭性
7.3.1 代入
7.3.2 代入定理的应用
7.3.3 反转
7.3.4 与正则语言的交
7.3.5 逆同态
7.3.6 习题
7.4 CFL的判定性质
7.4.1 在CFG和PDA之间互相转化的复杂性
7.4.2 变换到乔姆斯基范式的运行时间
7.4.3 测试CFL的空性
7.4.4 测试CFL的成员性
7.4.5 不可判定的CFL问题一览
7.4.6 习题
7.5 小结
7.6 参考文献
第8章 图灵机导引
8.1 计算机不能解答的问题
8.1.1 显示“hello, world”的程序
8.1.2 假设中的“hello, world”检验程序
8.1.3 把问题归约到另一个问题
8.1.4 习题
8.2 图灵机
8.2.1 寻求判定所有数学问题
8.2.2 图灵机的记号
8.2.3 图灵机的瞬时描述
8.2.4 图灵机转移图
8.2.5 图灵机的语言
8.2.6 图灵机与停机
8.2.7 习题
8.3 图灵机的程序设计技术
8.3.1 在状态中存储
8.3.2 多道
8.3.3 子程序
8.3.4 习题
8.4 基本图灵机的扩展
8.4.1 多带图灵机
8.4.2 单带图灵机与多带图灵机的等价性
8.4.3 运行时间与多带合一构造
8.4.4 非确定型图灵机
8.4.5 习题
8.5 受限制的图灵机
8.5.1 具有半无穷带的图灵机
8.5.2 多堆栈机器
8.5.3 计数器机器
8.5.4 计数器机器的能力
8.5.5 习题
8.6 图灵机与计算机
8.6.1 用计算机模拟图灵机
8.6.2 用图灵机模拟计算机
8.6.3 比较计算机与图灵机的运行时间
8.7 小结
8.8 参考文献
第9章 不可判定性
9.1 非递归可枚举语言
9.1.1 枚举二进制串
9.1.2 图灵机编码
9.1.3 对角化语言
9.1.4 证明Ld 非递归可枚举
9.1.5 习题
9.2 是递归可枚举但不可判定的问题
9.2.1 递归语言
9.2.2 递归语言和递归可枚举语言的补
9.2.3 通用语言
9.2.4 通用语言的不可判定性
9.2.5 习题
9.3 与图灵机有关的不可判定问题
9.3.1 归约
9.3.2 接受空语言的图灵机
9.3.3 莱斯定理与递归可枚举语言的性质
9.3.4 与图灵机说明有关的问题
9.3.5 习题
9.4 波斯特对应问题
9.4.1 波斯特对应问题的定义
9.4.2 “修改过的”PCP
9.4.3 PCP不可判定性证明之完成
9.4.4 习题
9.5 其他不可判定问题
9.5.1 与程序有关的问题
9.5.2 CFG歧义性问题
9.5.3 表语言的补
9.5.4 习题
9.6 小结
9.7 参考文献
第10章 难解问题
10.1 P类和NP类
10.1.1 可在多项式时间内解答的问题
10.1.2 例子:克鲁斯卡尔算法
10.1.3 非确定型多项式时间
10.1.4 NP例子:货郎问题
10.1.5 多项式时间归约
10.1.6 NP完全问题
10.1.7 习题
10.2 NP完全问题
10.2.1 可满足性问题
10.2.2 表示SAT实例
10.2.3 SAT问题的NP完全性
10.2.4 习题
10.3 约束可满足性问题
10.3.1 布尔表达式的范式
10.3.2 把表达式转化成CNF
10.3.3 CSAT的NP完全性
10.3.4 3SAT的NP完全性
10.3.5 习题
10.4 其他的NP完全问题
10.4.1 描述NP完全问题
10.4.2 独立集问题
10.4.3 顶点覆盖问题
10.4.4 有向哈密顿回路问题
10.4.5 无向哈密顿回路与TSP
10.4.6 NP完全问题小结
10.4.7 习题
10.5 小结
10.6 参考文献
第11章 其他问题类
11.1 NP 中的语言的补
11.1.1 NP 补语言类
11.1.2 NP完全问题与 NP 补
11.1.3 习题
11.2 在多项式空间内可解决的问题
11.2.1 多项式空间图灵机
11.2.2 PS 和 NPS 与前面定义的类的关系
11.2.3 确定型多项式空间与非确定型多项式空间
11.3 对 PS 完全的问题
11.3.1 PS完全性
11.3.2 带量词的布尔公式
11.3.3 带量词的布尔公式的求值
11.3.4 QBF问题的PS完全性
11.3.5 习题
11.4 基于随机化的语言类
11.4.1 快速排序:随机算法举例
11.4.2 随机化的图灵机模型
11.4.3 随机化图灵机的语言
11.4.4 RP 类
11.4.5 识别 RP 语言
11.4.6 ZPP 类
11.4.7 RP 与 ZPP 之间的关系
11.4.8 与 P 类和 NP 类的关系
11.5 素数性测试的复杂性
11.5.1 素数性测试的重要性
11.5.2 同余算术简介
11.5.3 同余算术计算的复杂性
11.5.4 随机多项式素数性测试
11.5.5 非确定型素数性测试
11.5.6 习题
11.6 小结
11.7 参考文献
索引
猜您喜欢