課程名:形式語言與自動機
作者:Lupinus_Linn
許可證:CC-BY-NC-SA 3.0 創作共用-署名-非商業性-相同方式共享
- 署名(英語:Attribution,BY):您(用戶)可以複製、發行、展覽、表演、放映、廣播或通過信息網絡傳播本作品;您必須按照作者或者許可人指定的方式對作品進行署名。
- 非商業性使用(英語:Noncommercial,NC):您可以自由複製、散佈、展示及演出本作品;您不得爲商業目的而使用本作品。
- 相同方式共享(英語:Sharealike,SA):您可以自由複製、散佈、展示及演出本作品;若您改變、轉變或更改本作品,僅在遵守與本作品相同的許可條款下,您才能散佈由本作品產生的派生作品。(參見copyleft。)
引用:
- 本文中部分文字與圖片引用自北京郵電大學計算機學院王柏教授的《形式語言與自動機》課程課件。
- 緒論中的證明方法部分引自清華大學王生原老師課件。
- 部分題目插圖引用自北京郵電大學出版社《形式語言與自動機 第二版》教材。
在此一併表示感謝,並不做商業用途。
本筆記所有內容的傳送門
Part.1緒論, Part.2 語言與文法
Part 3.有限自動機
Part.4 正則語言,2DFA,Mealy&Moore機
Part.5 上下文無關語言與下推自動機(PDA)
Part.6 圖靈機
Part.6 圖靈機
6.1 基礎
- 性質:
- 每個過程都是有窮可描述的。
- 過程是離散可執行的。
- 基本模型:
- 一個讀寫頭配一個右端無限的紙帶。讀寫頭有狀態,這些狀態屬於有限狀態集.有一個開始狀態,被接受的狀態集合是.
- 紙帶有單元格(cell),單元格上書寫帶符(tape symbol),這些帶符屬於有限帶符號集.有一個特殊帶符空白符.
- 讀寫頭每次從紙帶讀取一個符號,這些符號屬於有限輸入符號集.輸入符號的種類可能比紙帶的符號種類少(),最起碼空白符在紙帶上而不在輸入符號集裏()。
- 圖靈機可以根據狀態和輸入字符向左向右移動,並且在紙帶上寫字,這全由轉移函數決定。其含義是
- 由於圖靈機是上下文有關的,所以其格局爲,描述圖靈機(Turning Machine, TM)的瞬間工作終態。是從左端到右端空白符號爲止的內容。(因爲右端無限長)。
表示讀寫頭正在掃描的最左字符。
表示讀寫頭正在掃描空白字符。
當讀寫頭在最左邊還要求向左時,拒絕移動,仍然停留在最左端。 - 圖靈機是狀態接受的。起初有一個字符串在紙帶上,讀寫頭指向最左單元,其實狀態是,只要能在工作過程中進入某個接受狀態,則立即停機,認爲接受。
- 無法判斷圖靈機在接受某個串後是否停機,因爲很容易可以寫出死循環。停機問題是不可判定的。被接受的字符串一定會停機,不被接受的就不知道了。
6.2 圖靈機設計實例
6.2.1
- 思路:一一配對,從最左的a開始,每讀取一個a置爲無關字符x,然後到b串裏讀取最左一個b,再把b置爲,在找最左的a,循環往復。凡是在配對中找不到另一個字符的,說明或者,就立即停機,不接受。
6.2.2
- 同理,消除一個0就把1和2置爲無用字符。
6.2.3 整數函數計算
- 思路:轉化爲1進制,即把整數表示成(個0)。
- 如果一個函數有自變量,則開始時把整數挨個放置,並且中間用隔開:.
- 如果圖靈機停止(不論狀態是否接受),則帶上的結果爲的計算結果。
- 所有常用的整數算數函數都是全遞歸。
6.2.4 真減法:
- 思路:用作爲帶子,每讀一個最左端的0就置爲B,把最左端的0置爲1(不能置空,因爲在11100B中,如果變成了BBBBB,就不知道是否用完了0)。讓再回去找的0.如果有在找0遇到B,說明 ,則將所有非B的符號全部換成0,這些0有個。