【计算理论】图灵机 ( 非确定性图灵机 | 非确定性图灵机指令分析 | 计算过程 | 非确定性指令出现多个分支 | 非确定性图灵机转为计算树 | 计算树 )
文章目錄
- 一、非確定性圖靈機
- 二、非確定性圖靈機 指令
- 三、非確定性圖靈機 計算示例 初始狀態
- 四、計算步驟 1
- 五、計算步驟 2
- 六、計算步驟 3 ( 出現非確定性分支 )
- 七、計算步驟 3-1 ( 分支 1 )
- 八、計算步驟 3-2 ( 分支 2 )
- 九、計算步驟 3-1-1 ( 第 3 步分支 1 后面 1 步 )
- 十、計算步驟 3-2-1 ( 第 3 步分支 2 后面 1 步 )
- 十一、計算樹
一、非確定性圖靈機
向非確定性圖靈機中輸入字符串 , 每次的后續操作 , 不是唯一的 , 有很多可能性 ;
二、非確定性圖靈機 指令
非確定性圖靈機計算 :
下圖中的指令 “0→1,R\rm 0 \to 1, R0→1,R” 含義 :
讀寫頭操作 : 如果當前 處于 q0\rm q_0q0? 狀態 , 讀寫頭指向 000 字符 , 將 000 字符擦除 修改為 111 字符 ;
狀態改變 : 當前狀態修改為 q0\rm q_0q0? 狀態 ;
讀寫頭移動方向 : R\rm RR , Right , 讀寫頭向右移動 ;
下圖中的指令 “1→0,R\rm 1 \to 0, R1→0,R” 含義 :
讀寫頭操作 : 如果當前 處于 q0\rm q_0q0? 狀態 , 讀寫頭指向 111 字符 , 將 111 字符擦除 修改為 000 字符 ;
狀態改變 : 當前狀態修改為 q1\rm q_1q1? 狀態 ;
讀寫頭移動方向 : R\rm RR , Right , 讀寫頭向右移動 ;
三、非確定性圖靈機 計算示例 初始狀態
假設向該圖靈機中輸入 w=0101\rm w = 0101w=0101 字符串 , 下面是詳細的計算過程 :
最初狀態如下 : 默認狀態 q0\rm q_0q0? , 讀寫頭指向第 111 個字符 000 字符 ; 后面的 B\rm BB 指的是空白字符 ;
格局 : q00101\rm q_0 0101q0?0101
( 格局 即 當前快照 , 狀態寫在當前 讀寫頭 指向的字符 的 左邊 )
四、計算步驟 1
當前是 q0\rm q_0q0? 狀態 , 讀到 000 字符 ;
符合條件的指令 : q0\rm q_0q0? 狀態 下執行 “0→1,R\rm 0 \to 1, R0→1,R” 指令 狀態轉為 q0\rm q_0q0? 狀態 ,
讀寫頭將 000 字符改為 111 字符 , 向右移動一格字符 ;
自動機變為如下狀態 , 格局是 1q0101\rm 1q_01011q0?101 ; ( 格局中 , 狀態寫在讀寫頭指向的字符前面 )
格局進度 :
五、計算步驟 2
當前是 q0\rm q_0q0? 狀態 , 讀到 111 字符 ;
符合條件的指令 : q0\rm q_0q0? 狀態 下執行 “1→0,R\rm 1 \to 0, R1→0,R” 指令 狀態轉為 q1\rm q_1q1? 狀態 ,
讀寫頭將 111 字符改為 000 字符 , 向右移動一格字符 ;
自動機變為如下狀態 , 格局是 10q101\rm 10q_10110q1?01 ; ( 格局中 , 狀態寫在讀寫頭指向的字符前面 )
格局進度 :
六、計算步驟 3 ( 出現非確定性分支 )
當前是 q1\rm q_1q1? 狀態 , 讀到 000 字符 ;
符合條件的指令有兩條 :
① 指令 111 : q1\rm q_1q1? 狀態 下執行 “0→0,R\rm 0 \to 0, R0→0,R” 指令 狀態轉為 q1\rm q_1q1? 狀態 ;
② 指令 222 : q1\rm q_1q1? 狀態 下執行 “0→0,L\rm 0 \to 0, L0→0,L” 指令 狀態轉為 q0\rm q_0q0? 狀態 ;
上述兩個指令 分別是 向左移動 , 向右移動 ;
七、計算步驟 3-1 ( 分支 1 )
執行指令 111 , 讀寫頭將 000 字符改為 000 字符 , 向右移動一格字符 ;
自動機變為如下狀態 , 格局是 100q11\rm 100q_11100q1?1 ; ( 格局中 , 狀態寫在讀寫頭指向的字符前面 )
格局進度 :
八、計算步驟 3-2 ( 分支 2 )
執行指令 222 , 讀寫頭將 000 字符改為 000 字符 , 向左移動一格字符 ;
自動機變為如下狀態 , 格局是 1q1001\rm 1q_10011q1?001 ; ( 格局中 , 狀態寫在讀寫頭指向的字符前面 )
格局進度 :
九、計算步驟 3-1-1 ( 第 3 步分支 1 后面 1 步 )
在 計算步驟 3-1 計算完成的基礎上 , 繼續后續計算 :
在 q1\rm q_1q1? 狀態下 , 讀取 111 字符 ;
符合條件的指令 : q1\rm q_1q1? 狀態下執行 “1→1,R\rm 1 \to 1, R1→1,R” 指令 狀態轉為 q1\rm q_1q1? 狀態 ,
自動機變為如下狀態 , 格局是 1001q1\rm 1001q_11001q1? ; ( 格局中 , 狀態寫在讀寫頭指向的字符前面 )
格局進度 :
十、計算步驟 3-2-1 ( 第 3 步分支 2 后面 1 步 )
在 計算步驟 3-2 計算完成的基礎上 , 繼續后續計算 :
當前是 q1\rm q_1q1? 狀態 , 讀到 000 字符 ;
符合條件的指令有兩條 :
① 指令 111 : q1\rm q_1q1? 狀態下執行 “0→0,R\rm 0 \to 0, R0→0,R” 指令 狀態轉為 q1\rm q_1q1? 狀態 ;
② 指令 222 : q1\rm q_1q1? 狀態下執行 “0→0,L\rm 0 \to 0, L0→0,L” 指令 狀態轉為 q0\rm q_0q0? 狀態 ;
上述兩個指令 分別是 向左移動 , 向右移動 ;
此處又要開始分支 , 就不再詳細分析了 ; 格局會如下繼續分叉 ;
十一、計算樹
非確定性圖靈機 讀取特定字符串 www , 可以生成一個 樹形的 格局的 數據結構 ; 該數據結構稱為 計算樹 ;
計算樹樣式如下 :
計算樹中 , 每個箭頭都代表一個圖靈機的計算指令步驟 ;
分析計算模型的計算復雜度時 , 需要將圖靈機的計算過程 , 轉為上圖計算樹樣式的數據結構 , 在該數據結構上可以更容易理解計算復雜度 ;
計算樹有可能出現一個分支 , 有無限長的箭頭成的計算 , 也就是說圖靈機在計算該計算樹分支的時候 , 永不停機 , 這種情況是允許出現的 ;
計算樹中還有可能出現一個分支 , 在很早的時候 , 就達到了接受狀態 , 圖靈機自動停機 ;
總結
以上是生活随笔為你收集整理的【计算理论】图灵机 ( 非确定性图灵机 | 非确定性图灵机指令分析 | 计算过程 | 非确定性指令出现多个分支 | 非确定性图灵机转为计算树 | 计算树 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】图灵机 ( 多个带子的图灵机
- 下一篇: 【计算理论】图灵机 ( 非确定性图灵机