索引 / 001 ZH-CN
Introduction to Automata Theory, Languages, and Computation(自动机理论、语言和计算导论) cover

计算机科学

计算机科学

Introduction to Automata Theory, Languages, and Computation(自动机理论、语言和计算导论)

John E. Hopcroft; Rajeev Motwani; Jeffrey D. Ullman

英文原名: Introduction to Automata Theory, Languages, and Computation

一部计算理论的经典教材,讲述有限自动机、上下文无关文法、图灵机以及不可判定性和难解性的基础。第3版保留了原著的严谨处理,同时增加了例题和实际应用的动机,至今仍是该领域的标准参考书。

需要的基础: 修过涵盖集合、关系、归纳法和证明技巧的离散数学课程,并有一定编程经验以理解其应用。

难度等级
中级
学术层次
本科
automataformal languagescomputabilitycomplexitytheory of computation教科书

01 / 导读

导读

引用

Hopcroft, J. E., Motwani, R., & Ullman, J. D. (2006). Introduction to Automata Theory, Languages, and Computation (3rd ed.). Pearson.

章节概要

第3版约535页,共11章,所以各章篇幅较长:讲这门学科的方法的第一章约36页,讲有限自动机的第二章约48页。本书源自 Hopcroft 和 Ullman 1979年的教材;第2版(2000年)起 Motwani 加入,第3版于2006年出版。Pearson 称这一版经过更新,以简明直接的方式呈现理论概念,并增加了动手的、实用的应用,并且最初附带 Gradiance 这一在线评测工具,Pearson 说它现在已不再随书提供。章节顺序遵循这一学科的惯常路线:先是正则语言,然后是上下文无关语言,最后是图灵机、不可判定性和难解性。

第1章:自动机:方法与疯狂

约36页的导引章节,在定义第一个模型之前先搭起这门学科的框架。

第2章:有限自动机

作为计算的第一个也是最简单的模型的有限自动机,约48页,是开头几章中最长的一章。Google Books 为本书列出的高频词包括非确定性自动机,以及“e-NFA”,即带有空串转移的非确定性扩展形式。

第3章:正则表达式与正则语言

正则表达式及其所描述的语言,从第85页开始。

第4章:正则语言的性质

正则语言的性质,是书中标题含“性质”的两章中的第一章。

第5章:上下文无关文法与语言

文法作为描述语言的第二种方式;推导和语法分析树是书中反复出现的术语。

第6章:下推自动机

与上下文无关文法相对应的机器,其中包括确定性下推自动机(DPDA),它出现在正文的高频词中。

第7章:上下文无关语言的性质

针对上下文无关语言的、与第4章相对应的一章。

第8章:图灵机导论

作为一般计算模型的图灵机,也是后面各章的起点。

第9章:不可判定性

任何算法都无法解决的问题。Google Books 列出的高频词包括修改的波斯特对应问题(MPCP)。

第10–11章:难解问题;其他问题类

原则上可解、但无法高效求解的问题,以及随后讲更多问题类的收尾一章。Google Books 列出的高频词包括多项式时间归约、3SAT、co-NP 和哈密顿回路问题。

核心概念

第1–4章:正则语言

  • 有限自动机:第一个计算模型,先于文法和机器来讲。
  • 正则表达式:描述同一类语言的记号。
  • 正则语言的性质:封闭性与判定问题。

第5–7章:上下文无关语言

  • 上下文无关文法与语言。
  • 下推自动机:带栈的有限自动机。
  • 上下文无关语言的性质。

第8–11章:可计算性与复杂性

  • 图灵机:一般的计算模型。
  • 不可判定性:任何算法都解决不了的问题。
  • 难解问题与其他问题类:高效计算的界限。

评析

优点

  • 十一章走完一条完整的路线。 目录从有限自动机经上下文无关语言和图灵机,一直到不可判定性和难解性,所以一本书就覆盖了一门本科课程的全部内容。
  • 包含难解性。 第10章和第11章讲难解问题和更多的问题类,而 Kozen 的章节列表止于可计算性。
  • 提法力求易懂。 Pearson 强调简明直接的呈现和实用的应用。
  • 长期积累。 1979年到2006年间的三个版本,始终由 Hopcroft 和 Ullman 担任作者,使它成为这一领域有影响的教材。

局限

  • 高深的理论比旧版少。 关于本书历史的记述指出,从第2版开始,应用部分得到扩充,一些较高深的理论被删去。需要1979年版更深内容的课程,要另配教材。
  • 章节较长。 开头几章有36到48页,与由许多短章组成的教材相比,模块性较弱。
  • 随书的在线工具已不存在。 第3版附带的 Gradiance 已不再受 Pearson 支持,围绕它搭建的作业系统无法使用。

在课程中的定位

这是关于形式语言、自动机和可计算性的、篇幅较大的经典教材,最直接的比较对象是 Sipser 的 Introduction to the Theory of Computation,后者同样是清晰的高年级入门书,涵盖自动机、形式语言、可计算性和复杂性。两本都可以作主教材。Kozen 的 Automata and Computability 是由短章组成的更紧凑的替代选择,讲到了 Kleene 代数、哥德尔定理等话题,但止于复杂性之前。

Linz 和 Rodger 的 An Introduction to Formal Languages and Automata 把讲解和例子置于形式化之前,适合想要更多解释的学生作为配套。MacCormick 的 What Can Be Computed? 通过 Python 程序来讲同样的理论,Arora 和 Barak 的 Computational Complexity 则是第10章、第11章之后的研究生层次的延伸。

如何使用本书

Pearson 的页面没有说明先修要求;集合、关系、归纳法和证明是合理的背景,编程经验有助于理解书中的实用动机。

一个实用的读法:

  • 核心: 第1–4章讲正则语言,第5–6章讲上下文无关文法和下推自动机,第8–9章讲图灵机和不可判定性。
  • 初读从简: 第4章和第7章这两个“性质”章节,初读时可以读得轻一些,等熟悉证明技巧后再回来。
  • 选读: 如果课程包括复杂性,就读第10章和第11章,否则另用复杂性教材。

认真做习题,并且对每一种模型(有限自动机、文法、下推自动机、图灵机),手写一个小例子,再把它转换成书中接下来讲的等价模型。