簡體   English   中英

圖靈機一台 state 將二進制轉換為十進制

[英]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替換占位符。 不要忘記添加從01的轉換。


順便說一句,這似乎是我參加的某個講座的家庭作業;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM