自動機理論、語言和計算導論 (原書第3版·典藏版) Introduction to Automata Theory, Languages, and Computation, 3/e

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

買這商品的人也買了...

商品描述

本書是關於形式語言、自動機理論和計算複雜性方面的經典之作。
書中涵蓋了有窮自動機、正則表達式與語言、正則語言的性質、
上下文無關文法及上下文無關語言、下推自動機、
上下文無關語言的性質、圖靈機、不可判定性以及難解問題等內容。
本書在定義和證明中使用了很多細節和直觀說明,使用圖來幫助闡明思想,
並包含了大量的難度各異的示例和習題,以便讀者確認和加深對內容的理解。
本書已被世界許多大學作為計算機理論課程的教材或教學參考書,
適合作為高校計算機專業高年級本科生及研究生的教材,
還可供從事理論計算工作的研究人員參考。

作者簡介

John E. Hopcroft
1986年圖靈獎獲得者、美國國家工程院院士、美國國家科學院院士、
美國國家藝術與科學院院士、中國科學院外籍院士、美國康奈爾大學教授。
他的研究興趣集中在計算理論方面,尤其是算法分析、自動機理論等。
他和Jeffrey D. Ullman一起獲得2010年IEEE頒發的約翰·馮諾依曼獎,
以表彰其“為自動機和語言理論領域奠定基礎,以及對理論計算機科學的許多開創性貢獻”。

Rajeev Motwani
斯坦福大學計算機科學系教授。
他的研究興趣包括數據庫、數據挖掘、Web搜索和信息檢索、機器人等。
他於2009年6月意外身亡,享年47歲。

Jeffrey D. Ullman
 2020年圖靈獎獲得者、美國國家工程院院士、斯坦福大學計算機科學系名譽教授。
他的研究興趣包括數據庫理論、數據庫集成、數據挖掘、理論計算等。
他和John E. Hopcroft一起獲得2010年IEEE頒發的約翰·馮諾依曼獎,
以表彰其“為自動機和語言理論領域奠定基礎,以及對理論計算機科學的許多開創性貢獻”。

目錄大綱

譯者序
前言
第1章 自動機:方法與體驗 1
1.1 為什麼研究自動機理論 1
1.1.1 有窮自動機簡介 1
1.1.2 結構表示法 3
1.1.3 自動機與復雜性 3
1.2 形式化證明簡介 3
1.2.1 演繹證明 4
1.2.2 求助於定義 6
1.2.3 其他定理形式 7
1.2.4 表面上不是“如果-則”命題的
定理 9
1.3 其他的證明形式 9
1.3.1 證明集合等價性 9
1.3.2 逆否命題 10
1.3.3 反證法 12
1.3.4 反例 12
1.4 歸納證明 13
1.4.1 整數上的歸納法 13
1.4.2 更一般形式的整數歸納法 16
1.4.3 結構歸納法 16
1.4.4 互歸納法 18
1.5 自動機理論的中心概念 19
1.5.1 字母表 19
1.5.2 串 20
1.5.3 語言 21
1.5.4 問題 21
1.6 小結 23
1.7 參考文獻 24
第2章 有窮自動機 25
2.1 有窮自動機的非形式化描述 25
2.1.1 基本規則 26
2.1.2 協議 26
2.1.3 允許自動機忽略動作 27
2.1.4 整個系統成為一個自動機 29
2.1.5 用乘積自動機驗證協議 30
2.2 確定型有窮自動機 30
2.2.1 確定型有窮自動機的定義 31
2.2.2 DFA如何處理串 31
2.2.3 DFA的簡化記號 32
2.2.4 把轉移函數擴展到串 33
2.2.5 DFA的語言 35
2.2.6 習題 35
2.3 非確定型有窮自動機 37
2.3.1 非確定型有窮自動機的非形式化觀點 37
2.3.2 非確定型有窮自動機的定義 38
2.3.3 擴展轉移函數 39
2.3.4 NFA的語言 39
2.3.5 確定型有窮自動機與非確定型有窮自動機的等價性 40
2.3.6 子集構造的壞情形 43
2.3.7 習題 45
2.4 應用:文本搜索 46
2.4.1 在文本中查找串 46
2.4.2 文本搜索的非確定型有窮自動機 46
2.4.3 識別關鍵字集合的DFA 47
2.4.4 習題 49
2.5 帶e 轉移的有窮自動機 49
2.5.1 e 轉移的用途 49
2.5.2 e-NFA的形式化定義 50
2.5.3 e 閉包 51
2.5.4 e-NFA的擴展轉移和語言 52
2.5.5 消除 e 轉移 53
2.5.6 習題 54
2.6 小結 55
2.7 參考文獻 55
第3章 正則表達式與正則語言 57
3.1 正則表達式 57
3.1.1 正則表達式運算符 57
3.1.2 構造正則表達式 59
3.1.3 正則表達式運算符的優先級 60
3.1.4 習題 61
3.2 有窮自動機和正則表達式 61
3.2.1 從DFA到正則表達式 62
3.2.2 通過消除狀態把DFA轉化為正則表達式 65
3.2.3 把正則表達式轉化為自動機 69
3.2.4 習題 72
3.3 正則表達式的應用 73
3.3.1 UNIX中的正則表達式 73
3.3.2 詞法分析 74
3.3.3 查找文本中的模式 76
3.3.4 習題 77
3.4 正則表達式代數定律 77
3.4.1 結合律與交換律 78
3.4.2 單位元與零元 78
3.4.3 分配律 79
3.4.4 冪等律 79
3.4.5 與閉包有關的定律 79
3.4.6 發現正則表達式定律 80
3.4.7 檢驗正則表達式代數定律 81
3.4.8 習題 82
3.5 小結 83
3.6 參考文獻 84
第4章 正則語言的性質 85
4.1 證明語言的非正則性 85
4.1.1 正則語言的泵引理 85
4.1.2 泵引理的應用 87
4.1.3 習題 88
4.2 正則語言的封閉性 89
4.2.1 正則語言在布爾運算下的封閉性 89
4.2.2 反轉 93
4.2.3 同態 94
4.2.4 逆同態 96
4.2.5 習題 99
4.3 正則語言的判定性質 102
4.3.1 在各種表示之間轉化 102
4.3.2 測試正則語言的空性 104
4.3.3 測試正則語言的成員性 104
4.3.4 習題 105
4.4 自動機的等價性和小化 105
4.4.1 測試狀態的等價性 105
4.4.2 測試正則語言的等價性 107
4.4.3 DFA小化 108
4.4.4 為什麼不能比小DFA更小 110
4.4.5 習題 111
4.5 小結 112
4.6 參考文獻 112
第5章 上下文無關文法及上下文無關語言 115
5.1 上下文無關文法 115
5.1.1 一個非形式化的例子 115
5.1.2 上下文無關文法的定義 116
5.1.3 使用文法來推導 118
5.1.4 左推導和右推導 119
5.1.5 文法的語言 120
5.1.6 句型 121
5.1.7 習題 122
5.2 語法分析樹 124
5.2.1 構造語法分析樹 124
5.2.2 語法分析樹的產生 125
5.2.3 推理、推導和語法分析樹 125
5.2.4 從推理到樹 126
5.2.5 從樹到推導 127
5.2.6 從推導到遞歸推理 129
5.2.7 習題 131
5.3 上下文無關文法的應用 131
5.3.1 語法分析器 131
5.3.2 語法分析器生成器YACC 133
5.3.3 標記語言 134
5.3.4 XML和文檔類型定義 135
5.3.5 習題 140
5.4 文法和語言的歧義性 141
5.4.1 歧義文法 141