【计算理论】图灵机 ( 图灵机示例 )
文章目錄
- 一、圖靈機示例
- 二、圖靈機示例 2
一、圖靈機示例
指令 L:(p,1)→(q,0,L)\rm L : (p,1) \to (q, 0, L)L:(p,1)→(q,0,L)
初始狀態(tài)下 , 狀態(tài)是 p\rm pp 讀取頭 指向的字符是 111 , 如下圖 :
執(zhí)行完 L\rm LL 指令之后 , p\rm pp 狀態(tài)變?yōu)?qqq 狀態(tài) , 讀取頭將指向的字符 111 擦除 , 改為 000 , 向左移動一個單位 ( 這里不進行移動 ) ;
左端點向左移動默認不動說明 :
一般情況下我們計算時涉及的圖靈機都是 向右無限延長的帶子 , 帶子有一個左端點 ;
當讀寫頭當前已經(jīng)指向左端點時 , 如果再向左移動 , 此時默認不進行移動 ;
二、圖靈機示例 2
任務 : 設計一個圖靈機 , 給定輸入之后 , 圖靈機會 在輸入中尋找 111 字符 ;
算法 :
如果 找到了 111 字符 , 就會將該字符轉變成 000 字符 , 然后將當前狀態(tài)改為接受狀態(tài) f\rm ff , 然后停下來 ;
如果帶子上的字符都讀取完畢后 , 沒有找到 111 , 只找到了空白字符 , 將該空白字符改為 111 , 然后向左移動一格 , 然后停下來 ;
( 自動機停下的前提是處于可接受狀態(tài) )
根據(jù)上述算法 , 構造圖靈機 ;
圖靈機設計 :
① 狀態(tài)集 Q={q,f}\rm Q = \{ q , f \}Q={q,f} , 其中 q\rm qq 是開始狀態(tài) , f\rm ff 是接受狀態(tài) ;
② 輸入字符集 Σ={0,1}\rm \Sigma = \{ 0, 1 \}Σ={0,1} ;
③ 帶子字符集 Γ={0,1,B}\rm \Gamma = \{ 0, 1, B \}Γ={0,1,B} , 其中 B\rm BB 是空白字符 ;
④ 指令 δ(q,0)=(q,0,R)\rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R)
⑤ 指令 δ(q,1)=(f,0,R)\rm \delta (q, 1) = (f, 0, R)δ(q,1)=(f,0,R)
⑥ 指令 δ(q,B)=(q,1,L)\rm \delta (q, B) = (q, 1, L)δ(q,B)=(q,1,L)
上述圖靈機設計中 , 最關鍵的部分是三條指令 ;
圖靈機處于開始狀態(tài) q\rm qq , 讀頭指向 000 字符 , 左端的 000 000 是輸入字符 , 查看圖靈機是否接受 000 000 字符串 ;
下面圖靈機后續(xù)都是 B\rm BB 空白字符 ;
根據(jù)指令 指令 δ(q,0)=(q,0,R)\rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R) , 當前狀態(tài) q\rm qq , 當前指向字符 0\rm 00 , 輸出內容是 q,0,R\rm q, 0, Rq,0,R ,
即 狀態(tài)變?yōu)?q\rm qq , 讀頭指向的字符變?yōu)?0\rm 00 , 向右移動一個字符 ;
如下圖 :
此時繼續(xù) 根據(jù)指令 指令 δ(q,0)=(q,0,R)\rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R) , 當前狀態(tài) q\rm qq , 當前指向字符 0\rm 00 , 輸出內容是 q,0,R\rm q, 0, Rq,0,R ,
即 狀態(tài)變?yōu)?q\rm qq , 讀頭指向的字符變?yōu)?0\rm 00 , 向右移動一個字符 ;
如下圖 :
此時繼續(xù) 根據(jù)指令 指令 δ(q,B)=(q,1,L)\rm \delta (q, B) = (q, 1, L)δ(q,B)=(q,1,L) , 當前狀態(tài) q\rm qq , 當前指向字符 B\rm BB , 輸出內容是 q,1,L\rm q, 1, Lq,1,L ,
即 狀態(tài)變?yōu)?q\rm qq , 讀頭指向的字符變?yōu)?1\rm 11 , 向左移動一個字符 ;
如下圖 :
此時繼續(xù) 根據(jù)指令 指令 δ(q,0)=(q,0,R)\rm \delta (q, 0) = (q, 0, R)δ(q,0)=(q,0,R) , 當前狀態(tài) q\rm qq , 當前指向字符 0\rm 00 , 輸出內容是 q,0,R\rm q, 0, Rq,0,R ,
即 狀態(tài)變?yōu)?q\rm qq , 讀頭指向的字符變?yōu)?0\rm 00 , 向右移動一個字符 ;
如下圖 :
此時繼續(xù) 根據(jù)指令 指令 δ(q,1)=(f,0,R)\rm \delta (q, 1) = (f, 0, R)δ(q,1)=(f,0,R) , 當前狀態(tài) q\rm qq , 當前指向字符 1\rm 11 , 輸出內容是 f,0,R\rm f, 0, Rf,0,R ,
即 狀態(tài)變?yōu)?f\rm ff , 讀頭指向的字符變?yōu)?0\rm 00 , 向右移動一個字符 ;
此時的狀態(tài) f\rm ff 是接受狀態(tài) , 自動機停止運行 ;
如下圖 :
圖靈機 與 自動機 接受的條件是不同的 ;
圖靈機計算過程中 , 一旦到達接受狀態(tài) , 立刻停機 , 不再繼續(xù)進行計算 ; 并且稱該圖靈機是可接受的 ;
自動機即使到達接受狀態(tài) , 也要把自動機讀取的字符讀取完畢 , 才停止計算 ; 然后在查看最終的狀態(tài)是否是接受狀態(tài) ;
總結
以上是生活随笔為你收集整理的【计算理论】图灵机 ( 图灵机示例 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 爬取链家网北京租房信息
- 下一篇: yoyo