簡體   English   中英

如何正式描述用於圖靈機的算法?

[英]how to formally described this algorithm for turing machine?

警告 :這項任務是由我的教授完成的,他是80歲,而沒人理解他有時想要的東西,我不希望對這個問題有更多的標准方法,不僅是因為這個問題很困難,而且因為我的教授很老,學校前蘇聯瘋狂的家伙;)(他喜歡使簡單的事情變得復雜,只是為了解釋為什么將其發布在這里)

該任務是純粹的理論任務,但我不知道如何用單詞“問題”來形式化它:

輸入上給出了9位二進制代碼,如果值為“ 1”的位數比值為“ 0”的位數少兩倍,則必須在輸出中打印“ 0”,如果此條件為假,則必須在輸出中打印“ 1”。

我在描述中建議的是先引入一個計數器,然后對具有值1的位進行計數,然后根據該計數器進行輸出,但是我被稱為白痴,並且被告知沒有計數器和我選擇最困難的方式。 有人知道確定輸出什么的更好方法嗎?

在此先感謝您,如果描述看起來很混亂,請多謝

當TM讀取輸入位時,狀態號必須捕獲從0到9的可見位數,以便我們可以識別到結束的時間以及看到的1位數,相關情況是0、1、2、3和> = 4。

編碼所有相關可能性所需的狀態少於10 * 5 = 50。 當機器進入指示已經看到9個輸入位的狀態之一時,如果它指示已經看到3個1,則寫入0,否則,寫入1。

請注意,我們不需要使用磁帶進行存儲-輸入語言是常規的,因此可以使用有限狀態機確定它,並且無限制存儲是不必要的。

盡管Matt是正確的,但您可以使用存儲將這個問題推廣到任意輸入大小。

  1. 轉到磁帶的開頭
  2. 前進尋找沒有標記的1 標記它。
    • 如果找不到未標記的1 ,請轉到步驟7。
  3. 回到磁帶的開頭
  4. 尋找未標記的0 標記它。
    • 如果找不到未標記的0 ,請轉到步驟9。
  5. 尋找另一個未標記的0 標記它。
    • 如果找不到未標記的0 ,請轉到步驟9。
  6. 轉到步驟1
  7. 轉到輸入的開頭。
  8. 尋找未標記的0
    • 如果找不到,則輸出0 停。
  9. 輸出1 停。

這適用於任何輸入大小。 直觀地,我們正在尋找輸入中每1 2 0 s,請確保0位是1位的兩倍。

暫無
暫無

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

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