[英]Turing machine with one state that converts binary to decimal
聽說有一台state的圖靈機應該可以把二進制數轉換成十進制數。 我試圖弄清楚這怎么可能。 我目前非常不成功地強制我的方式獲得結果。 如何以更優雅的方式綜合它?
二進制數以相反的順序給出,例如。 25 是 10011 而不是 11001。我認為這更容易。 不確定它是否也是必需品。 該數字由另外兩個符號封裝在末尾。 此外,0 和 1 在開頭表示為 T 和 F -->.......TFFTTXXXXX。 生成的十進制數應如下所示:.....25-----XXXXX。 此外,停止 state 不算作真正的 state。 據我了解,這是制定這樣一個問題的必要條件。
研究單態圖靈機我發現了這篇論文。 我看到有一些進位和一個計數器位,但我無法解釋自己如何幫助將十進制數增加到 10,然后進行下一位的進位。 給定一個 state,我正在考慮每個十進制數字至少 10 個不同的術語,以及更多用於中斷、進位、計數器等的符號。因此,我的單個 state 的定義變得很長。 這里有一個例子來說明我的意思(顯然是錯誤的):
state trigger --> (output, state, shift):
s, 1 --> (2,s,>)
s, 2 --> (3,s,>)
..., s,
s, 8 --> (9,s,>)
s, 9 --> (c,s,>)
只有一個 state,您必須在計數位中編碼信息。 訣竅是你倒數二進制數並數數十進制數。
假設我們以......[T]FFTTXXXXX
,根據您的示例,其中[]
表示寫入后我們當前的頭部 position。 Go 向右並用F
翻轉T
以減少二進制。 然后,覆蓋遇到的(以及任何未來) .
用1
。 您現在應該擁有以下內容:
.....[.]FFFTTXXXXX
.....[1]FFFTTXXXXX
Go 回到右邊。 現在,我們遇到了一個問題:我們需要將 go 越過F
s,將它們翻轉到T
s,go 到第一個T
然后再返回。 為了不翻轉我們剛剛傳遞的數字,我們將它們替換為-
之類的占位符,從而產生以下序列:
.....1[F]FFTTXXXXX
.....1-[F]FTTXXXXX
.....1--[F]TTXXXXX
.....1---[T]TXXXXX
.....1--[-]FTXXXXX
現在,go 回來並替換占位符:
.....1-[-]TFTXXXXX
.....1[-]TTFTXXXXX
.....[1]TTTFTXXXXX
現在只需將1
增加到2
: .....2[T]TTFTXXXXX
。
Go 再次向右並重復此過程:
.....[2]FTTFTXXXXX
.....3[F]TTFTXXXXX
.....3-[T]TFTXXXXX
.....3[-]FTFTXXXXX
.....[3]TFTFTXXXXX
.....4[T]FTFTXXXXX
X
處停止您將遇到的唯一問題是您需要以某種方式用10
覆蓋十進制9
。 為此,將9
替換為占位符,向左移動,從.
到1
,向右返回並用0
替換占位符。 不要忘記添加從0
到1
的轉換。
順便說一句,這似乎是我參加的某個講座的家庭作業;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.