索引 / 001 ZH-TW
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章,否則另用複雜性教材。

認真做習題,並且對每一種模型(有限自動機、文法、下推自動機、圖靈機),手寫一個小例子,再把它轉換成書中接下來講的等價模型。