簡體   English   中英

圖靈機和密碼

[英]Turing Machine and Ciphers

我正在研究圖靈機,並試圖弄清楚如何使用圖靈機描述一些基本的密碼算法(例如凱撒密碼)。

考慮:

F={x#y|x,y∈{a,b,c,d,e,f}∗,y is equal to x with a Caesar shift of 3}.

我如何描述決定 F 的圖靈機算法?

免責聲明:為了清晰和簡潔,以下算法對原始圖靈機進行了一些簡化/變化。 最值得注意的是,我們隱式地描述了圖靈機的狀態,例如在步驟 2 中,當我們說我們將移位的符號跟蹤為字符s ,然后將其與我們在步驟 5 中讀取的符號匹配,我們真正的意思是我們轉換到圖靈機的特定 state 將轉換到其他特定狀態,如步驟 3-4 所述移動頭部,然后如果我們最終讀取的符號不是移位字符s ,則將拒絕。

我們可以在輸入字符串 x#y 上使用以下算法來描述圖靈機:

  1. 讀取當前符號。 如果是#(即x為空字符串),go到第8步。

  2. 讀取當前符號。 如果不在 {a, b, c, d, e, f} 中,則拒絕。 否則,對角色執行 3 的凱撒移位。 讓這個新的移位字符為s 用 $ 替換當前符號。

  3. 在磁帶上向右移動,直到我們讀到 # 符號。 如果我們在這發生之前讀取了一個空格,則拒絕。

  4. 在磁帶上向右移動磁頭,直到我們讀到一個不是 # 的符號。

  5. 讀取當前符號。 如果此空格為空白,則拒絕。 如果此符號與步驟 2 中移位的字符s不匹配,則拒絕。 否則,將當前符號替換為 #。

  6. 將頭部向左移動,直到我們讀到一個 $ 字符。 然后將頭部向右移動一格。

  7. 讀取當前符號。 如果是#,go 執行步驟 8。否則,go 執行步驟 2。

  8. 在磁帶上向右移動磁頭,直到我們讀取到一個不是 # 的字符。

  9. 如果此空格不是空白,則拒絕。 否則,接受。

暫無
暫無

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

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