[英]Turing machine algorithm to count 0's and write how many there were in binary
我碰巧需要一個用於圖靈機的算法,該算法讀取0的字符串,然后在磁帶上寫入二進制文件中有多少。
我意識到在實踐中,機器實際上並不會計算0,但我很難知道如何做到這一點。
首先,我需要用X或其他東西來標記二進制數開始的位置,然后只為前0寫一個1,如果最低有效位為0則為后面的每個0寫一個它變為a 1但是如果它是1? 也許把它變成0並繼續左轉將所有的1都變成0直到我找到0或空白變為1? 然后再說一次,在這種情況下,無論LSB是什么都是一樣的,因為我只做同樣的事情,只有0才是第一個位置......
嗯......橡皮鴨......
假設輸入磁帶是#00000000000#
,其中初始讀取位置是第一個0。
向右移動直到達到#
結束,保持遇到的0
的奇偶校驗(最初為0,然后為1,然后為0,......)。 替換第一0
每對具有的-
-
讀取被忽略,不會更改奇偶校驗。
將奇偶校驗寫入輸出磁帶並向左移動(按順序寫入位)
將輸入頭返回到左邊#
,然后轉到1。
在第一遍結束時,輸入磁帶將是#-0-0-0-0-0-#
並且輸出為1
。
在第二遍結束時: #---0---0---#
和11
。
在第三遍結束時: #-------0---#
和011
。
在第四遍結束時: #-----------#
和1011
。
編輯:我向貝恩維爾承認。
我弄清楚我昨晚要做什么,它需要兩個獨立的圖靈機,這可能是作弊。
第一台機器的磁頭將在輸入磁帶上運行,如果掃描0,則只需啟動第二台機器。
第二台機器只是一台添加機器,並且會在當前數字上加1,這很容易做到,它只需要很長時間的添加,你可以創建一個狀態,說明有一個余數並繼續向左移動直到你達到零(並用1替換)或找到一個空白點(並創建一個1)。
貝恩維爾贏得了我的投票。
看看這個圖靈機模擬器及其二進制計數樣本程序:
Uber圖靈機使您能夠對圖靈機進行編程 - 圖靈機是一種通用的理論設備,可以適用於模擬任何計算機算法的邏輯。 借助該軟件,您可以創建新的算法,以及通過方便的可視化IDE打開和更改已經准備好的編輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.