構建用於減法的圖靈機


圖靈機是一個七元組

(Q, Σ,Γ, δ,q0,qacc, qrej)

其中,

  • Q 是有限數量的狀態
  • Σ 是輸入字母表,不包含空白符號 t;
  • Γ 是帶字母表,其中 t ε Γ 且 Σ ⊆ Γ;
  • δ: (Q × Γ) → (Q × Γ × {L, R}) 是轉移函式;
  • q0 ε Q 是起始狀態;
  • qacc ε Q 是接受狀態;
  • qrej ε Q 是拒絕狀態,其中 qrej ≠qacc。

問題

構建一個用於兩個一元整數減法的圖靈機 (TM)。

解決方案

兩個一元整數的減法

3-2=1

在圖靈機中,3 表示 - 111

       2 表示:11

令 'M' 為用於分隔兩個整數的符號

B111M11B

這裡 B= 空白

M= 用於分隔兩個整數的符號

演算法

按照以下分步演算法構建用於減法的 TM:

步驟 1 - 將兩個一元整數作為輸入。我們從初始狀態 q0 開始。

步驟 2 - 如果我們在字串中找到 1,則轉到相同的狀態,不更改 1 的值,並轉到字串的右側。

步驟 3 - 如果我們找到 m 符號,則忽略此符號,不更改符號,並轉到字串的右側。

步驟 4 - 如果我們在經過 M 符號後找到 1,則將 1 的值更改為 X 並轉到字串的左側。

步驟 5 - 然後經過 M 符號並向左移動,如果我們找到 1,則將 1 的值更改為 X 並向右移動。

步驟 6 - 因此,在符號 (M) 之後,我們將所有 1 的值更改為 X,並且在符號 M 之前將相同數量的 1 更改為 X。

步驟 7 - 應用這些步驟並獲得兩個一元整數減法的圖靈機。

在處理減法時,圖靈機根據使用者提供的輸入考慮三種情況中的任何一種。

如果 'a' 和 'b' 是兩個整數,我們需要考慮:

  • a>b
  • a<b
  • a=b

透過考慮所有三種情況,最終的圖靈機如下所示:

圖解說明

步驟 1 - 將輸入字串視為 110111

即 a=11 且 b=111,根據給定的輸入 a

步驟 2 - 從左到右掃描字串。

步驟 3 - 將 '1' 標記為 'X',然後向右移動。

步驟 4 - 到達 '0' 的右側,並將 '1' 標記為 'X',然後向左移動。

步驟 5 - 到達 '0' 左側的 'X',然後向右移動一步。

步驟 6 - 再次將 '1' 標記為 'X',然後向右移動。

步驟 7 - 到達 '0' 的右側並經過 'X',將 '1' 標記為 'X',然後向左移動。

步驟 8 - 到達 '0' 左側的 'X',然後向右移動一步。

步驟 9 - 如果 'X' 之後存在 '0',則表示 '0' 之前的 '1' 都已完成。

步驟 10 - 經過 '0'、'X',並且還有 '1' 剩餘。也就是說,第二個數字大於第一個數字。

步驟 11 - 然後最終狀態為“a<b”

更新於: 2021年6月15日

9K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.