[英]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
。 標記它。
1
,請轉到步驟7。 0
。 標記它。
0
,請轉到步驟9。 0
。 標記它。
0
,請轉到步驟9。 0
。
0
。 停。 1
。 停。 這適用於任何輸入大小。 直觀地,我們正在尋找輸入中每1
2 0
s,請確保0
位是1
位的兩倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.