模擬Turing機的執行過程

2021-09-13 03:48:15 字數 1986 閱讀 3257

對於任意給定的一台turing機和任意給定的字串w ( w不含空格),程式設計模擬此turing機的執行過程,要求輸出從開始執行起的每一步驟的結果。

圖靈機有一條無限長的紙帶,紙帶分成了乙個乙個的小方格,每個方格有不同的狀態。有乙個機器頭在紙帶上移來移去。機器頭有一組內部狀態,還有一些固定的程式。在每個時刻,機器頭都要從當前紙帶上讀入乙個方格資訊,然後結合自己的內部狀態查詢程式表,根據程式輸出資訊到紙帶方格上,並轉換自己的內部狀態,然後進行移動。用程式模擬圖靈機的過程,輸入一組字串,並將內態儲存起來,按照圖靈機的基本指令來進行操作。本次模擬xnx2圖靈機(數字乘以2)。

1.定義的陣列長度並非輸入的字串原來的長度,而是多加了兩位。

xnx2圖靈機在停機之前會再往後挪兩位數字,超出了字串的長度。如果不加長陣列的長度,在110->01stop到這步就會出現以下問題問題,超出了陣列範圍。

2.在continute語句前還新增了輸出的語句。是為了輸出每一步的變換結果,展現整個過程。

1.流程圖

2.具體**

本次輸入的字串為01010110,實際上為十進位制數3。

public class hi ;//將輸入的一串由1和0的數字裝  

//入字元陣列

string n="0";//用n儲存內態

//迴圈進行判斷

while (flag==1) {

if(n=="0")

{if(str[i]=="0")

{i++;

for(j=0;j1.除錯過程:

2.結果截圖:

最後結果為0010100110,實際上為十進位制數字6。

世界上是否所有的數學問題都有明確的答案?如果有明確的答案,是否可以通過有限步驟的計算得到答案?對於那些有可能在有限步驟計算出來的學習問題,是否有一種假想的機械,讓它不斷執行,最後機器停下來的時候,那個數學答案就計算出來了?確定了這三個問題之後,圖靈機就是圖靈設計出來的這樣的乙個機器,嚴格來講是一種數學模型、計算理論模型。

圖靈機由無限長的紙帶,讀寫頭,內部狀態儲存器,控制指令組成四個部分。讀寫頭讀出當前格仔的數字或符號。根據當前狀態和讀到的字母或符號找到對應的控制指令。根據控制指令,執行以下三個動作:

1. 讀寫頭在格仔上擦除或寫入乙個數字或符號

2. 變更狀態到乙個新狀態

3. 讀寫頭向左或向右移動一格。

而最後無法停止下來的被稱為假圖靈機

控制指令是ab->cde形式。a為內態,b輸入的狀態,c為更改後的內態,d為輸出的狀態,而e是向左或向右移,或者stop停止。

圖靈機的操作依賴於兩個狀態,即內態和輸入的數字。所以**中分別用了乙個陣列和乙個字串型別名來進行儲存。內態的初始狀態為0。每讀取乙個資料便開始乙個迴圈,迴圈裡是圖靈機的操作指令。

模擬ATM機取款的過程

1 定義三個能儲存5個整形數的陣列,乙個用於儲存5個人的卡號,乙個用於儲存對應卡號的密碼,乙個用於儲存對應的賬戶餘額。2 判斷輸入的卡號是否在陣列中。3 如果在陣列中就讓輸入密碼,判斷是否和卡號對應的密碼匹配。4 判斷密碼,只允許輸入3次錯誤的密碼。輸入錯誤應該提示還剩下的輸入次數,3次都輸入錯誤提...

Turing機UN 1的C語言實現

對於任意給定的字串w w不含空格 程式設計模擬turing機un 1的執行過程,要求輸出從開始執行起的每一步驟的結果。turing機un 1的定義 00 00r 01 11r 10 01stop 11 11r include include include include int main if f...

模擬燒茶的過程

模擬燒茶的過程 1 燒水 2 需要茶葉的時候發現沒茶葉,叫eric去買 沒有茶葉,需要買 3 需要杯子的時候發現沒杯子,叫meten去買 沒有杯子,需要買 4 放茶葉 3 倒水 public class execdemo2 共享資料tea author administrator class tea...