簡體   English   中英

圖靈機添加 2 位二進制數

[英]Turing machine that adds 2-digit binary numbers

嘿,正如標題所說,我正在嘗試創建一個添加 2 個 2 位二進制數的圖靈機。

到目前為止,我設法使它適用於 10 + 01 的情況,但我不能使它適用於所有數字組合。 有人可以幫忙嗎? 到目前為止,這是我的代碼。

輸入格式為 X NUM1 NUM2 X NUM3 NUM4 (x10x01):

State Read Write Direction NextState
0 X X R 0
0 1 1 R 0
0 0 1 L 1
1 X 0 L 1
1 0 0 L 1
1 1 0 L 2
2 X 0 R 2
2 0 0 R 2
2 1 1 R 0
3 _ _ N HALT

您 TM 執行以下操作:

  • State 0:向右移動直到我們讀到 0,然后寫入 1,向左移動 go 到 state 1。
  • State 1:向左移動,直到我們讀到 1,然后寫入 0,向右移動,go 到 state 2。
  • State 2:向右移動,直到我們讀到 1,向右移動和 go 到 state 0。
  • State 3(從未達到):暫停

這個邏輯似乎沒有添加任何東西。 在輸入x10x01上,它將:

  1. 磁帶: x10x01 ,state 0,頭在 position 1 ( x )。 向右移動直到我們讀取 0,寫入 1,向左移動,然后 go 到 state 1。
  2. 膠帶: x11x01 ,state 1,頭在 position 2 ( 1 )。 向左移動直到我們讀到 1,然后寫入 0,向右移動,然后 go 到 state 2。
  3. 膠帶: x01x01 ,state 2,頭在 position 3 ( 1 )。 向右移動直到我們讀到 1,向右移動和 go 到 state 0。
  4. 磁帶: x01x01 ,state 0,頭在 position 4 ( x )。
  5. 膠帶: x01x11 ,state 1,頭在 position 4 ( x )。
  6. 膠帶: x00x11 ,state 2,頭在 position 4 ( x )。
  7. 磁帶: x00x11 ,state 0,頭在 position 6( 1 )。 此時機器將永遠循環或崩潰,具體取決於您的實現細節,因為它將讀取未初始化的磁帶。

雖然看起來機器添加了0110以獲得11 ,但實際上它只是隨意地將1 s 和0 s 左右移動。

實際添加的 TM 需要做的事情比你的機器做的要多。 具體來說:

  • 找到兩個操作數的最低有效未標記位,
  • 標記他們,
  • 根據它們的值,確定一位結果和一位進位
  • 寫入結果,並將進位應用於下一個最低有效的未標記位。
  • 重復直到沒有更多的數字。

由於您只擔心兩位數字,因此您可以跳過標記數字,而只需使用其他狀態來跟蹤您正在使用的位。

您也可以對所有可能的輸入進行硬編碼(只有 16 個),但這可能不符合您分配的作業的精神。

例如,要實際添加兩個一位數,您可能需要這樣的算法:

  • State 0:向右移動,直到我們讀到一個數字。 寫0.如果數字為0,則為go至Z9ED39E2EA2EA931586B6A985A6942EF573EZ1。
  • State 1:向右移動,直到我們讀到一個數字。 如果數字為0,則為go至Z9ED39E2EA2EA931586B6B6942A6942EF573EZ3。
  • State 2:向右移動,直到我們讀到一個數字。 If the digit is 0, go to state 4. If the digit is 5, go to state 5.
  • State 3:寫 0,停止
  • State 4:寫 1,停止
  • State 5:寫入 1,向右移動 go 到 state 3。

在此示例中,狀態 1 和 2 跟蹤第一個數字是 0 還是 1。狀態 3、4 和 5 將數字相加。 State 3 是當兩者都是 0。State 4 是當一個是 1。State 5 是當兩者都是 1 時。

對應的 TM 可能如下所示:

State Read Write Direction NewState
0 X X R 0
0 0 0 R 1
0 1 0 R 2
1 X X R 1
1 0 0 N 3
1 1 1 N 4
2 X X R 2
2 0 0 N 4
2 1 1 N 5
3 _ 0 N Halt
4 _ 1 N Halt
5 _ 1 R 3

我將由您來決定如何將這個概念的兩次迭代連接在一起以添加兩個 2 位數字。

暫無
暫無

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

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