簡體   English   中英

圖靈機算法計算0並寫出二進制數量

[英]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。

  1. 向右移動直到達到#結束,保持遇到的0的奇偶校驗(最初為0,然后為1,然后為0,......)。 替換第一0每對具有的- -讀取被忽略,不會更改奇偶校驗。

  2. 將奇偶校驗寫入輸出磁帶並向左移動(按順序寫入位)

  3. 將輸入頭返回到左邊# ,然后轉到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.

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