【计算理论】计算理论总结 ( 图灵机设计 ) ★★
文章目錄
- 一、圖靈機
- 二、圖靈機設計
- 三、圖靈機設計示例 1
一、圖靈機
圖靈機要素 :
① 有限多狀態集 , Q\rm QQ ;
② 有限多個字符集 , Σ\rm \SigmaΣ ;
③ 帶子字符集 , Γ\rm \GammaΓ , 包含 Σ\rm \SigmaΣ ;
④ 轉換函數 , 即指令集 , δ\deltaδ ;
⑤ 開始狀態 , q0\rm q_0q0? , 包含在 Q\rm QQ 中 ;
⑥ 空白字符 , u\rm uu , 包含在 Γ?Σ\rm \Gamma - \SigmaΓ?Σ ( 相對補集 ) 集合中 ;
⑦ 一些接受狀態 , F\rm FF , 其中 F?Q\rm F \subseteq QF?Q ;
指令與轉換函數 : 圖靈機是根據指令進行計算的 , 指令 是一個 轉換函數 δ\rm \deltaδ ;
轉換函數 δ\rm \deltaδ 兩個輸入參數 :
- 參數一 : 狀態 q\rm qq , 該狀態是 Q\rm QQ 中的元素 , q∈Qq \in\rm Qq∈Q ;
- 參數二 : 帶子字符 ZZZ , 該字符是 Γ\rm \GammaΓ 集合中的元素 , Z∈Γ\rm Z \in \GammaZ∈Γ ;
轉換函數 δ\rm \deltaδ 輸出是一個三元組 :
- 輸出一 : 狀態 p\rm pp ;
- 輸出二 : 帶子字符 Y\rm YY ;
- 輸出三 : 方向 D\rm DD , 向左或向右 , 讀取頭下面要移動的方向 ;
指令 δ\rm \deltaδ 表示的含義解析 :
δ(q,Z)=(p,Y,D)\rm \delta(q, Z) = (p, Y, D)δ(q,Z)=(p,Y,D) 轉換函數 , 其中 q,Z\rm q,Zq,Z 是兩個輸入 , p,Y,D\rm p, Y, Dp,Y,D 是三個輸出 ,
開始時圖靈機的 狀態是 q\rm qq 狀態 , 讀取頭指向的字符是 Z\rm ZZ ,
執行該轉換函數 δ\rm \deltaδ , 會將 狀態轉變為 p\rm pp 狀態 , 將 讀取頭指向的帶子上的字符 Z\rm ZZ 擦除 , 并改為 Y\rm YY , 然后 沿著 D\rm DD 方向 , 移動一格單位 ;
其中 D\rm DD 方向可以是 L\rm LL 向左移動 , 也可以是 R\rm RR 向右移動 ;
格局 Configuration , 格局是給圖靈機照一個 快照 , 下圖就是圖靈機在計算過程中 , 某一個時刻的快照 ;
將圖靈機計算過程 , 每個步驟都照一份快照 , 通過軌跡將這些快照聯系到一起 , 就可以得到一個數據結構 ,
上述格局可以記作 00q1B\rm 00q1B00q1B , 該寫法表示 與 某個格局 ( 快照 ) 一一對應 ;
在 圖靈機中 , 讀頭指向 111 , 就將狀態寫在 111 的左邊 ;
二、圖靈機設計
圖靈機的設計很復雜 , 一般情況下 , 不需要設計出圖靈機的具體的指令 ,
只需要 使用語言描述圖靈機的讀寫頭在帶子上的操作 即可 ;
設計圖靈機 , 只需要 將圖靈機描述出來 即可 ;
證明問題屬于 P\rm PP , 只需要將問題使用圖靈機判定的過程描述出來 , 計算出該問題的時間復雜度的數量級 ;
三、圖靈機設計示例 1
給定語言 : A={0k1k:k≥0}\rm A = \{ 0^k1^k : k \geq 0 \}A={0k1k:k≥0} , 設計出該語言對應的圖靈機 ;
M1\rm M_1M1? 圖靈機算法設計如下 : 算法的描述是雙引號 “” 中的內容 , 這是操作意義上的圖靈機 , 只描述圖靈機讀頭操作 , 沒有必要將圖靈機指令整體設計出來 ;
M1=\rm M_1 =M1?= "在長度為 n\rm nn 的字符串 w\rm ww 上進行如下計算 :
① 掃描整個帶子上的字符串 , 查看 000 和 111 的順序 , 所有的 000 必須在所有的 111 前面 ; 如果順序錯誤 , 進入拒絕狀態 ;
② 掃描整個帶子 , 遇到一個 000 , 就劃掉一個 111 ; 如果帶子上存在 000 和 111 , 該操作重復進行 ;
③ 如果最后只剩下 000 或只剩下 111 , 說明 兩個數字的個數不等 , 進入拒絕狀態 ; 如果最后帶子上只剩下空白字符 , 說明兩個數字個數相等 , 進入接受狀態 ; "
總結
以上是生活随笔為你收集整理的【计算理论】计算理论总结 ( 图灵机设计 ) ★★的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算理论总结 ( 上下文无关
- 下一篇: 【计算理论】计算理论总结 ( 图灵机设计