Computing--图灵机
Computing--狀態機和圖靈機
- Computing--圖靈機
- 什么是圖靈機?
- Input and Tape Alphabet
- Accepting and Rejecting States
- 設計圖靈機
- 實例1
- 實例2
- 實例3
關于狀態機,請點擊鏈接: https://blog.csdn.net/qq_46041930/article/details/107733400.
Computing–圖靈機
什么是圖靈機?
圖靈機是最小的抽象模型。事實上,圖靈機非常類似于人類的大腦,擁有計算功能和存儲功能。
圖靈機由三部分組成:
實際上對于有限狀態機而言,狀態數是有限的,也就是說有限狀態機由于狀態數有限而無法計算無限長的序列,或者說有限狀態機沒有辦法存儲大量的狀態數。雖然它具備計算能力,但是卻沒有足夠的存儲空間。
磁帶相對于有限狀態機而言是一個外部的存儲設備,用來記錄有限狀態機的輸入、輸出和空間結果。磁帶是一個任意長的條狀帶,而且它可以分成一個個小的區域,每一個小的區域中存儲的字符都來自于有限狀態機的字符集。
磁頭指向磁帶中的一個個小的區域,然后從這當中讀入字符,再重新向這個區域中寫入新的字符,最后磁頭選擇左移或者右移到下一個小的區域。
實際上圖靈機是現代計算機的雛形了,這里的磁帶就是CPU中的內存,小的區域就是內存中的一個個內存單元,tape head就是用來尋址的CS:IP(指令計數器)。
Input and Tape Alphabet
圖靈機有兩個字符集,一個是輸入的字符集,另一個是磁帶中的字符集。初始時圖靈機中的磁帶是一串輸入和無限多的空格,同時磁頭指向第一個輸入字符所在的區域。
Accepting and Rejecting States
圖靈機開始工作后會一直進行,除非進入停止狀態,因此存在圖靈機一直處于無限循環當中。
設計圖靈機
實例1
設計一個圖靈機,輸入字符集為 Σ\SigmaΣ={0,1}\{0,1\}{0,1},功能為:判斷輸入的序列是否為L={0n1n∣n?N}\{0^n1^n|n\epsilon N\}{0n1n∣n?N}。即序列是否為n個0與n個1拼接在一起?
solution:如圖所示,從初始位置開始判斷,若該位為1則小塊區域重寫成空格,磁頭右移一位且進入reject state;若為0則重寫成空格,磁頭右移一位之后再一直右移走到序列的最后(序列最后的空格前一位判斷是否為1),若為1則重寫成空格,以此類推序列兩頭對稱的比較0和1的個數是否相等。直到最后序列若全部重寫成空格(說明0和1的個數對等)則進入accept state,否則進入reject state。
實例2
設計一個圖靈機,統計序列中字母A的個數,并將個數轉換成二進制數顯示
solution:
實際上就是用二進制數來表示字母A的個數,每一輪去掃描序列。每輪掃描之后都在初始位置前一位填上一位二進制數。如果掃描到A的個數為偶數個,則這個一位二進制數填0,奇數個填1。 同時掃描的時候如果當前位置到初始位置的A為偶數就將該位置的A替換成X。換言之,這不就相當于是在除2取余嗎?
實例3
設計一個圖靈機,判斷序列中的0和1的個數是否相等?
!注意啦!這個題目和實例1就有所不同了,為啥呢?這是因為這個不要求序列是有序的0和1排列了,只要序列中0和1的個數相等就ok了。
solution:那么實際上我依然還是對稱的去匹配0和1,怎么理解呢?
就是說我從序列最左邊位置開始,每次找到一個0或者1,我就把這個數替換成x,然后接著立馬回到初始位置從頭掃描去找到1或者0。這樣0和1就這樣一個個匹配在一塊然后被替換成x了。所以最后序列就成了兩種情況,要么整個序列同時都變成x,那就說明0和1的個數相等了;要么序列中還有多余的0或者1,那就說明0和1的個數不等了。
~啦啦啦啦,說到這里大家明白了么,有啥問題留言哈,寫到這里也不容易,大家給個關注吧
總結
以上是生活随笔為你收集整理的Computing--图灵机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息基础---LDPCcodes随机矩阵
- 下一篇: token、cookie是什么