[英]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 上使用以下算法来描述图灵机:
读取当前符号。 如果是#(即x为空字符串),go到第8步。
读取当前符号。 如果不在 {a, b, c, d, e, f} 中,则拒绝。 否则,对角色执行 3 的凯撒移位。 让这个新的移位字符为s
。 用 $ 替换当前符号。
在磁带上向右移动,直到我们读到 # 符号。 如果我们在这发生之前读取了一个空格,则拒绝。
在磁带上向右移动磁头,直到我们读到一个不是 # 的符号。
读取当前符号。 如果此空格为空白,则拒绝。 如果此符号与步骤 2 中移位的字符s
不匹配,则拒绝。 否则,将当前符号替换为 #。
将头部向左移动,直到我们读到一个 $ 字符。 然后将头部向右移动一格。
读取当前符号。 如果是#,go 执行步骤 8。否则,go 执行步骤 2。
在磁带上向右移动磁头,直到我们读取到一个不是 # 的字符。
如果此空格不是空白,则拒绝。 否则,接受。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.