[英]Turing Machine Design
我最近遇到以下問題:
給出一個圖靈機的圖靈機圖,該圖靈機在輸入字符串
x ∈ {0, 1}∗
停止(接受),其頭在磁帶的左端,其中包含字符串x′ ∈ {0, 1}∗
。左端(否則為空白),其中x'是按字典順序排列的x的后繼字符串; 即序列ε, 0, 1, 00, 01, 10, 11, 000, . . .
的下一個字符串ε, 0, 1, 00, 01, 10, 11, 000, . . .
ε, 0, 1, 00, 01, 10, 11, 000, . . .
其中按長度增加的順序列出字符串,並以相應的整數值打破領帶。 (簡要記錄您的TM。)
對於如何開始為其設計合適的解決方案,我感到困惑。 首先設計這台機器,然后再設計圖靈機器,我是否可以得到一些建議?
圖靈機
首先,您需要了解什么是圖靈機,而我假設您是在談論通用圖靈機 。 這是由計算機科學教父Alan Turing創建的概念機。
機器由一些組件組成。 首先,包含輸入的無限磁帶。 就像是..
1-0-1-1-1-1-0-1-0-1-0
然后是一組規則
if 1 then 0
if 0 then 1
因此,按照規則,當機器達到1
,輸出為0
。 我們將讀取頭設置為值時定義機器命中值。 讀取頭就像翻唱機中的當前位置。 所以它會去..
1-0-1-1
^------------Current head.
然后下一次迭代:
1-0-1-1
^----------Current Head
這台機器實際上是在模擬按位NOT
功能。 您還可以在圖靈機中設置狀態,例如:
if 1 then enter state 1
if 0 then enter state 0
沒關系吧? 突然出現示例,現在您可以執行以下操作:
1. if 1 and in state 1 output 1 and enter state 0
2. if 1 and in state 0 output 0 and enter state 1
3. if 0 and in state 0 output 1 and enter state 1
4. if 0 and in state 1 output 0 and enter state 0
我們將狀態定義為默認狀態。 在此示例中,我們將其稱為state 0
。 因此,當機器啟動時,它會看到1。好吧,我處於state 0
而我剛得到1
所以我將執行規則2
。 輸出0
並進入state 1
。 下一個數字是0
。 好吧,我處於state 1
,所以我將規則編號為4
。 看到這是怎么回事? 通過添加狀態,您可以真正實現自己的目標。
現在,通用圖靈機就是所謂的Turing Complete 。 這意味着它可以計算任何可計算的序列。 包括,為您分配的規格!
您的作業
因此,讓我們在圖靈機的上下文中查看您的任務。
機器的目的是打印出來。
0 1 00 01 11 000 001 011 111
因此,我們知道我們需要維持一個狀態。 我們也知道,國家需要變得越來越深。 因此,如果用戶輸入000
,則需要知道要輸出三個字符。
就家庭作業幫助而言,恐怕我應該以負責任的態度給您。 對圖靈機的一個很好的理解,再加上對您需要做的事情的理解,應該會導致您開始研究解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.