日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件理论基础学习笔记——图灵机

發布時間:2024/3/12 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件理论基础学习笔记——图灵机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 圖靈機(turing machine)
  • 例子
  • 格局(configuration)
  • Turing's Thesis


圖靈機(turing machine)

學過計算機的人總歸會多或少得聽說過圖靈機這種東西,但是圖靈機究竟是什么呢?圖靈機其實也是自動機的一種,并且圖靈機會在狀態轉換過程中操作一個無限的tape

tape的樣子如下圖所示,tape里面包含字符,其中后面那個兩豎一橫的符號是blank的意思,它是一個特殊的字符,用來填滿無限的tape

tape head指向當前tape上的字符

tape上的操作

  • 可以對tape head指向的字符進行讀/掃描操作
  • 可以對tape head指向的字符進行寫/更新操作
  • 將tape head左移一格
  • 將tape head右移一格

操作規則:
1、
每一步操作都要執行一下操作

  • 讀取當前的字符
  • 更新當前格子中的字符
  • 左移一格或者右移一格

如果當前tape指向最左邊的格子,那么執行左移操作將不會發生移動

如果你不想更改當前格的字符,那么執行更新操作的時候只要讓它更新為和當前字符一樣即可

2、
操作行為類似于有限狀態機

有初始狀態

終止狀態有兩種:

  • accept state
  • reject state

計算結束后狀態會變成下列三種中的一種:

  • 終止并且接受(accept)
  • 終止并且拒絕(reject)
  • 循環(loop,就是說沒有終止)

下面是圖靈機的正式定義,Turing Machine可以表示為一個七元組(S,Σ,Γ,δ,s0,b,F)(S,Σ,Γ,δ,s_{0},b,F)(S,Σ,Γ,δ,s0?,b,F)

  • S是一組狀態的集合
  • ΣΣΣ是輸入字母表
  • ΓΓΓ是tape的字母表
  • δδδ是轉換函數
  • s0s_{0}s0?是初始狀態
  • bbb是空符號
  • FFF是終止狀態的集合(包括accept或reject)

轉換函數 δδδ定義為:
S×Σ→Γ×(R/L)×SS×Σ\rightarrow Γ×(R/L)×S S×ΣΓ×(R/L)×S

這里的(R/L)就是執行左移或者右移操作,R就是向右(right)移動,L就是向左(left)移動

以下面這張圖為例,在圖上0→1,R0\rightarrow 1,R01,R代表的含義是,在狀態A時接收字符0,那么將會轉變為狀態B,并且在當前磁頭位置寫下1這個字符,然后磁頭向右移動一格

例子

接下來我們通過構建一個圖靈機,并且實際運算一下,看看圖靈機究竟是如何進行計算的

我們要構建圖靈機,用于計算n+1函數,下圖的初始狀態是q1,結束狀態是qa


假設輸入的數字為1011(二進制),初始時tape head指向第一個值

第一步讀取一個1,自動機會通過1→1,R1\rightarrow 1,R11R這個轉換,轉換后仍然變成q1q_{1}q1?,在第一格寫入1,并將tape head右移一格

接下來的步驟和上面一樣分別讀取0,1,1仍然轉變為q1q_{1}q1?,并且寫上和原來相同的數字

這時候的tape head指向了空字符,按照狀態機的轉換q1q_{1}q1?只能轉變為q2q_{2}q2?,要注意的是,tape head會往左移動一格

我們看看q2q_{2}q2?這邊的轉換,碰到1就寫入0,并且向左移動tape head,因為按照二進制加法的邏輯,最后一位如果是1,那么+1后變成0,并且會進一位,如果最后一位是0,那么就直接變成1就行了,故此有了圖上q2q_{2}q2?的轉換


再執行一次上面的操作

這次讀取到了0,所以狀態q2q_{2}q2?將會轉變為q3q_{3}q3?,并且將0覆寫為1,然后向右移動一格

來到了q3q_{3}q3?狀態,在這個狀態下,只要單純向右移動即可,因為寫入的數字是相同的


終于到了最后一步啦,看到讀取空字符,然后q3q_{3}q3?狀態就會轉變為qaq_{a}qa?的接受狀態,因為到達了終止狀態,滿足了圖靈機的終止條件,所以圖靈機運行完畢

我們來看看,我們輸入的數字是1011,然后輸出的數字是1100,所以我們實現的這個圖靈機完成了n+1這個函數的操作步驟

格局(configuration)

configuration翻譯成了格局,但這個東西其實就是一個圖靈機在當前狀態下的快照,由當前狀態下tape中的字符,tape head指向的位置,以及當前自動機的狀態這三個元素組成,可以簡單的用如下圖所示圖靈機的格局

用字符串表示格局的話,是類似于下面這樣的:

?\triangleright? 1100q1q_{1}q1? 11001

?\triangleright?符號代表開始位置,里面的q1q_{1}q1?代表當前的狀態,里面的字符代表的tape中的字符,tape head指向的是狀態右邊的第一個字符,所以在這個例子里面,tape head指向的是1

Turing’s Thesis

Turing’s Thesis
1、任何能被數字計算機執行的事情,Turing Machine同樣也能夠完成(從這里可以看出Turing Machine能力相當強大)
2、如果你能寫出一個算法來解決某個問題,那么同樣可以寫出一個圖靈機程序來解決相同的問題

總結

以上是生活随笔為你收集整理的软件理论基础学习笔记——图灵机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。