Answers:
这两个子问题的答案是相同的:通过使用磁带来存储必要的数据。我们可以假设要模拟的机器的状态集和字母是自然数的子集(“状态1”,“状态2”,“状态3”等)。即使只有两个非空白字符,通用机器也可以将所有这些整数表示为二进制字符串。
但是请注意,通用机具有固定数量的状态,这使得转换函数的计算有些棘手。我们想要做的是编写一些指令,以实现一个大的switch语句,其形式为:“如果状态为 且头部下方的字符为 x,则移至状态s ′,然后 写入字符 x ′并移至朝方向d前进 。” 所以-我认为这可能是您问题的根源-如果我们在通用机中甚至没有足够的状态来存储转换函数的输入,那么如何计算转换函数?
一种方法是将转换函数存储为二叉树。假设所有模拟的机器都有 状态和2个ℓ 磁带符号。将转换函数存储为深度为q + ℓ的二叉树, 其中在第一个q 级别上,根据模拟状态的下一个位是1还是零,然后是下一个ℓ 级别,请向左或向右移动但是对于模拟磁带字符的连续位。现在,您的通用机器可以在磁带上来回移动,检查状态/字符的下一位,记住该位处于其自己的状态,移回树,在正确的节点上放置标记,依此类推。
如果让通用机具有多个磁带,这会变得容易一些,但是仍然必须证明多带机等效于单个磁带机。